Estou avaliando sistemas operacionais para usar em um projeto Internet das Coisas e não sei qual é a melhor maneira de prosseguir.
Estou usando um MCU TM4C123GH6PM com 32k RAM e um transceptor CC2520 802.15.4, seria ótimo se o sistema já fornecesse drivers para eles.
O sistema executará uma tarefa (interativa) que desenha uma tela dotmatrix e reage à entrada do usuário. Ele armazenará dados de configuração e aplicativos no spi flash. Haverá uma malha de vários módulos (com base no 802.15.4) para sincronizar dados entre os módulos, extrair dados do sensor dos módulos e encaminhá-los para um gateway (o rpl vem à mente) e também distribuir atualizações de firmware OtA de uma maneira fofoqueira. como moda. Durante a execução de um aplicativo com bastante memória, também.
Até agora, olhei para esses sistemas:
RIOT :
profissionais
- boa abstração de hardware
- pequena pegada
- comunidade muito ativa e prestativa
- pilha 802.15.4 / 6LoWPAN completa
contras
- instável, ainda passando por mudanças fundamentais
- ainda contém condições de corrida / acidentes
- sem suporte ao sistema de arquivos
- alguns protocolos de rede
Contiki :
profissionais
- sistema maduro, usado em produtos comerciais
- pilha 802.15.4 / 6LoWPAN completa com muitos protocolos úteis
- suporte ao sistema de arquivos
- suporte cc2520
contras
- desenvolvimento tornou-se obsoleto
- base de código 'crescida', muita podridão de bits
- porta tiva c de baixa qualidade
- pouco suporte para plataformas modernas
- agendamento não preventivo pode causar problemas com o aplicativo
FreeRTOS :
profissionais
- pouca complexidade adicional
- agendador fácil de usar e confiável
- projeto maduro, usado em muitos produtos
- muitos portos
contras
- nenhum sistema de arquivos
- sem abstração de hardware para drivers / sem drivers de hardware
- sem pilha de rede
- uso um pouco alto da memória dinâmica
NuttX :
profissionais
- muito rico em recursos, quase parece Linux, mas ainda pequeno
- suporte ao sistema de arquivos
- boa abstração de hardware
- Porta Tiva C, muitas outras portas
contras
- um pouco complexo
- sem suporte para 802.15.4 / 6LoWPAN, apenas netstack 'clássico'
Minha conclusão seria pegar as partes boas do Contiki (o netstack, sistema de arquivos) e portá-las para o FreeRTOS. Mas não estou totalmente à vontade com um garfo como esse. Eu provavelmente adicionaria erros e não seria capaz de suportar correções upstream, também ainda tenho que inventar minha própria abstração de hardware para poder alternar o MCU no futuro. Então, acabaria com meu próprio sistema operacional para algo que parece ser um problema que muitas outras pessoas deveriam ter também - alguém nunca fez isso antes? (Quero dizer, encontrei algo, mas a ideia de executar todo o contiki-os como uma tarefa do FreeRTOS me deixa desconfortável)
Tem algo que estou perdendo? Talvez a dor valha a pena e eu deveria tentar colocar o Contiki em um estado funcional no meu hardware? Ou existe outro sistema que eu perdi que resolveria meus problemas?
Também não tenho certeza se preciso do 6lowPan, mas quando isso significa ser capaz de criar protocolos existentes / ser compatível com outros sistemas (por exemplo, Linux), eu estaria disposto a assumir a sobrecarga adicional.
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
Isso é apenas .. uau! Eu nunca teria pensado nisso ..