martes, 3 de septiembre de 2013

Ubuntu en Pandaboard







Actualmente estoy trabajando en un proyecto de desarrollo que no está directamente relacionado con la visión artificial. He tenido la fortuna de encontrar un una especie de business angel que esta apostando por algunas de mis ideas y tiene la intención de montar un pequeño departamento de I+D alrededor de algunas de ellas. De momento está afrontando todos los gastos de hardware para una idea que poco tiene que ver con la visión artificial, pero que me va a resultar muy útil para otros proyectos que sí tiene que ver con ella. Como no dispongo de tiempo para escribir, voy a utilizar el blog a modo de apunte, de esta manera dejo escrita mi experiencia que podré recuperar con solo leer el blog, si por añadidura resulta útil para alguien, pues miel sobre hojuelas. 

No puedo explicar en detalle en que consiste el proyecto, mi bussines angel esta pensando en una posible patente, por lo solo tratare temas generales. La idea incluye una parte de hardware y otra de software. Para el prototipo he decidido usar, entre otras piezas, un pandaboard que tendrá que correr con Ubuntu 12.04. Primeramente, permítanme explicar que es pandaboard y la razón de elegir esta plataforma:

Hoy en día están de moda las plataformas de bajo coste para desarrollo de hardware y software, algunos ejemplos los encontramos en Raspberry Pi, BeagelBoard o en otra línea, el famoso Arduino. PandaBoard es una más pero con unas características que la hacen más interesante para mis propósitos. Primeramente esta basada en la arquitectura OMAP 4460 que incluye un procesador doble núcleo Cortex-A9 y una GPU PowerVR SGX540. Esto le concede cierta potencia para ser un procesador encaminado a dispositivos móviles. Para conocer más detalles sobre rendimiento un buen punto de partida es la comparativa de phoronix. Como puede comprobarse, es lento comparado con la plataformas Atom de Intel pero muestra un brillante futuro para la plataforma ARM. No obstante, las pruebas realizadas en phoronix instalan el sistema en la tarjeta SD, y según parece mejora la velocidad si esto último se realiza sobre una memoria USB.  En principio, la potencia es suficiente para el propósito que me ocupa y al mismo tiempo me permitirá comprobar su uso en aplicaciones de visión artificial. No obstante, en función de los resultados, es posible que construya un segundo prototipo basado en Intel Atom ya que su eficiencia energética esta mejorando considerablemente.

El primer paso consiste en instalar Ubuntu 12.04 en PandaBoard, pero antes de nada hay que tener en cuenta que esta la plataforma no incluye fuente de alimentación. Por tanto, hay que buscar una fuente de 5 voltios y un mínimo de 3 amperios. Como es evidente, hay que tener precaución con el voltaje, un exceso podría dañar la placa, otra cosa es el amperaje, del que no debemos preocuparnos, siempre y cuando supere el mínimo, 6 amperios es recomendable si se desean usar todos los USB. No obstante hay que decir que la placa esta protegida, de tal manera que voltajes superiores a 5.35 V impiden su encendido e ilumina un led de color rojo advirtiéndonos del sobrevoltaje. 

  

 Antes de ponerse manos a la obra he necesitado los siguientes elementos:
  1. Una placa pandaboard.
  2. Una fuente de alimentación de 5V y 3.8 A.
  3. Una tarjeta SD de 8 Gb.
  4. Una pantalla/monitor con entrada HMDI.
  5. Un cable HMDI.
  6. Un cable de red.
  7. Un teclado usb.
  8. Un ratón usb.
  9. Un ordenador con lector de tarjetas SD con linux instalado.  
Mi primera intención era usar mi nuevo Acer V3-571G al que he instalado Kubuntu 13.04. Por desgracia, el lector de tarjetas no funciona bien bajo Linux, parece un bug que afecta al kernel. En cualquier caso, haciendo lspci me sale la siguiente información para el lector de tarjetas.


Como no tengo ganas de pegarme con este asunto, uso mi viejo Acer para preparar la tarjeta SD.   

 Una vez preparados todos estos elementos hay que seleccionar el sistema operativo que deseamos instalar. Para esta plataforma podemos instalar:

  • Android
  • Linux Minimal Filesystem (distribución para embebidos basada en Angström)
  • Ubuntu (a partir de la versión 10.10)
  • Linaro
Antes de continuar me gustaría comentar algo sobre Linaro. En realidad Linaro no es una distribución, sino un grupo de trabajo que intenta definir el futuro de Linux sobre ARM. A partir de Ubuntu, Android o Fedora realizan adaptaciones de dichas distribuciones para incorporar mejoras para la arquitectura de ARM. Después de echar un vistazo a su página, me queda claro que tarde o temprano tendré que probar su versión de Ubuntu. No será en esta ocasión, ya que por problemas de agenda prefiero la versión Ubuntu.

Una vez seleccionado el sistema operativo, Ubuntu en este caso, descargamos la versión que deseamos instalar en versión pre-construida, a elegir entre la dos siguientes.
La versión servidor no incluye entorno gráfico, en mi caso este es imprescindible, por lo que descargo la versión desktop. 

Realizada la descarga, hay que pasar la imagen correctamente a la tarjeta SD. Este paso, así como el previo de preparar la tarjeta, es sumamente importante. Pandaboard no dispone de memoria no volátil, no contando con ningún tipo de BIOS. Por tanto, una SD mal preparada impide el arranque del sistema. He sabido, a través de varios foros, de gente que mando su pandaboard  al fabricante pensando que estaba defectuosa, resultando finalmente producto de una tarjeta SD mal configurada que no lograba arrancar el sistema.

Yo he seguido los siguientes pasos:

  1. Primeramente, y tras introducir la tarjeta SD en el lector, averiguar cual es el dispositivo. En mi caso /dev/sdb, para tal fin se puede sacar una lista de los dispositivos con sudo fdisk -l.
  2. Mediante gparted borrar todas las particiones de la tarjeta.
  3. A continuación, ir al directorio donde descargamos la imagen de ubuntu y descomprimir la imagen. Una vez descomprimida, escribir el siguiente comando:   



Dos apuntes importantes, logicamente /dev/sdb podrá variar de un ordenador a otro. El segundo apunte quiere hacer hincapié en el echo de que debe escribirse /dev/sdb y no /dev/sdb1 o /dev/sdb2 o cualquier otro número.

 Una vez introducido el comando debemos esperar unos instantes para que la imagen se copie correctamente. Este proceso tarda unos minutos, en mi caso entre diez y quince. Finalmente la salida al comando fue:



Ahora, tan solo nos queda extraer la tarjeta e introducirla en la ranura correspondiente en nuestra Pandaboard. Antes de conectar la fuente, nos aseguramos de tener conectados los siguientes elementos:
  1. Un teclado a un puerto USB.
  2. Un cable de red ethernet a la conexión RJ45 de Pandaboard.
  3. Un ratón USB.
  4. Una pantalla con entrada HDMI.
En algunos casos puede que la pantalla no funcione, en ese caso hay una solución que debería funcionar en cualquier circunstancia. Para ello nos debemos hacer con un cable convertido USB/Serial para conectar por un Pc con nuestro pandaboard. A continuación, en el Pc se instala minicom, lo que nos permite entrar en nuestra Pandaboard

Suponiendo que la pantalla sea la adecuada, lo único que queda por hacer es conectar la fuente de alimentación y esperar. En la placa se sitúan dos leds, uno indica la actividad en la tarjeta SD, si no parpadea es que algo no esta funcionando correctamente.  Tras unos minutos deberíamos tener el sistema arrancado, luego, en modo gráfico, solo hay que seguir las sencillas instrucciones para instalar el sistema en la tarjeta SD.  

En una próxima entrada explicaré como dejar más fina la instalación. 

No hay comentarios:

Publicar un comentario