Trabajo práctico para la materia Programación de Microprocesadores de la Carrera de Especialización en Sistemas Embebidos de la UBA.
El firmware corre sobre la placa de desarrollo EDU-CIAA-NXP, y para compilar es necesario utilizar Firmware v3.
El objetivo del firmware es simular una línea de comandos simple mediante la UART. El funcionamiento se describe en el documento de arquitectura y diseño detallado.
Los módulos (pares de archivos .c y .h) son:
cmd-uart.ccontiene la funciónmain.fsmimplementa la máquina de estados (ver abajo).state_idlecontiene las funcionesenteryupdatedel estadoIDLE, que sería el "menú principal" en el que el usuario puede elegir un modo de funcionamiento (ejemplo:pvsubpara pasar al modo "Process Variable Publisher").state_tcncontiene las funcionesenteryupdatede los estados correspondientes a cada uno de los modos de funcionamiento, que aun no hacen nada. Lo único que puede hacer el usuario en estos modos es ingresar el comandobackpara volver al menú principal.
terminalabstrae la entrada/salida de texto.command_linepara que cada estado pueda definir los comandos y operaciones disponibles.
Cada estado tiene 2 funciones enter y update. La función enter se llama cuando
se ingresa a ese estado, y update se llama periódicamente cuando se está en ese
estado.
La función update puede devolver una señal. Esa señal puede provocar o no una
transición; no es responsabilidad de un estado saber cuál es el próximo estado.
En fsm.c se configuran los estados disponibles y cómo son las transiciones
entre estados. Por ejemplo {STATE_INIT, SIGNAL_DONE, STATE_IDLE} determina que
si en el estado INIT la función update devuelve SIGNAL_DONE, entonces hay que
pasar al estado IDLE.