N108 es un sistema operativo completo en tiempo real escrito para el chip TM4C123, con soporte para LCD externos. El núcleo del sistema operativo fue escrito desde cero. El sistema operativo se basa en cierto hardware externo para funcionar correctamente, pero puede modificarse fácilmente para ser autosuficiente. Para obtener una lista de recursos de hardware externos necesarios, consulte a continuación.
El sistema operativo se interactúa a través de un caparazón similar a UNIX. El shell utiliza la comunicación en serie a través del UART0 de la Junta para enviar comandos que escribe al sistema operativo N108. Para interactuar con el sistema operativo, conecte su TM4C123 LaunchPad a su computadora a través de USB y dispare una interfaz serie, como Coolterm para Mac o masilla para Windows, y conéctese al puerto serie que está utilizando. A partir de ahí, debería poder ver el mensaje del shell N108. Puede emitir comandos desde esta interfaz.
N108 tiene soporte completo de carga de procesos, por lo que puede compilar y iniciar independientemente sus propios programas TM4C123 utilizando este sistema operativo, sin tener que volver a compilar el sistema operativo junto con su programa. Para usar esta función, compile su programa independiente utilizando Keil Uvision (o cualquier otro compilador de brazo incrustado) y suelte el archivo ELF en una tarjeta SD formateada FAT32. Conecte la tarjeta SD a su TM4C123 y ejecute el sistema operativo. Desde el shell del sistema operativo, escriba 'lanzar', donde '' es el nombre del archivo ELF ARM que tiene en la tarjeta SD. El sistema operativo debe iniciar el programa y comenzar a ejecutar.
El sistema operativo admite una sola llamada del sistema: OS_DisplayMessage. La llamada le permite imprimir cadenas a la LCD ST7735 conectada a la placa. Se necesitan 4 parámetros para especificar en qué parte de la pantalla desea que la placa muestre el texto. Se pueden agregar fácilmente más llamadas modificando la matriz Symboltable [] static Elfsymbol_t que se encuentra en OS_CRITICA/OS.C, y agregando un puntero a su nueva función.
Estoy pensando en agregar más llamadas al sistema a esta área para permitir accesos más fáciles de recursos TM4C SOC (en lugar de solo los recursos externos). TBD.
El sistema operativo, fuera de la caja, se basa en tres piezas de hardware externo para funcionar normalmente: un chip externo para interactuar el controlador en serie y para emitir comandos (como una computadora personal), una pantalla LCD y un lector de tarjetas SD. El LCD se usa como fuente de salida (junto con el puerto serie), y el lector de tarjetas SD es utilizado por el sistema de archivos y el cargador de procesos para cargar y ejecutar procesos externos. Para obtener una lista de comandos de interfaz en serie, busque a continuación. Personalmente usé un ST7735, ya que permite la interfaz LCD y SD compatible con SSI; El esquema para eso también se incluye a continuación.
Este sistema operativo está diseñado para variaciones del chip ARM TM4C123. Sin embargo, la mayoría de la capa de abstracción de hardware se almacena bajo OS_CRITICA/HARDWAREMAGERAGER. Este módulo se puede cambiar muy fácilmente por los conductores que son compatibles con otros dispositivos. El sistema operativo utiliza las siguientes herramientas de hardware para su operación central:
Uart:
PLL:
GPIO:
SSI:
El código está diseñado para ser utilizado con Texas Instruments Code Composer Studio. Simplemente clone el repositorio e importe el proyecto en su espacio de trabajo CCS. El proyecto debe construir de la noche, sin necesidad de trabajo adicional.
Este sistema operativo flasheará fuera de la caja en un TM4C123 LaunchPad.
El sistema operativo utiliza un LCD ST7735 externo para dos cosas: como LCD y como un lector de tarjetas SD externo para su sistema de archivos. Mi sistema operativo también se usó para otros fines, como la interfaz con los sensores, así que ignore las conexiones extrañas en la segunda imagen. Lo importante es conectar el ST7735.
Aquí están los esquemas sobre cómo conectar esto a su lanzamiento de PAD: 

La interfaz principal entre el sistema operativo (que se ejecuta en el tablero) se realiza a través del puerto UART en serie a bordo. Puede usar cualquier programa de terminal en su computadora, como CoolEdge en Mac o masilla en Windows, para enviar estos comandos al intérprete del sistema operativo una vez que se completa el arranque.
Fuera de la caja, el sistema operativo admite los siguientes comandos, como se ve en shell/shell.c:
char* commandFormat[] =
{
"help",
"runproc <processname>"
}
Muy barebones, pero la idea aquí es agregar sus propios comandos e interfaz con el resto del sistema operativo. Ayuda básicamente imprime esta misma lista, mientras que Runproc carga un proceso externo (almacenado en la tarjeta SD insertada en el tablero de ruptura ST7735) y comienza a ejecutar ese programa. Durante inactivo, solo el intérprete corre.