Port de FreeRTOS para la placa launchpad msp-exp430g2.

real-time-searchEl único port oficial de FreeRTOS para MSP430 es MSP430F449. Si se intenta utilizar con un micro de la familia MSP430G2 no va a compilar. Por eso me decidí a a crear uno.

Para empezar busqué por Internet y encontré parte del trabajo ya hecho en un repo de Peter Bigot. Él continuó el port para los MSP430X 20-bit extension con FreeRTOS V7.1.1. Ahora lo he actualizado para FreeRTOS V8.2.2.

Las características del nuevo port son:

  1. Funciona para FreeRTOS V8.2.2.
  2. Soporta MSP430x.
  3. El formato de inline assembler es acorde a ISO C.
  4. Soluciona la falta de consistencia de las macros para acceder a los timers entre distintas familias.
  5. Se puede configurar más de una fuente de reloj para el timer.
  6. EL pre-procesador calcula automáticamente el prescaler del timer. Ahora se puede configurar en un amplia gama de frecuencias. Y cuando se sale del rango saca un error de compilación.

La característica 5 no era del todo necesaria. Lo habitual si se quisiera una configuración diferente a la que hace FreeRTOS es que una hebra re-configure el timer. Pero ya puestos a hacer un port ad hoc lo he incluido. La placa msp-exp430g2 , que es con la que la quiero probar, no trae un cristal externo instalado, y se necesita reconfigurar el timer.

En este repositorio incluyo el código de una aplicación de demostración, FreeRTOS V8.2.2 (por comodidad y sólo los ficheros necesarios), el proyecto de Netbeans y otro en un simple makefile.

La aplicación de demostración consiste en el típico blink led. Hace parpadear los dos LEDs de la placa con un cierto desfase. Para ello se emplea cuatro hebras. Dos para encender y apagar el LED rojo respectivamente y otras dos para el LED verde.

Por desgracia con 512 bytes de RAM sólo se puede crear cuatro hebras. Así que para crear aplicaciones más grandes es necesario hacerlas con corutinas.

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s