Siguenos en ...

Google+facebooktwitter

youtubepinterest RSS aquihayapuntes

Últimos Tutoriales


Licencia

Creative Commons

 

Todo el contenido de este sitio está bajo una licencia de Creative Commons

 

Gobernar un Microcontrolador desde la BeagleBoard-XM

Gobernar un PIC desde la BeagleBoard-XM En algunas ocasiones necesitamos crear una aplicación de escritorio que haga de interfaz entre un PC y un Microcontrolador para enviarle o recibir datos a través de un canal de comunicaciones. En este artículo vamos a ver como se puede sustituir la Computadora Personal (PC) por una placa de desarrollo embebido como la BeagleBoard-XM, la gran ventaja de este tipo de placas es que son lo suficientemente potentes en cuanto a memoria y velocidad de procesamiento para permitir la instalación de un Sistema Operativo y acceder al control de su hardware a través de él. Veremos las características de esta placa, así como los pasos que hay que seguir para la instalación de diferentes sistemas operativos en ella como Linux, Android o Windows, por último crearemos una aplicación de escritorio que se comunique con el Microcontrolador para enviar o recibir datos desde BeagleBoard .


Comencemos….

 

 

Características hardware de la BeagleBoard-XM

Placa BeagleBoard-XM

 

  • Procesador DM3730 basado en un núcleo ARM Cortex–A8, frecuencia de trabajo 1GHz. Capacidad de vídeo en HD (Texas Instruments C64x + Procesador DSP).
  • 512 MB de memoria RAM DDR.
  • Puertos de comunicaciones: I2C, I2S, SPI, 4 puertos Host USB y 1 USB 2.0 HS OTG, 1 puerto serie RS-232, 1 JTAG para depuración, 1 Conexión 10/100 Ethernet (a través de USB).
  • Señal de audio estéreo de entrada y salida para altavoces y micrófono.
  • Salida de vídeo: DVI-D y S-vídeo.
  • Conector de expansión para LCD.
  • Conector para cámara digital.
  • Slot para tarjetas de memoria micro-SD.
  • Conector para fuente de alimentación externa a 5V cc con protección ante sobre voltajes.


La BeagleBoard es un proyecto de Hardware libre por lo que desde la página oficial:


http://beagleboard.org/hardware-xM


Se pueden descargar los esquemas así como el manual de referencia (en inglés).

La BeagleBoard viene tal y como se muestra en la figura de abajo:

 

Envío BeagleBoard-XM

 

Sin cables y con una tarjeta micro SD de 4GB con adaptador para SD, la memoria lleva pre-instalado una versión reducida (sin entorno gráfico y sin sistema de ficheros) del Sistema Operativo Anström, pero que permite establecer un rlogin (login remoto) a través de la interfaz serie RS-232 y un programa como el Hyperterminal o el GtkTerm utilizado en Linux, instalado en un PC que hace de anfitrión y que nos servirá para chequear todo el proceso de arranque de la BeagleBoard. La configuración de la conexión serie en el ordenador que hace de anfitrión debe de ser la siguiente:

  • Baudios: 115.200
  • 8 bits de datos
  • Sin Paridad
  • 1 bit de parada
  • No control de flujo


La conexión se realiza con un cable serie directo (sin cruzar) ya que la BeagleBoard hace de equipo de comunicación de datos (DCE) y el PC de equipo terminal de datos (DTE).

Instalación de diferentes Sistemas Operativos


Una buena opción de empezar a trabajar con la BeagleBoard es instalar y probar diferentes sistemas operativos embebidos.

  • Anström: una vez que hemos chequeado la placa con la versión reducida podemos instalar una versión más completa que incluya entorno gráfico y un sistema de ficheros. Lo primero que tenemos que hacer es preparar la tarjeta de memoria micro SD que albergará el Sistema Operativo. Cuando se utiliza un procesador ARM la geometría física del disco es diferente a la de un PC. Los parámetros que definen la geometría física de un disco son: Nº de cabezas, Nº de sectores y Nº de cilindros. Para ARM esos parámetros deben de ser:

 

- Head → 255
- Sectores → 63
- Los cilindros hay que calcularlos en función del tamaño en bytes de la tarjeta que usemos por medio de la siguiente fórmula:


C(cilindros )= Tamaño en Bytes de la Memoria / Nº de Cabezas / Nº de Sectores / byte por sector

La tarjeta que vamos a utilizar es de 4 GB de capacidad y la herramienta que utilizaremos para preparar la tarjeta será fdisk incluida en todas las distribuciones de Linux (yo he utilizado Ubuntu 10.10).  
Los pasos a seguir son los siguientes:

1. Nos aseguramos de cuál es la partición de la tarjeta:

sudo fdisk -l

Muy importante este paso para no equivocarnos con las particiones que tenga el disco duro de nuestro ordenador y perder los datos guardados en ella.

2. Utilizaremos el siguiente comando para trabajar con el disco:

sudo fdisk /dev/sdb

Donde sdb es el nombre de dispositivo que mi ordenador le ha dado a la tarjeta micro-SD en tú caso puede ser sdc u otro diferente.   

3. Limpiamos la tabla de particiones: (opción o)


Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

4. Mostramos la información del dispositivo (opción p)

Command (m for help): p

Disco /dev/sdb: 3965 MB, 3965190144 bytes
122 cabezas, 62 sectores/pista, 1023 cilindros  
Unidades = cilindros de 7564 * 512 = 3872768 bytes  
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes  
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes  
Identificador de disco: 0xe50a4022

....
De esta información nos interesa el tamaño en bytes: 3965190144 correspondiente a una tarjeta de 4 GB que es la que vamos a utilizar.

5. Entro en modo experto para establecer la geometría del disco (opcion X)


La geometría de la tarjeta como se ha comentado arriba debe de ser la siguiente:

h (cabezas)= 255
s (sectores)=63

Para el cálculo de los cilindros utilizamos la formula:

c(cilindros)= Tamaño en Bytes de la Memoria / Nº de Cabezas / Nº de Sectores/ bytes por sector = 3965190144 /255/63/512= 482,073576097  

Lógicamente hay que redondear a la baja, por tanto: c(cilindros)=482

Ejecutamos las opciones del comando para establecer la geometría anteriormente descrita:

Orden avanzada (m para obtener ayuda): h  
Número de cabezas (1-256, valor predeterminado 122): 255  
Orden avanzada (m para obtener ayuda): s  
Número de sectores (1-63, valor predeterminado 62): 63  
Atención: estableciendo desplazamiento de sector para compatibilidad con DOS  
Orden avanzada (m para obtener ayuda): c  
Número de cilindros (1-1048576, valor predeterminado 1023): 482

6. Volvemos al modo principal para crear las particiones (opción r)


Orden avanzada (m para obtener ayuda): r  
Orden (m para obtener ayuda):  

7. Creamos la primera partición donde se alojaran los archivos de arranque del sistema operativo.


Orden (m para obtener ayuda): n  
Acción de la orden  
e Partición extendida  
p Partición primaria (1-4)  
p  
Número de partición (1-4): 1  
Primer cilindro (1-482, valor predeterminado 1): 1  
Último cilindro, +cilindros o +tamaño{K,M,G} (1-482, valor predeterminado 482): 9  

Con 9 cilindros (equivale aproximadamente a 70 MB de espacio) es suficiente para los archivos de arranque.

8. Creamos la segunda partición donde se alojarán los archivos del sistema.


Orden (m para obtener ayuda): n  

Acción de la orden  
e  Partición extendida  
p Partición primaria (1-4)  
p  
Número de partición (1-4): 2  
Primer cilindro (10-482, valor predeterminado 10): 10  
Último cilindro, +cilindros o +tamaño{K,M,G} (10-482, valor predeterminado 482): 482  


9. Hacemos que la partición 1 sea bootable (opción a)


Orden (m para obtener ayuda): a  
Número de partición (1-4): 1  

10. Introducimos la (opción p) para ver cómo nos quedarían las particiones (hasta que no guardamos no se ejecutan las sentencias).

Orden (m para obtener ayuda): p  

Disco /dev/sdb: 3965 MB, 3965190144 bytes  
255 cabezas, 63 sectores/pista, 482 cilindros  
Unidades = cilindros de 16065 * 512 = 8225280 bytes  
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes  
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes  
Identificador de disco: 0x8f1b93c7  

Disposit. Inicio Comienzo Fin Bloques Id Sistema  
/dev/sdb1 * 1 9 401593+ 83 Linux  
/dev/sdb2 10 482 8032+ 83 Linux  

El sistema de archivos para cada partición debe de ser la siguiente: para la primera partición que albergará los archivos de arranque del sistema operativo FAT 32 y para la segunda partición donde guardaremos los archivos del sistema ext3

Como vemos arriba la partición 1 esta para un sistema Linux y tiene que ser Fat 32.

11. Para cambiar eso introducimos la (opción t) seguido del número de partición que queremos cambiar en este caso la Nº 1

Orden (m para obtener ayuda): t  
Número de partición (1-4): 1  
Código hexadecimal (escriba L para ver los códigos): l  

0 Vacía 24 NEC DOS 81 Minix / old Lin bf Solaris  
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-  
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-  
3 XENIX usr 40 Venix 80286 84 Unidad C: ocult c6 DRDOS/sec (FAT-  
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extendida c7 Syrinx  
5 Extendida 42 SFS 86 Conjunto de vol da Datos sin SF  
6 FAT16 4d QNX4.x 87 Conjunto de vol db CP/M / CTOS / .  
7 HPFS/NTFS 4e QNX4.x segunda 88 Linux plaintext de Utilidad Dell  
8 AIX 4f QNX4.x tercera 8e Linux LVM df BootIt  
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access  
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O  
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor  
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 Hibernación de eb BeOS fs  
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT  
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/  
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 inicio Linux/PA  
11 FAT12 oculta 5c Priam Edisk a8 UFS de Darwin f1 SpeedStor  
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor  
14 FAT16 oculta <3 63 GNU HURD o SysV ab arranque de Dar f2 DOS secondary  
16 FAT16 oculta 64 Novell Netware af HFS / HFS+ fb VMware VMFS  
17 HPFS/NTFS ocult 65 Novell Netware b7 BSDI fs fc VMware VMKCORE  
18 SmartSleep de A 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto  
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep  
1c Hidden W95 FAT3 80 Old Minix be arranque de Sol ff BBT  
1e Hidden W95 FAT1  

Como se ve arriba si pulsamos l nos salen las opciones disponibles, tenemos que seleccionar la c

12. Seleccionamos otra vez la (opción p) para comprobar que todo este correcto antes de guardar los cambios:

Orden (m para obtener ayuda): p  
Disco /dev/sdb: 3965 MB, 3965190144 bytes  
255 cabezas, 63 sectores/pista, 482 cilindros  
Unidades = cilindros de 16065 * 512 = 8225280 bytes  
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes  
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes  
Identificador de disco: 0x8f1b93c7  
Disposit. Inicio Comienzo Fin Bloques Id Sistema  
/dev/sdb1 * 1 9 401593+ c W95 FAT32 (LBA)  
/dev/sdb2 10 482 8032+ 83 Linux  

13. Guardamos los cambios con la opción w
14. Ahora nos queda formatear las particiones: antes comprobamos que no se ha montado ninguna partición automáticamente.

Para desmontar las particiones se utiliza el comando umount y gráficamente también lo podemos hacer desde Gparted:

sudo umount /dev/sdb1
sudo umount /dev/sdb2

Los comandos que tenemos que utilizar para formatear las particiones son los siguientes:

sudo mkfs.vfat -F 32 /dev/sdb1
sudo mkfs.ext3 /dev/sdb2

Como hemos comentado ya la primera partición en FAT32 y la segunda en el sistema de ficheros de Linux ext3.

15. Ahora creamos dos carpetas (Angstrom y boot) en el directorio  /media

Que será donde montemos las dos particiones de la tarjeta para poder acceder a ella y guardar los archivos pertinentes:

sudo mkdir  –p  /media/boot

sudo mkdir  /media/Angstrom

 

Creación de carpetas

 

 

16. Ahora montamos las particiones en ambas carpetas para poder acceder a ellas ( si es que no lo ha hecho el sistema ya automáticamente):

sudo mount /dev/sdb1 /media/boot
sudo mount /dev/sdb2 /media/Angstrom

En el escritorio nos deben de aparecen las dos particiones ya montadas:

 

Particiones Montadas



17. Nos descargamos los siguientes archivos de la página:

 

http://www.angstrom-distribution.org/demo/beagleboard/

  • Angstrom-Beagleboard-demo-image-glibc-ipk-2011.1-beagleboard.rootfs.tar.bz2
  • MLO
  • u-boot.bin
  • uImage
  • md5sums


El md5sums es la suma de verificación para comprobar que los archivos se han descargado correctamente.
Se comprueban de la siguiente forma:

md5sum MLO

El sistema mostrará esto:

biblioman@biblioman-desktop:~/Distribucion Angstrom$ md5sum MLO  
571d5b229f7995aba3752004f6119118 MLO  

Que cotejaremos con el archivo md5sums.txt.  

18. Copiamos los archivos del sistema a la partición sdb2

sudo tar -xjv -C /media/Angstrom -f /home/biblioman/Distribucion_Angstrom/Angstrom-Beagleboard-demo-image-glibc-ipk-2011.1-beagleboard.rootfs.tar.bz2

Cuando todos los archivos se hayan copiado sincronizamos los archivos y desmontamos la partición:

sync
sudo umount /dev/sdb2


19. Ahora copiamos los archivos en boot para el arranque en este orden: para ello abrimos una terminal donde están los archivos a copiar y escribimos lo siguiente:

sudo cp MLO /media/boot
sudo cp u-boot.bin /media/boot  
sudo cp uImage /media/boot


Al igual que antes una vez copiados los archivos sincronizamos y desmontamos la partición:

sync
sudo umount /dev/sdb1


Con estos pasos ya tenemos nuestra tarjeta preparada, ahora solo queda conectarla a la Beagleboard.  
La conexión del monitor viene por defecto para HDMI a través de un cable convertidor de DVI-D (BeagleBoard) a HDMI (Monitor).

 

Cable DVI a HDMI

 

Nota: conectar el cable primero antes de dar alimentación a la tarjeta.

Luego solo queda conectar el cable Ethernet al conector RJ-45, y el teclado y el ratón a los puertos USB, si dejamos conectado el cable serie podremos monitorizar el arranque desde otro ordenador con el hyperterminal u otro programa similar.

Un pequeño vídeo de Angstrom corriendo sobre la BeagleBoard-XM:

 

 

© 2007-2017 AquiHayapuntes.com