Herramientas de usuario

Herramientas del sitio


Barra lateral

pc_industrial_ts-7800

PC Industrial TS-7800

Getting Started

Un punto de partida interesante para conocer las caracteristicas, software y recursos de este sistema es ver la información del producto oficial en: http://www.embeddedarm.com/products/board-detail.php?product=TS-7800#

Si estás empezando con el sistema es muy recomendable comenzar “Getting Started” ftp://aguere.eii.us.es/DataSheets/PCIndustrial%20TS-7800//ts-7800-gs-sheet.pdf de la documentación (5 páginas):

  • Como conectarte al sistema (telnet, puerto serie, ip..)
  • Establecer el modo ahorro de energía/calor (333Mhz)
  • Como arrancar a partir de la SD
  • Reestablecer un backup del sistema a partir de la SD


Los datasheets y la documentación de este sbc y sus componentes la tenemos en nuestro
FTP nuestro ftp://conde.eii.us.es/DataSheets/PCIndustrial%20TS-7800/
FTP de la empresa ftp://ftp.embeddedarm.com/
En este ftp se pueden encontrar drivers, ejemplos de código del sbc TS-7800(y otros sbc de la empresa) y perifericos CAN, Zigbee, etc.

El ftp se organiza en las siguientes categorías:

  • sbcs (ARM, x86, ..)
  • pc104 peripherials
  • images (linux kernel, flash images, software base, etc.)

Potencialidades y Retos interesantes

  • Activar los repositorios de Debian.
  • Utilizar la CPLD para algún tipo de sistema de control.
  • Instalar pen usb wifi
  • Considerar parchear el linux-arm con RTAI (en internet hay gente que lo ha hecho)
    https://www.rtai.org/

Experiencias - Iniciándose con el TS-7200

Conectándose por puerto Serie

Típicamente tendremos que utilizar un conversor RS232 a USB. Una ventaja del terminal serie respecto a la conexión por red es que puedes ver como funciona desde el arranque, pudiendo detectar posibles errores en el mismo.

Se necesita utilizar algún programa para comunicarse como si fuera una terminal. Recomiendo putty que es multi-sistema operativo. Además Windows Vista y 7 no traen ya la aplicación HyperTerminal.

La configuración es la siguiente

Serial: COMX or ttyX Speed: 115200 Data bits: 8 Stop bits: 1 Parity: None Flow control: None

Curiosidades puerto serie ts-7800

  • El puerto serie del PC-Industrial está en el puerto de la mini-torre etiquetado como COM1
  • El conector del pc industrial es hembra, cuando habitualmente es macho, por lo tanto hace falta un hembra/hembra.
  • Muchos cables serie rs2-32 que tenemos los hemos modificado para el CAN, estos van en paralelo TX-TX RX-RX por lo que no funcionarán para conectarse en Serie con el PC-Industrial.

Software de Arranque rápido (FASTBOOT)

  • Tipo BusyBoot modificado por Technologic Systems
  • Se puede restaurar añadiendo en la raiz el archivo márca fastboot con el comando touch

Conectándose por Telnet

  • Una vez configurado por primera vez el script de arranque de red el pc industrial arrancará con una IP fija.
  • Para conectarse por telnet recordar que el usuario es root y no tiene contraseña. Por esto es mejor configurar el servidor SSH.

Conectándose por SSH

  • a construir.
  • Puedo ver que en su día cree un usuario geus (del cual he olvidado la password) y su directorio home con el software del CAN, se puede ver como está replicado con el directorio /root por lo que habrá que organizar esto.

Sistema de Archivos y espacio

Se puede ver más en la documentación, pero esto es un resumen de lo que hay en el sistema (sin la SD)

/dev/mtdblock0 - Whole disk block device driver.
/dev/mtdblock1 - First MBR partition (bootloader kernel binary)
/dev/mtdblock2 - Second MBR partition (bootloader initrd)
/dev/mtdblock3 - Third MBR partition (Linux YAFFS2 filesystem)

En teoría el sistema tiene 512 megas: <note>In addition, the 512 MB on-board Flash enables a full Debian distribution to be installed with a complete embedded development environment </note>

<note important>Hay otra serie de cosas que no tengo muy claras como lo que podemos observar en /etc/fstab, en el comando mount y en la carpeta /mnt/</note>

Restaurando la flash tal y como venía de fabrica

Simplemente metemos la tarjeta SD de recuperación, activamos el jumper1 de la placa y tras arrancar desde la SD ejecutar los comandos:
createmtdroot
createmtdboot
(Duran varios minutos)

Consideraciones a personalizar
  • Ponerle contraseña al root
  • Crear un usuario
  • El /etc/resolve
  • Los repositorios
  • Instalar aptitude y sudo

Actualizando repositorios a lenny

La imagen base que trae el sistema no enlaza repositorios correctamente, una técnica interesante es actualizar el repositorio a lenny. En /apt/etc/sources.list

 deb http://http.us.debian.org/debian lenny main contrib non-free

y luego actualizamos el repositorio

 apt-get update

El upgrade parece que no le ha hace mucha gracia, ya iremos viendo si podemos arreglar esto y hacer una imagen base en condiciones. En cualquier caso puede ser útil para instalar algunos paquetes.

Script de arranque personalizado (EN BUSYBOOT)

El sistema busyboot es lo primero que arranca y en él podemos encontrar el script de inicialización del sistema. Pequeñas modificaciones pueden hacerse para que el sistema arranque con ciertas características, como software CAN, servidor ssh, etc. Existe un método para hacer permanente estos cambios en los scripts de arranque, algo así como un comando “save”, creo que está en la documentación del TS-7800 en el ftp.

Este script está basado en el script de arranque original que trae el sistema TS-7800. Sin embargo hay algunas modificaciones interesantes. Responsabilidades extraordinarias de este script de arranque:

  • Establecer el nombre del pcIndustrial.
  • Arrancar la configuración de red (establecer el servidor de nombres, crear la tabla de enroutado u arrancar la interfaz.
  • Arrancar el servidor ssh y el servidor telnet.
#!/bin/sh
# Copyright (c) 2007, Technologic Systems.
# All rights reserved.
#
# Uses initrd as root filesystem and drops to shell-- on exit of serial shell,
# real Linux is booted.  Ethernet is configured as 192.168.0.50 and telnet
# server is run.  If a USB device is present, it is checked for the presence
# of an auto-update script "/tsinit", which is then run.
 
export PATH=/bin:/sbin:/lbin:/mnt/root/bin:/mnt/root/sbin:/mnt/root/usr/bin:/mnt/root/usr/sbin:/mnt/root/usr/local/bin:/mnt/root/usr/local/sbin
export LD_LIBRARY_PATH=/lib:/usr/lib
export CONSOLE=/dev/ttyS0
 
setconsole $CONSOLE
stty -F $CONSOLE ospeed 115200 > /dev/null 2>&1
check-usb-update >/dev/null 2>&1 </dev/null &
 
export BOOTTIME=`mvtime`
 
(
  insmod /ts7800_nand.ko
  insmod /tssdcard.ko
  insmod /tsuart1.ko
  insmod /tsuart7800.ko
 
  mount -t proc none /proc
  mount -t sysfs none /sys
  mount -t tmpfs none /dev
  mkdir /dev/pts /dev/shm
  mount -t devpts none /dev/pts
  mount -t tmpfs none /dev/shm
 
  mdev -s
 
  if [ -e /dev/tssdcardb4 -a -e /mnt/root/notrootfs ]; then
    mount -o rw /dev/tssdcardb4 /mnt/root
    fsck /dev/tssdcardb4
  fi
  if [ -e /dev/mtdblock3 -a -e /mnt/root/notrootfs ]; then
    mount -t yaffs2 -o rw /dev/mtdblock3 /mnt/root
  fi
 
  hostname charlie1
  echo 'nameserver 192.168.0.1'> /etc/resolv.conf
  ifconfig lo 127.0.0.1 up
  route add -net 127.0.0.0 netmask 255.0.0.0 lo
  ifconfig eth0 192.168.0.41 up
  route add default gateway 192.168.0.1 eth0
  /sbin/telnetd
  /etc/init.d/ssh start
 
) > /dev/null 2>&1 &
 
(
  export ENV=/shinit
  exec /bin/cttyhack /bin/sh -i < $CONSOLE > $CONSOLE 2>&1
)
wait
 
if [ -e /mnt/root/sbin/init ]; then
  killall busybox telnetd > /dev/null 2>&1
 
  grep -e '/dev/mtdblock3 /mnt/root' /proc/mounts > /dev/null 2>&1
  if [ "$?" -eq 0 ]; then echo ">> Booting Linux (using onboard Flash)..." > $CONSOLE; fi
  grep -e '/dev/tssdcardb4 /mnt/root' /proc/mounts > /dev/null 2>&1
  if [ "$?" -eq 0 ]; then echo ">> Booting Linux (using SD Card)..." > $CONSOLE; fi
 
  fsck /dev/tssdcardb4 > /dev/null 2>&1
  cd /mnt/root
  pivot_root . ./initrd
  ./bin/mount -n --move ./initrd/sys ./sys
  ./bin/mount -n --move ./initrd/proc ./proc
  exec ./usr/sbin/chroot . ./sbin/init < .$CONSOLE > .$CONSOLE 2>&1
fi

Experiencias - Usando CAN

PINOUT DEL DB9 CAN

Esto es importante principalmente para la experimentación con el osciloscopio y el analizador lógico. Nos ha sido útil para comprobar si el protocolo físico del CAN de la silla es igual al de la placa TS-CAN1

Testeando el software LinCAN

Antes que nada hay que hacer el insmod porque por defecto no arranca. Si el insmod no está realizado el /dev/can0 no estará visible.

 ./bin-utils/sendburst -d/dev/can0 -w1 -b3 -i1

Resultados de las experimentaciones - Utilizando el osciloscopio vemos que los pcs industriales tienen junto a la salida de can COM3 una bobina grande que provoca un error en la señal grave (extrañisimamente 100 V - con minolo). Esa deformación puede ser clave para las comunicaciones (o no), en cualquier caso se puede sacando un db9 con un cable de los que tenemos para conectar a ts-can y alejarlo de la bobina.

Velocidades límites empíricas del módulo TSCAN1

- Aunque el controlador SJA1000 permite frecuencias de hasta 1Mbps sin especificar la cota inferior, empíricamente hemos comprobado que la placa TS-CAN1 puede tener una frecuencia mínima de 10Kbps. Creemos que esto es debido a limitaciones hardware del oscilador presente en la TSCAN1 o el driver.

Esta afirmación se basa en el siguiente experimento:

- bajar la frecuencia: Según la especificación del SJA1000 y lo también mencionado en la documentación del TS-CAN1, esta puede soportar hasta una comunicación CAN de 1Mbps. Según ha leido hoy (30-12-2011) la frecuencia de trabajo de todos los módulos DX (en concreto de la UCM) por defecto es 2400bps, esto es 2.4Kbps. Por una parte es interesante destacar que el driver lincan del pc no admite en el argumento baudrate numeros decimales y este argumento se expresa en Khz. Por lo tanto, lo mínimo que hemos podido establecer es 1, 2 o 3:

 insmod lincan.ko hw=tscan1 irq=0x6 io=0x150 baudrate=3
 

Sin embargo, observamos que algo ocurren en el experimento con sendburst y a las 20 repeticiones de 3 tramas (-b3) aproximadamente a las 63 tramas el programa se bloquea y no continúa emitiendo.

 root@ts7800:lincan-7800# ./bin-utils/sendburst -d/dev/can0 -w0 -b3 -i1
 CAN /dev/can0 : Sent block of 3 messages #: 0
 CAN /dev/can0 : Sent block of 3 messages #: 1
 ...
 CAN /dev/can0 : Sent block of 3 messages #: 20
 lincan: initializing sja1000p chip operations
 lincan: baud rate 3000 is not possible with 16000000 Hz clock
 lincan: 0 bps. brp=0, best_tseg=0, tseg1=0, tseg2=0
 lincan: Error configuring chip.
 lincan: baud rate 3000 is not possible with 16000000 Hz clock
 lincan: 0 bps. brp=0, best_tseg=0, tseg1=0, tseg2=0
 lincan: Error configuring chip.
 lincan: baud rate 3000 is not possible with 16000000 Hz clock
 lincan: 0 bps. brp=0, best_tseg=0, tseg1=0, tseg2=0
 lincan: Error configuring chip.
 lincan: baud rate 3000 is not possible with 16000000 Hz clock
 lincan: 0 bps. brp=0, best_tseg=0, tseg1=0, tseg2=0
 lincan: Error configuring chip.
 lincan: baud rate 3000 is not possible with 16000000 Hz clock
 lincan: 0 bps. brp=0, best_tseg=0, tseg1=0, tseg2=0
 lincan: Error configuring chip.

Cuestiones abiertas - Los controladores SJA1000 pueden trabajar en dos modos: BasicCAN (2.0) y PeliCAN (2.0B)

Entonces surge una pregunta de la documentación del ts-can1 ¿que quiere decir eso?: <note important>embedded systems to be connected to CAN1.1 and CAN2.0a networks. It uses a Philips SJA1000 CAN</note> - ver en qué afecta esto a la compatibilidad con los módulos DX. - ¿qué protocolo 1.0 2.0 o 2.0b utilizan los módulos DX?

Instalación del módulo CAN

Se ha podido instalar el módulo tscan1 en el pc industrial conectándolo con otro y pudiendo hacer un send/receive con éxito. Para montarlo simplemente ejecutar el insmod con los siguientes parámetros:

 root@ts7800:root# insmod lincan.ko hw=tscan1 irq=0x6 io=0x150

El irq depende de la configuración del jumper específica. Por otra parte se sospecha que el módulo tscan no funciona correctamente con el módulo de zigbee

Para comprobar si el comando ha funcionado bien y el driver está funcionando, utilizar el típico lsmod, en la primera línea vemos como está cargado el driver lincan:

 root@ts7800:root# lsmod
 Module                  Size  Used by
 lincan                 82820  0
 zd1211rw               49956  0 
 firmware_class          7904  1 zd1211rw
 ieee80211softmac       27648  1 zd1211rw
 ieee80211              29924  2 zd1211rw,ieee80211softmac
 ieee80211_crypt         4992  1 ieee80211

Instalación del módul CAN [obsoleta a marzo de 2010 - preguntar a pablo]

El producto TS-CAN1 es un componente que se agrega a través del bus PC/104 al sbc. Información general del mismo y referencias pueden encontrarse en la página oficial de producto: http://www.embeddedarm.com/products/board-detail.php?product=TS-CAN1

15-12-2009 He intentado montar el módulo de linux siguiendo las instrucciones de la documentación y no lo he conseguido. Por el contrario lo he conseguido siguiendo esta referencia: http://bioacoustics.cse.unsw.edu.au/archives/html/ts-7000/2008-01/msg00204.html

¿Por qué hay que cambiar el modo del bus pc/104 a modo ISA? Creo que puede ser por lo que he leido en el manual de usuario del analizador CAN:

 
 CAN interfaces are currently available for ISA, PCI, parallel port, serial, and PC104 with
 MS-Windows operating systems, ISA and PCI for LINUX or as Ethernet-interface as
 stand alone CAN-Server on the port-EtherCAN module.

Otro parámetro importante a la hora de cargar el driver es:

 canio: Use this parameter for setting a specific I/O address space to allocate the
 SJA1000 registers. It is only available with TS-CAN1. See the table SJA1000 I/O address
 selection register in previous section.

Script bash para instalar y configurar el componente TS-CAN1

wget ftp://ftp.embeddedarm.com/pc104-peripherals/ts-can1/ts-7800-linuxr26/ocera-lincan-compiled.tar.gz
tar -zxvf ocera-lincan-compiled.tar.gz -C /
cd /usr/lican/modules
insmod -f lincan.o hw=tscan1
poke32 0xe8000030 0x55555555
poke32 0xe8000034 0x55555555
poke32 0xe8000038 0x55555555
poke32 0xe800003c 0x55555555
Guía de programación en C con linCAN

Desarrollo

pc_industrial_ts-7800.txt · Última modificación: 2011/12/30 17:27 (editor externo)