Noticias sobre la CPU de la Near Space 2 // News about Near Space 2 CPU

Aitor Conde nos cuenta sus avances sobre la CPU de la Near Space 2, aquí va un resumen:
“Todavía no he hecho ninguna implementación física pero los siguientes pasos me exigen empezar a soldar.
El puerto USB del Beagleboard no parece muy estable cuando la batería escasea, eso significa que la sonda se quedaría totalmente ciega y sorda sin aviso previo. Además la Beagleboard viene con 4 puertos USB y sería una pena usar 3 de ellos para simplemente puertos RS232.

By jadonk (originally posted to Flickr as DSC_0263) [CC-BY-SA-2.0 (www.creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons

BeagleBoard


Me he estudiado el circuito del Beagleboard con la intención de ver cómo podría reiniciar el HUB USB desde la propia Beagleboard y he sacado dos ideas:
IDEA 1: reiniciar por completo la circuitería USB:

 

IDEA 2: manualmente usar los MOSFET de cada puerto USB de la Beagleboard.

Para solucionar este escollo utilizaremos la Arduino Mega para seleccionar con nuestros propios MOSFET qué puertos cerrar, esto además nos da control absoluto en el orden de encendido y consumos.
Para solucionar el problema de el puerto HUB fallando por completo de momento me conformaría apagando todos los dispositivos USB y reiniciando la Beagleboard, pero esto significa que ¡¡el Arduino Mega y la Beagleboard deben hablar entre ellas de alguna forma que no sea un USB-RS232!!.

Ahora lo más importante, la Beagleboard viene con varios “enchufes” a los que se les puede conectar dispositivos, pantallas LCD o lo que sea. Los dispositivos “comerciales” vendrían con una memoria EPROM que al momento de iniciar la Beagleboard(BB) configura los pines de cada enchufe. Pero nosotros no tenemos tantos recursos, quería hacer esto por software y finalmente lo he conseguido, a este software se le llama U-Boot y viene a ser para que os hagáis una idea como la BIOS en los ordenadores normales, solo que no pueden ser configurados, solo se pueden configurar con los parametros deseados cuando se compila.

Si fuese muy bueno programando en teoría se podría hacer toda la sonda compilando una U-Boot pero perderíamos todas las ventajas de un Sistema Operativo (acceso a memorias, drivers de webcams y mil cosas más), así que necesitamos un U-Boot con nuestras necesidades y luego un Sistema Operativo que no permita PinMux(el kernel de ubuntu por defecto para ARM por ejemplo).

¿Qué es el pinmux? Bueno, la BB tiene infinidad de pines posibles, y el U-Boot original es para que la BB se adapte “por defecto” a las aplicaciones más comunes para las que serían utilizados, es decir, LCD, vídeo, cámaras, etc. Nosotros lo que necesitamos son entradas y salidas digitales, y todos los puertos RS232 posibles de forma que no necesitemos usar USB-RS232 que podrían fallar por batería baja.

Con el nuevo U-Boot hemos obtenido dos puertos RS232 más, el UART1 y el UART2, ttyS0 y ttyS1 respectivamente y un puerto I2C. En ellos quiero conectar:

•    Arduinomega

•    Xbee (comunicaciones con tierra)

•    Nos queda la UART3 que viene ya por defecto la conexión pero en la cual de momento tenemos el modo consola “Debug” por si fallo, pero que podríamos usar para el GPS

Otra posibilidad sería conectar:

•    Arduinomega por i2C•    Xbee (comunicaciones con tierra) por UART1

•    GPS por UART2

Para lograrlo he tenido que re-compilar el U-Boot con lo que de los enchufes de la Beagleboard ahora tenemos:

•    UART1: Header LCD, P13 (UART1_RX, pin9; UART1_TX, pin15)

•    UART2: Header EXPANSION,(UART2_RX, pin8; UART2_TX, pin6)

•    PIN digital de salida: Header EXPANSION, (pin3 (GPIO_139), pin5 (GPIO_138), pin7 (GPIO_137), pin9 (GPIO_136))

•    PIN digital de entrada: Header EXPANSION, (pin11 (GPIO_135), pin13 (GPIO_134), pin15 (GPIO_133)

•    I2C2:  Header EXPANSION,(I2C(2)_SDA, pin23; I2C(2)_SCL, pin24)

Los pasos serían:

1- Bajarse el código fuente:

Opcion 1:(oficial de validación de la BB): git clone git://gitorious.org/Beagleboard-validation/u-boot.git u-boot_validation
Opción 2:O el oficial de U-boot(todos los ARMs del mundo?): git clone git://git.denx.de/u-boot.git u-boot-main
A mi solo me ha funcionado el código fuente oficial del U-boot, posiblemente el U-boot de validación estaba roto en el momento de bajarme el repositorio.
2- Bajarse las herramientas de desarrollo: Para compilarlo es necesario tener el code sourcery GCC (hemos usado la versión Sourcery G++ Lite 2010.09-50 for ARM GNU/Linux) :

http://www.codesourcery.com/sgpp/lite/arm/portal/release1600 (hay que hacer chmod y luego seguir las instrucciones)
3- Editar el código así:
Para obtener el PinMux hemos añadido estas líneas al archivo /board/ti/beagle/beagle.c sobre la línea 186:

 

 

  • //Set our own UART1, UART2, and GPIOS
  • /* reset default beagleboard UART configs to avoid conflicts */
  • MUX_VAL(CP(UART1_TX),   (IDIS | PTD | DIS | M7)) /*UART1_TX*/
  • MUX_VAL(CP(UART1_RX),   (IDIS | PTD | DIS | M7)) /*UART1_RX*/
  • MUX_VAL(CP(UART2_RX),    (IDIS | PTD | DIS | M4)) /*alternative UART2_RX*/
  • /* reset DSS_DATA[0,1,6,7] lines to UART1 mode */
  • MUX_VAL(CP(DSS_DATA0),       (IEN  | PTU | EN  | M2)) /*UART1_CTS*/
  • MUX_VAL(CP(DSS_DATA1),       (IDIS | PTD | DIS | M2)) /*UART1_RTS*/
  • MUX_VAL(CP(DSS_DATA6),       (IDIS | PTD | DIS | M2)) /*UART1_TX*/
  • MUX_VAL(CP(DSS_DATA7),       (IEN  | PTD | EN  | M2)) /*UART1_RX*/
  • /* set UART2 lines */
  • MUX_VAL(CP(UART2_TX),         (IDIS | PTD | DIS | M0)) /*UART2_TX*/
  • MUX_VAL(CP(MCBSP3_FSX),      (IEN  | PTD | EN  | M1)) /*UART2_RX*/
  • /* set our outputs */
  • MUX_VAL(CP(MMC2_DAT7),       (IDIS | PTD | EN  | M4)) /*GPIO_139*/
  • MUX_VAL(CP(MMC2_DAT6),       (IDIS | PTD | EN  | M4)) /*GPIO_138*/
  • MUX_VAL(CP(MMC2_DAT5),       (IDIS | PTD | EN  | M4)) /*GPIO_137*/
  • MUX_VAL(CP(MMC2_DAT4),       (IDIS | PTD | EN  | M4)) /*GPIO_136*/
  • /* set our inputs */
  • MUX_VAL(CP(MMC2_DAT3),       (IEN | PTD | EN  | M4)) /*GPIO_135*/
  • MUX_VAL(CP(MMC2_DAT2),       (IEN | PTD | EN  | M4)) /*GPIO_134*/
  • MUX_VAL(CP(MMC2_DAT1),       (IEN | PTD | EN  | M4)) /*GPIO_133*/
  • /* activate I2C just in case one day… */
  • MUX_VAL(CP(I2C2_SCL),    (IEN  | PTU | DIS | M0)) /*I2C2_SCL*/
  • MUX_VAL(CP(I2C2_SDA),    (IEN  | PTU | DIS | M0)) /*I2C2_SDA*/
  • 4- Compilar:
    Compilar el nuevo u-boot:

    export PATH=”${PATH}:/poneraqui_elpath_a_codesourcery/bin”
    make CROSS_COMPILE=arm-none-linux-gnueabi- mrpropermake CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_configmake CROSS_COMPILE=arm-none-linux-gnueabi-[/code]

    5- Copiar el nuevo archivo u-boot a la tarjeta sd

    6- Comprobar el funcionamiento:

    Una vez encendido la Beagleboard con el nuevo U-Boot usar para ver los puertos UART:

    cat /proc/tty/driver/serial1: uart:ST16654 mmio:0x4806C000 irq:73 tx:1 rx:1 DSR|CD|RI

    En breve comenzaré a con las pruebas para traducir los voltajes de 1.8V a 3.3V y 5V para los pines digitales y las UARTs. Además de las primeras pruebas de los MOSFET y así finalmente podré comenzar el desarrollo en la Arduinomega.

    Información sobre pinmux: http://elinux.org/BeagleBoardPinMux Información sobre el u-boot: http://elinux.org/BeagleBoard#U-Boot
    Links útiles:http://groups.google.com/group/Beagleboard/browse_thread/thread/cd077892b846a966 http://wh1t3s.com/2009/05/06/enabling-uart1-on-rev-c2-Beagleboard/
    ——————————————————————————–
    ENGLISH VERSION

    Aitor Conde tells us his progress on the CPU of the Near Space 2, here’s a summary:

    “I have not done any physical implementation but the following steps require me to start welding.

    BeagleBoard USB port is not very stable when the battery is almost empty, this means that the probe would be totally blind and deaf. Also BeagleBoard comes with 4 USB ports and it would be worth using 3 of them to simply port RS232.

    I’ve studied the BeagleBoard circuitry trying to see how it could restart the USB hub from the BeagleBoard:

    IDEA1: completely restart the USB circuitry:
    IDEA2: manually using MOSFETs of every BeagleBoard USB port.

    To solve this difficulty we use the Mega Arduino to choose with our own mosfets which ports to close, it also gives us absolute control over the starting order and consumption. To solve the problem of the port HUB completely failing at the moment I settle off all USB devices and restarting BeagleBoard.

    Now BeagleBoard comes with several “plugs” when we can plug-in devices, LCD screens or something similar. The “commercial” devices would come with a EPROM memory, and at boot time BeagleBoard (BB) configures the pins of each plug. But we do not have many resources, I wanted to do this for software and finally I solve it, with this implementation we have obtained two RS232 ports, the UART1 and UART2, respectively ttyS0 and ttyS1.
    We want to connect: • Arduinomega • XBee (ground communications) •The UART3 is now used for “Debug mode”, but we could use for GPS

    To do this I had to re-compile the U-Boot with switches that BeagleBoard now have: • UART1: LCD Header, P13 (UART1_RX, pin9; UART1_TX, pin15) • UART2: Header EXPANSION (UART2_RX, Pin8; UART2_TX, pin6) • digital output PIN: Header EXPANSION (pin3 (GPIO_139) pin5 (GPIO_138) pin7 (GPIO_137) pin9 (GPIO_136)) • Digital input PIN: Header EXPANSION (pin11 (GPIO_135), pin13 (GPIO_134), pin15 (GPIO_133) • I2C2: Header EXPANSION (I2C (2) _SDA, pin23, I2C (2) _SCL, pin24)

    I only worked the official U-boat
    To compile you need to have Sourcery GCC code (we used version Sourcery G + + Lite 2010.09-50 for ARM GNU / Linux): http://www.codesourcery.com/sgpp/lite/arm/portal/release1600 (you must chmod and then follow the instructions) Once we start  BeagleBoard with the new U-Boot we could see the ports UART using:
    cat / proc / tty / driver / serial

    1: uart: ST16654 mmio: 0x4806C000 irq: 73 tx: 1 rx: 1 DSR | CD | RI

    “We will begin soon to translate the voltages from 1.8V to 3.3V and 5V for digital pins and UARTs. In addition to the first tests of the Mosfets, and finally we hope to start the development stage with arduinomega”

    About pinmux: Information http://elinux.org/BeagleBoardPinMux u-boot: http://elinux.org/BeagleBoard # U-Boot Useful Links: http://groups.google.com/group/Beagleboard/browse_thread/thread/cd077892b846a966 http://wh1t3s.com/2009/05/06/enabling-uart1-on-rev-c2-Beagleboard/ Download the latest U-boot (official validation BB): git clone git: / / gitorious.org / BeagleBoard-validation / u-u-boot_validation boot.git Or the official U-boat (all ARMs in the world?): Git clone git: / / git.denx.de / u-boot.git u-boot-main

    Comparte y disfruta: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • del.icio.us
    • BarraPunto
    • email
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • Live-MSN
    • Meneame
    • MySpace
    • Technorati
    • TwitThis
    • StumbleUpon
    • XING
    • Wikio ES

    WordPress Themes

    A %d blogueros les gusta esto:

    Si quieres seguir visitando este sitio, tienes que aceptar el uso de cookies más información

    proyectodaedalus.com usa cookies. Al usar este sitio sin modificar tu configuración de cookies o hacer clic en "Aceptar", aceptas que proyectodaedalus.com haga uso de cookies.

    Cierra