Palestra: Zephyr RTOS: Primeiros Passos
Palestrante: Jorge Guzman
Contém código de exemplo, guias de instalação e documentação prática para desenvolvedores que desejam começar a trabalhar com Zephyr RTOS.
Material prático para iniciantes que desejam começar a trabalhar com Zephyr RTOS, desde a instalação do ambiente até a execução do primeiro projeto.
Este projeto foi desenvolvido e testado com:
- PC: Ubuntu 22.04
- Placa: Linum (STM32H753BI) da witte technology
- Zephyr RTOS: v4.2.0
- Zephyr SDK: v0.17.2
Guia de instalação do ambiente de desenvolvimento do Zephyr RTOS: Getting Started Guide
Lista completa de placas suportadas pelo Zephyr RTOS: Boards Supported
Documentação de bindings e configuração de Device Tree para periféricos: Device Tree (DTS) Documentation
Repositorio git com o exemplo de template para iniciar um novo projeto com Zephyr RTOS: exemple-application
Guia oficial para portar um hardware customizado usando o Zephyr RTOS: Board Porting Guide
Antes de compilar, ative o ambiente virtual e configure as variáveis do Zephyr:
app$ source ~/zephyrproject/.venv/bin/activate
app$ export ZEPHYR_BASE=~/zephyrproject/zephyr
Build otimizada para ambiente de produção
app$ west build -b linum -p -- -DDTC_OVERLAY_FILE=boards/linum.overlay
-- Zephyr version: 4.2.0 (/home/jaga/zephyrproject/zephyr), build: v4.2.0
[160/160] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 23804 B 2 MB 1.14%
RAM: 4864 B 512 KB 0.93%
...
Build com símbolos de debug e logs habilitados:
app$ west build -b linum -p -- -DDTC_OVERLAY_FILE=boards/linum.overlay -DOVERLAY_CONFIG=debug.conf
[198/198] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 79900 B 2 MB 3.81%
RAM: 13 KB 512 KB 2.54%
...
Comando para gravacao do binario gerado
app$ west flash
Comando para analise de consumo de memoria flash e ram
app$ west build -t rom_report
app$ west build -t ram_report
Para habilitar o debug no VSCode, é necessário instalar dois pacotes adicionais, que incluem os drivers para ST-Link e J-Link, essenciais para a depuração de dispositivos STM32.
Os seguintes arquivos devem ser criados no diretório raiz do projeto para configurar o ambiente de build e debug no VSCode:
app$ tree .vscode
.vscode
├── launch.json
├── settings.json
└── tasks.json
└── extensions.json
3.1. Arquivo extensions.json
Este arquivo recomenda automaticamente as extensões essenciais do Visual Studio Code para configurar o ambiente de desenvolvimento com Zephyr RTOS.
3.2 Arquivo settings.json
Este arquivo configura o ambiente de desenvolvimento do Visual Studio Code para projetos Zephyr RTOS.
Ele contém as seguintes configurações principais:
- Define o interpretador Python do ambiente virtual do Zephyr
- Configura as variáveis
ZEPHYR_BASE
eZEPHYR_SDK_INSTALL_DIR
- Configura caminhos para a toolchain ARM, OpenOCD e GDB do Zephyr SDK 0.17.2
- Habilita depuração de microcontroladores ARM
- Inclui automaticamente o arquivo de configuração do Zephyr (
autoconf.h
) - Define caminhos de busca para headers do projeto e do Zephyr
- Utiliza o banco de dados de compilação (
compile_commands.json
) gerado pelo West - Configura padrões C11 e C++20
- Desabilita modo preview de arquivos
- Aumenta histórico do terminal para 50.000 linhas
- Personaliza aparência de código inativo
3.3 Arquivo tasks.json
Este arquivo automatiza o processo de build, depuração e gravação de firmware utilizando o West, a ferramenta de gerenciamento de projetos do Zephyr.
3.4 Arquivo launch.json
Este arquivo de configuração define diferentes perfis de depuração para o microcontrolador utilizando as interfaces J-Link e ST-Link.
- BSP Linum
- Board Support Package (BSP) da placa Linum
- Inclui configuração padrão de hardware (DTS), Kconfig e definições de pinagem
- Base para as customizações feitas via overlays no projeto
Após compilar o projeto, o Zephyr gera arquivos úteis para verificar a configuração final do sistema. Estes arquivos ajudam a validar quais macros foram habilitadas e como os arquivos DTS + overlays foram combinados:
-
- Device Tree final gerado após processar todos os arquivos .dts, .dtsi e .overlay
- Útil para verificar a configuração completa do hardware
-
- Configuração final do Kconfig após merge de prj.conf + arquivos .conf extras (debug.conf, board overlays, etc)
- Contém todas as macros
CONFIG_*
ativas no projeto - Útil para verificar quais features e módulos foram habilitados
-
- Mapa de memória do binário compilado
- Mostra o tamanho e localização de funções, variáveis e símbolos na memória
- Útil para análise de uso de memória e otimização