Zephyr, o RTOS para IoT desenvolvido pela Linux Foundation

Felipe Neves
4 min readMar 28, 2018

--

Olá caro leitor. Sabemos que diversos ramos de sistemas embarcados estão cada vez mais convergindo para um ponto, a internet das coisas (ou IoT da definição original em inglês).

Dentre as coisas destacamos placas de desenvolvimento completas, módulos de comunicação sem fio cada vez mais integrados, microcontroladores conectados, além de pilhas de software para acelerar o desenvolvimento (desde drivers ethernet até completos frameworks TCP/IP).

Com sistemas operacionais de pequeno footprint (que denota baixo consumo de memória FLASH e RAM) e execução em tempo real não tem sido diferente, embora soluções baseadas em Linux Embarcado tenham tomado a dianteira nesse cenário, este ainda não se mostra adequado quando o assunto é ser embarcado em um dispositivo que está na ponta do IoT como sensores, pulseiras e atuadores inteligentes.

Adicionada a soluções como o Brillo da Google, o Riot, o Mbed OS da ARM, a Linux Foundation liberou o primeiro release do seu sistema operacional de tempo real, o projeto Zephyr.

Zephyr, o irmão menor do Linux kernel

O Zephyr tem sido chamado de irmão menor no tradicional kernel do linux (também mantido pela mesma entidade), devido a modularidade, simplicidade e licença, sim seu código é aberto e pode ser utilizado em seus projetos, mas as semelhanças param por ai, o Zephyr possui como alvo microcontroladores e SoCs que executam tarefas em tempo real ou seja, eventos cujo o intervalo entre suas ocorrências é constante.

Adicione a isso o fato de seu footprint ser pequeno como verificado em [1], que chega a ser menos de 2KB na sua configuração mais básica. Para sistemas maiores e utilizando todos os recursos o RTOS pode chegar no consumo de 900KB de memória de programa.

Assim seu uso se torna ideal para uso em sistemas que variam desde redes de sensores, até dispositivos detectores de movimentos até coletores de dados responsáveis por publicar os dados obtidos para um serviço em nuvem como o Amazon AWS ou Microsoft Azure (consulte [2] e [3] respectivamente para mais informações).

A organização básica do kernel Zephyr

O Zephyr RTOS, segundo [1], ele está estruturado no formato de um microkernel, este microkernel compõe o scheduler, serviços primários e mecanismos de comunicação entre threads, device drivers.

Além desses, o projeto conta com serviços mais complexos de execução, além de abstração direta com os canais de comunicação por onde passam dados de maiores blocos como WiFi, sendo este indicado para os dispositivos que tratam tarefas de intenso processamento de dados e de diferentes canais de comunicação como além do WiFi, Ethernet e Bluetooth, observe a figura 1:

O Zephyr ainda traz diversos módulos para acelerar o desenvolvimento, ele contém diversos drivers para comunicação com diversos dispositivos, além disso possui suporte aos mais variados canais de comunicação utilizado para dispositivos conectados, desde soluções cabeadas, até canais sem fio. Além disso, o RTOS conta com uma biblioteca C minimalista contento os set de funções elementares da conhecida biblioteca padrão LIBC, resta saber se seu desempenho e consumo serão tão bons quanto derivados open source como a newLibNano.

O Zephyr possui fácil acesso para que o usuário escreva e adicione seus próprios drivers, além de código portável para seu próprio hardware alvo, até o momento da escrita desse artigo, o Zephyr estava devidamente portado para as arquiteturas x86 (voltados para o Intel Quark), ARC(os microcontroladores auxiliares contidos na Intel Edison e Curie), diversos chips baseados em arquitetura ARM, além de dispositivos baseados na arquitetura XTensa sendo portanto compatível com ESP8266 e ESP32.

Além disso, emuladores baseados no conhecido QEMU [5], podem ser utilizados para aqueles que não possuam um hardware alvo para uso. A Linux Foundation também está encorajando para que desenvolvedores implementem código para seu próprio hardware e que além disso, participem do programa de contribuição de desenvolvimento, para isso o interessado pode clicar nesse link para criar sua conta e aguardar a aprovação.

Conclusão

O projeto Zephyr pelo visto chegou pra ficar, talvez para se tornar um padrão no uso de sistemas embarcados, não se limitando apenas ao campo de internet das coisas, como o kernel do Linux se tornou com o passar dos anos.

O Zephyr não quer ser visto como mais um sistema operacional, mas sim como um ambiente de desenvolvimento aberto e colaborativo, de modo que qualquer entusiasta ou profissional possa utilizar suas ferramentas para criar dispositivos, conectados ou não, para as mais diversas funções.

Para saber mais

O projeto Zephyr já possui uma pagina dedicada com as principais informações a respeito, além de downloads, documentação e como já citado acesso a comunidade, para começar a explorar, clique nesse link e bom divertimento.

Referências

[1] — Zephyr kernel fundamentals

[2] — Amazon AWS

[3] — Microsoft Azure

[4] — Meet Linux’s little brother: Zephyr, a tiny open-source IoT RTOS

[5] — QEmu, Open source processor emulator

--

--

Felipe Neves

Passionate Embedded Systems Developer, open source embedded systems tools contributor and user. Lead Firmware Engineer at Venturus