Post on 13-Nov-2021
transcript
Porting de FreeOSEK a la plataforma MSP430
Ing. Franco Bucafusco
Carrera de Especialización Sistemas Embebidos
Universidad de Buenos Aires
Jurado:
Ing. Juan Manuel Cruz (FIUBA, UTN-FRBA)
Esp. Ing. Patricio Bos (FIUBA)
Dr. Ing. Pablo Gomez (FIUBA)
Director del trabajo:
Esp. Ing. Pablo Ridolfi
Motivación #1
• El microcontrolador MSP430 permite realizar
diseños de ultra bajo consumo.
• 5.3 mA en Modo Activo (@25MHz)
2,5 uA en Modo LPM 3 (reloj del tick, activo)
ICC [mA] [tick 1ms]
ACTIVO SLEEP tAct. [us] tSleep [us] IAVG [mA] PAVG [mW]
MSP430F5529 10 0,0025 36 964 0,36 1,2
LPC4337 83 8.8 7,35 992 9,4 30,1
2
Motivación #2
• Sistema operativo Estático
• La inclusión de esta plataforma al ecosistema
CIAA, permitirá a los desarrolladores tener un
mayor abanico de aplicaciones
3
Alcances del trabajo.
• Implementar FreeOSEK en el uC
MSP430F5529
• Implementar los Drivers de las GPIOs del
microcontrolador, basado en HIS.
• Implementar los Drivers de las UARTs del
microcontrolador, basado en POSIX
4
POSIX
HIS
Estructura Firmware CIAA
5
• Está basado en el estándar OSEK.
Free OSEK
• Se configura a través del lenguaje OIL
• Es un RTOS Estático.
• Incluye Tests de Conformidad.
6
• Permite la definición a través del lenguaje DIL.
HIS
• Los Drivers son Estáticos.
• Se fusiona muy bien con OSEK-VDX!
6
FreeOSEK & HIS
7
• Integración de librerías de Texas Instruments
CIAA-Firmware para MSP430
• Estructura de carpetas y Makefiles
• Compilador y Debugger
• Implementación del PORT
• Tests de conformidad
8
• Análisis del Firmware hecho para Cortex-M
Adaptación de FreeOSEK para MSP430
• Vector de Interrupciones
• Timer para Interrupciones Periódicas
• Inicialización del stack
• Rutinas en assembler
• Agregado del uso de modos de bajo consumo.
• Test de conformidad
9
MSP430: Arquitectura
● RISC
● Von Neumann
● Arq. Ortogonal.
● 16 registros (4 reservados)
● MSP430: 50 instrucciones.
● MSP430X: Extiende funcionalidad para direcciones de 20 bits (37 instrucciones más)
10
MSP430: Interrupciones
● Interconexión en cascada de cada módulo. ● Prioridad fija (depende del dispositivo).● Tres tipos de fuentes:
○ Sistema○ Usuario ○ Periféricos
11
MSP430: Tick y Cambio de Contexto
● Interrupción periódica: Se implementa con el periférico TimerA, canal 0.
● La interrupción por software se implementó empleando el TimerA, canal 1.
12
3
Slide 13
3 IdemAriel Lutenberg, 22/11/2016
MSP430: Bajo Consumo
● Diferentes combinaciones que contemplaban:○ El reloj del CPU ○ El reloj auxiliar (hacia periféricos)○ El reloj secundario (hacia periféricos)○ El DCO○ El FLL
13
Driver: GPIO HIS
PIN LED3 {PORT = 8;PIN = 2;DIRECTION = IO_OUTPUT_INIT_LOW;INVERTED = FALSE;}
PIN KEY1 {PORT = 1;PIN = 7;DIRECTION = IO_INPUT_PULLEDUP;INVERTED = FALSE;NOTIFICATION = TRUE;}
ISR PORT1 {...}
14
Driver: UART Posix
● Se basó en la implementación existente en CIAA Firmware.
● Se implementó para las 2 UARTs disponibles en el microcontrolador
15
● HIS no estandariza un driver para UART
FreeOSEK : Mejoras en la generación
● Validaciones:
○ Tareas con eventos definidos => EXTENDIDAS
○ Tareas sin eventos definidos => BASIC
○ Eventos declarados de forma global, sin tareas asociadas.
○ Cantidad máxima de eventos
○ Tareas con eventos sin definir de forma global.
16
FreeOSEK : Mejoras en la generación
● Asignación de eventos de forma más óptima
17
Herramientas de desarrollo
18
Conclusiones:
• Se utilizaron conocimientos adquiridos en:
• Ingeniería de Software
19
• Sistemas Operativos en Tiempo Real
• Gestión de proyectos
• Arquitectura de Microprocesadores
Conclusiones:
• Implementación del RTOS FreeOSEK:
Ejemplo: blinking
Tests de conformidad de OSEK superados.
20
• Implementación de Drivers:
• UART (POSIX)
ejemplo: blinking_echo
• GPIO (HIS)
ejemplo: blinking_hisio
Próximos pasos:
• Extender el port para aprovechar todo el
mapa de memoria del microcontrolador.
• Dar soporte al multiplicador por HW.
• Desarrollar una CIAA basada en MSP430
• Mejora del depurador
21
GRACIAS POR SU ATENCIÓN !!!