O N108 é um sistema operacional completo em tempo real escrito para o chip TM4C123, com suporte para LCDs externos. O núcleo do sistema operacional foi escrito do zero. O sistema operacional se baseia em certos hardware externo para funcionar corretamente, mas pode ser facilmente modificado para ser auto-suficiente. Para uma lista de recursos externos de hardware necessários, consulte abaixo.
O sistema operacional é interagido através de uma concha do tipo Unix. O shell usa a comunicação serial através do UART0 da placa para enviar comandos que você digita para o sistema operacional N108. Para interagir com o sistema operacional, conecte seu TM4C123 Launchpad ao seu computador através do USB e inicie uma interface serial-como o Cooltert para Mac ou Putty para Windows-e conecte-se à porta serial que você está usando. A partir daí, você poderá ver o prompt do shell N108. Você pode emitir comandos desta interface.
O N108 possui suporte completo de carregamento de processos, para que você possa compilar e iniciar independentemente seus próprios programas TM4C123 usando esse sistema operacional, sem precisar recompensar o sistema operacional junto com seu programa. Para usar esse recurso, compila seu programa independente usando a Keil Uvision (ou qualquer outro compilador de braço incorporado) e solte o arquivo ELF em um cartão SD formatado FAT32. Conecte o cartão SD ao seu TM4C123 e execute o sistema operacional. No shell do sistema operacional, digite 'Launch', onde '' é o nome do arquivo ELF do ARM que você possui no cartão SD. O sistema operacional deve iniciar o programa e começar a executar.
O sistema operacional suporta uma chamada única: OS_DISPLAYMESSAGE. A chamada permite imprimir strings no LCD ST7735 anexado à placa. Ele leva 4 parâmetros para especificar onde na tela você deseja que a placa exiba o texto. Mais chamadas podem ser facilmente adicionadas modificando a matriz estática const elfSymbol_t simboltável [] encontrada em OS_CRITICAL/OS.C e adicionando um ponteiro à sua nova função.
Estou pensando em adicionar mais chamadas do sistema a essa área para permitir acessos mais fáceis dos recursos do TM4C SOC (em vez de apenas os recursos externos). TBD.
O sistema operacional, fora da caixa, conta com três peças de hardware externo para funcionar normalmente: um chip externo para interagir o driver serial com e emitir comandos (como um computador pessoal), um LCD e um leitor de cartão SD. O LCD é usado como uma fonte de saída (junto com a porta serial) e o leitor de cartão SD é usado pelo sistema de arquivos e pelo carregador de processos para carregar e executar processos externos. Para uma lista de comandos de interface em série, procure abaixo. Pessoalmente, usei um ST7735, pois ele permite a interface LCD e SD compatíveis com SSI; O esquema para isso também está incluído abaixo.
Este sistema operacional foi projetado para variações do chip ARM TM4C123. No entanto, a maior parte da camada de abstração de hardware é armazenada em OS_CRITICAL/HARDWAREMANAGER. Este módulo pode ser trocado com muita facilidade para drivers que são suportados em outros dispositivos. O sistema operacional usa as seguintes ferramentas de hardware para sua operação principal:
UART:
PLL:
GPIO:
SSI:
O código foi projetado para ser usado com o Texas Instruments Code Composer Studio. Basta clonar o repositório e importar o projeto para o seu espaço de trabalho do CCS. O projeto deve construir o bastão, sem necessidade de trabalho adicional.
Este sistema operacional piscará fora da caixa em um Ti TM4C123 Launchpad.
O sistema operacional usa um ST7735 LCD externo para duas coisas: como um LCD e como um leitor de cartão SD externo para o seu sistema de arquivos. Meu sistema operacional também foi usado para outros propósitos - como interface com sensores -, por isso, ignore qualquer conexão estranha na segunda imagem. O importante é conectar o ST7735.
Aqui estão os esquemas de como conectar isso ao seu lançamento: 

A interface principal entre o sistema operacional (em execução na placa) é feita através da porta UART serial a bordo. Você pode usar qualquer programa de terminal no seu computador-como CoolEdge no Mac ou Putty no Windows-para enviar esses comandos para o intérprete do sistema operacional assim que a inicialização estiver concluída.
Fora da caixa, o sistema operacional suporta os seguintes comandos, como visto em shell/shell.c:
char* commandFormat[] =
{
"help",
"runproc <processname>"
}
Muito barebones, mas a idéia aqui é adicionar seus próprios comandos e interface com o restante do sistema operacional. Ajude basicamente a imprime a mesma lista, enquanto o RunProc carrega um processo externo (armazenado no cartão SD inserido na placa Breakout ST7735) e começa a executar esse programa. Durante a ociosa, apenas o intérprete é executado.