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.
fonte
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
Isso é apenas .. uau! Eu nunca teria pensado nisso ..Respostas:
Se você não é casado com esse processador específico (ou é experiente o suficiente para copiar / colar o código de qualquer maneira), eu frequentemente uso Freescale MCUs com CodeWarrior e Processor Expert. O PEX inclui vários componentes, incluindo FreeRTOS, MQX, FAT, etc. Componentes adicionais podem ser baixados e, no final, é apenas um gerador de código baseado em GUI; portanto, como sugerido, você pode copiar / colar o código C resultante no seu projeto.
Editar:
-MQX inclui pilha IP
-FNET
Grande pacote pré-compilado de muitos componentes úteis: http://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/
fonte
Está faltando o sistema operacional mbed :
profissionais
contras
fonte
Se isso é para uso comercial, sugiro que você analise as opções não gratuitas, o suporte é tudo, se for um projeto pessoal, eu entendo.
Sim, há custos envolvidos, mas com alguns desenvolvedores de RTOS, eles não são tão grandes, eles realmente ganham dinheiro com desenvolvimento personalizado e as licenças podem ser gratuitas até que você faça uma venda. Abaixo está um link para um artigo que compara alguns concorrentes pagos:
Comparando sistemas operacionais de microcontroladores em tempo real
Sou gerente de projeto e passamos a usar os drivers oferecidos pela ST para a Unison. No IIRC, o licenciamento era surpreendentemente pequeno, e tivemos um "teste completo" até ficarmos convencidos, mas um apoio direto consistente foi o que nos levou ao limite, e o que realmente ajuda a acelerar o nosso desenvolvimento. Acho que eles já têm suporte para vários chips sem fio da TI, não tenho certeza sobre o CC2520.
O cara que faz a maior parte das vendas é realmente pessoal e não lista os preços por dois motivos, disseram-me 1) porque eles querem ouvir o que você precisa, querem realmente clientes de retorno e referências boca a boca, e 2) competição.
Para sua informação, o site da Unison é muito ruim.
fonte