Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dessaya/cmd-uart
TP1 Programación de Microprocesadores CESE
https://github.com/dessaya/cmd-uart
c edu-ciaa-nxp embedded-systems
Last synced: 10 days ago
JSON representation
TP1 Programación de Microprocesadores CESE
- Host: GitHub
- URL: https://github.com/dessaya/cmd-uart
- Owner: dessaya
- License: apache-2.0
- Created: 2019-09-27T19:20:23.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2019-10-10T01:06:41.000Z (about 5 years ago)
- Last Synced: 2024-10-25T15:38:41.391Z (about 2 months ago)
- Topics: c, edu-ciaa-nxp, embedded-systems
- Language: C
- Size: 16.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# cmd-uart
Trabajo práctico para la materia Programación de Microprocesadores de la
[Carrera de Especialización en Sistemas Embebidos](http://laboratorios.fi.uba.ar/lse/especializacion.html)
de la UBA.El firmware corre sobre la placa de desarrollo [EDU-CIAA-NXP](http://www.proyecto-ciaa.com.ar/index_comprar_educiaanxp.html),
y para compilar es necesario utilizar [Firmware v3](https://github.com/epernia/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](https://docs.google.com/document/d/12o3bVxmdhhSE5jTOyUo8WwF6yKrkli2oRkp-YUJybcc/edit?usp=sharing).Los módulos (pares de archivos `.c` y `.h`) son:
* `cmd-uart.c` contiene la función `main`.
* `fsm` implementa la máquina de estados (ver abajo).
* `state_idle` contiene las funciones `enter` y `update` del estado `IDLE`,
que sería el "menú principal" en el que el usuario puede elegir un modo
de funcionamiento (ejemplo: `pvsub` para pasar al modo "Process Variable
Publisher").
* `state_tcn` contiene las funciones `enter` y `update` de 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 comando `back` para volver al menú principal.
* `terminal` abstrae la entrada/salida de texto.
* `command_line` para que cada estado pueda definir los comandos y operaciones disponibles.## Máquina de estados
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`.