Linux PPS GPIO driver para Beaglebone Black

Trabajando en PTP (Precision Time Protocol IEEE 1588) con unos Beaglebone Black, necesitaba una forma de comparar el tiempo de diferentes tarjetas con una resolución de nanosegundos. Actualmente se pueden encontrar en el kernel varios drivers clientes de PPS, entre ellos uno que usa lineas GPIO.

Sin embargo, no existe un driver generador de PPS mediante GPIOs, el único driver incorporado al kernel trabaja con el puerto paralelo, lo que es una buena excusa para dedicarle algo de tiempo a un driver generador de señal PPS mediante lineas GPIO. He comenzado modificando la implementación actual que usa el puerto paralelo y he añadido una descripción en el fichero dts del Beaglebone Black para informar al kernel del puerto GPIO que quiero usar. Puedes usar este módulo en otras plataformas siempre que modifiques el dts correspondiente. Este módulo ha sido verificado con el kernel 3.15.3.

Las fuentes están disponibles en pps-gen-gpio.

Publicado en Uncategorized | Etiquetado , , | Deja un comentario

Fabricantes de tarjetas hardware y soporte Linux

Recientemente tuve una experiencia desagradable con el soporte Linux ofrecido por un fabricante de tarjetas PC104. ¿Está considerando adquirir nuevo hardware y tiene dudas sobre la instalación Linux ofrecida por el fabricante? Aquí describo mi experiencia y expongo las diferentes opciones disponibles con las que contamos a la hora de instalar Linux sobre una nueva plataforma.

 

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Valladolid Code Retreat, Mayo 2011

Acabo de asistir a un Code Retreat en Valladolid, organizado por Enrique Comba Riepenhausen . Ha sido una excelente oportunidad de conocer otros «geeks» interesados ​​en el aprendizaje continuo, dispuestos a pasar todo un sábado haciendo programación en pares, intercambiando ideas sobre los procesos ágiles y, sobre todo, divirtiéndose!

Para aprender tenemos que salir de nuestra zona de confort, lo que ocurrió definitivamente en mi caso, ya que tuve que seguir prácticas como TDD o la programación en pares, e incluso aprendí algo de groovy, además de programar en lenguajes más populares como Java y Python.

Muchas gracias a Enrique, patrocinadores y organizadores !

Sólo puedo animar a que busquéis algún Code Retreat por vuestra ciudad y si no lo hay, por qué no organizar uno? Realmente merece la pena!

Publicado en Uncategorized | Etiquetado , | Deja un comentario

C++ en sistemas embebidos

Me preguntaba un cliente recientemente sobre las ventajas de C++ sobre C para un proyecto de software embebido, y estas son algunas de las ideas que surgieron:

C muestra una relación más estrecha entre la fuente y el código máquina, que a veces hace que la depuración y optimización del código sea más fácil. Algunas arquitecturas tienen mejor soporte del compilador C, aunque esto es cierto principalmente para algunos DSP no muy comunes. En algunos casos, C también puede proporcionar un uso más eficiente de memoria y un tiempo de ejecución reducido en comparación con C++.

Por otro lado, C++ proporciona muchas facilidades a través de la STL que no forman parte de la biblioteca estándar C. C++ facilita el encapsulamiento y la orientación a objetos en los casos en que podrían ser útiles. Además de esto, las excepciones C++ simplifican el manejo de errores sin el código de comprobación de errores que frecuentemente se propaga a través de un programa de C.No creo que otras características de C++, como los templates y RTTI son tan útiles en los sistemas embebidos. Si tu compilador te permite desactivarlas por completo, te aconsejo que lo hagas con el fin de  ahorrar en tamaño de código.

El uso de C++ es recomendable si sus características tienen sentido en tu producto, después de una evaluación cuidadosa de los beneficios que proporciona en contra de su coste en rendimiento y tamaño de código.

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Redes de sensores inalámbricas 802.15.4

He estado estudiando las redes de sensores inalámbricos desde hace algún tiempo, y ya es hora de comprar algún kit para experimentar y construir algún prototipo. 802.15.4 es la capa de radio utilizada por Zigbee. No tengo que usar necesariamente Zigbee y prefiero código libre, pero me gustaría usar 802.15.4, más extendida que otras tecnologías como DASH7. Mis opciones de hardware actuales son:

  • Digi. Sus módulos XBee se ven muy interesantes, y se pueden programar en Python.
  • Libelium. Las motas SquidBee proporcionan una solución de prototipos basados ​​en Arduino, que ha sido diseñado con fines didácticos y educativos, mientras que Waspmote es su plataforma comercial. Parecen muy eficientes y bien construidas, con buena documentación y soporte.
  • Openpicus. Ofrece una interesante plataforma para la creación de prototipos basados ​​en software FreeRTOS de código abierto.
  • Algunas de las plataformas basadas en el chip CC2420 TI.

La redes de sensores inalámbricos deben ser programadas de manera eficiente, debido a los recursos limitados. Normalmente, se necesita C o un dialecto específico, como por ejemplo, nesC (utilizado en TinyOS). Los sistemas operativos utilizados en las plataformas inalámbricas de sensores se pueden dividir entre implementaciones libres académicas, como TinyOS o Contiki, y propietarias, como el sistema operativo utilizado en las pilas de Zigbee, como TI Z-Stack, Freescale o Ember. Estas implementaciones propietarias no proporcionan una API C unificada, el único requisito es que el comportamiento de la interface fisica de Zigbee sea correcto. Ha habido algunos intentos de construir un stack de código abierto Zigbee, pero no conozco ninguno que haya funcionado.

Un proyecto interesante es ZigBee-linux, que a pesar de su nombre, sólo cubre 802.15.4. Zigbee en sí mismo no es compatible con GPL, pero hay esfuerzos alternativos que se implementan en la capas altas de 802.15.4 y son compatibles con GPL, como 6lowpan/ROLL. Una buena opción que he encontrado para el funcionamiento de un stack abierto de redes de sensores inalámbricos es SICSLoWPAN.

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Procesos ágiles en software embebido

Últimamente oigo mucho sobre procesos de desarrollo ágiles. A pesar del «hype» que parece rodear a todo lo que es ágil, creo que algunas de sus prácticas son muy válidas en un entorno de software embebido: he tenido éxito por ejemplo con los ciclos de desarrollo rápido y con la integración continua.

Sin embargo, el software embebido tiene algunas peculiaridades que creo que hacen algunas de las prácticas ágiles menos adecuadas:

  • La programación por parejas es muy difícil de implementar en software embebido, ya que, según mi experiencia, cada ingeniero está muy especializado en alguna parte específica del hardware, por lo que no es fácil lograr un nivel uniforme de conocimientos a través de diferentes áreas para que diferentes ingenieros puedan contribuir eficazmente a través de esta práctica.
  • La comunicación continua con el cliente no es tan eficaz ya que el funcionamiento permanece oculto en comparación con, por ejemplo, una aplicación web.

Esto es lo que Jack Ganssle piensa sobre el tema. ¿Qué te parece? Son las prácticas ágiles definitivamente validas en el desarrollo de sistemas embebidos?

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Herramientas open source en la industria española de sistemas embebidos

Aunque pienso que el software propietario debe tener su espacio dentro de la industria de sistemas embebidos, hay algunas herramientas open source que considero esenciales para el desarrollo de la industria.

Cenatic es el centro español de referencia en tecnologías de open source. Ha publicado un interesante informe sobre el uso de software open source en la industria de sistemas embebidos en España. Especialmente interesante es la lista de herramientas open source que cubre todas las fases del desarrollo del software.

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Router NanoBSD con un Soekris net5501

NanoBSD es un gran conjunto de scripts que facilitan la compilación e instalación de un sistema completo personalizado FreeBSD en dispositivos embebidos. Es especialmente adecuado para el arranque con tarjetas CF, ya que crea un sistema root de sólo lectura, con las particiones de lectura y escritura montadas en RAM (md) a fin de reducir el uso de la tarjeta.

Hace algún tiempo que tengo un Soekris net5501, que compré para sustituir el router Linksys que uso en mi lan, y es el momento de usarlo. La plataforma Soekris puede ser un estupendo router, con consumo de alrededor de 5W y sin partes móviles, que permite amplia flexibilidad para instalar servicios de lan que no están disponibles (o no son facilmente configurables) en un router comercial casero, como por ejemplo:

  • pf firewall
  • dhcp
  • ntp
  • dns con bind
  • proxy con squid
  • VPN, monitorización de red, etc

He instalado FreeBSD 8.1 en VMware, que utilizaré para la compilación de las imágenes NanoBSD, que junto con un cable serie null-modem, y una Tarjeta CF Sandisk de 4G (sí, ya sé que es demasiado, pero son sólo 3 euros más que la tarjeta de 2 GB, la más pequeña que se puede comprar) es todo lo que necesito para dar nueva vida a mi Soekris.

Publicado en Uncategorized | Etiquetado , , | Deja un comentario

Taller DNIe en Valladolid

El taller técnico sobre el DNI electrónico español, DNIe, que tuvo lugar en Valladolid el 1 de junio, fue una buena introducción a un tema que encuentro bastante interesante. El sitio de soporte DNIe ofrece muchos recursos útiles para el desarrollo de aplicaciones en torno a una smartcard DNIe.

Estoy estudiando OpenSC y su soporte en Ubuntu Lucid, que parece presentar problemas ya que el driver para DNIe se proporciona en forma compilada, usando una versión de OpenSC bastante antigua.

Publicado en Uncategorized | Etiquetado , , | Deja un comentario

EW2010

Embedded World 2010 en Nuremberg ha sido una gran exhibición. Los temas de moda este año parecen ser Android y los sistemas de bajo consumo, con gran cantidad de vendedores que ofrecen soluciones de sistemas embebidos eficientes. Ha habido también muchas herramientas relacionadas con ARM, que ha crecido enormemente en los últimos años, no sólo por su aplicación en móviles sino también por su uso en tablets.

Publicado en Uncategorized | Etiquetado , , | Deja un comentario