ÍNDICE DE CONTEÚDO
- Primeiros Passos com o ESP32 e o NuttX
- Blink LED no ESP32 com o RTOS NuttX
- LVGL no ESP32 com o RTOS Apache NuttX
Este artigo compõe a série “Primeiros Passos com o ESP32 e o NuttX”. Uma série cujo objetivo é apresentar um overview do Sistema Operacional NuttX e prover instruções para utilizar o NuttX no ESP32.
A primeira parte da série mostrou como fazer a preparação do ambiente, a compilação e o building do Sistema Operacional (NuttX) até o upload do firmware para o SoC (ESP32).
Esta é a segunda parte e irá demonstrar como executar o famoso “Hello World” do mundo de Sistemas Embarcados, isto é, uma aplicação que pisca um LED. A placa utilizada aqui é um DevKit v1 e será utilizado o próprio LED embutido por conveniência. Caso o seu DevKit não venha com um LED embutido, basta conectar um LED ao pino 2 como será mostrado em breve na execução.
Adição do LED
A partir do diretório do nuttx, limpe a sua configuração atual, carregue a configuração para o ESP32 com o nsh (NuttX shell) e por fim entre no menu de configuração através do comando a seguir:
1 2 3 4 |
cd ~/nuttxspace/nuttx make distclean ./tools/configure.sh esp32-devkitc:nsh make menuconfig |
Para adicionar o driver para o LED, navegue em Device Drivers->LED Support e selecione LED Driver e Generic Lower Half LED Driver (pressione y). Neste passo você está adicionando o driver para o LED.
Retorne ao menu inicial através de ‘Exit’. Basta usar as setas laterais e ‘Enter’.
Por fim, para adicionar o exemplo navegue em Application Configuration->Examples e selecione Led Driver Example.
Saia do menu através de “Exit” e salve a configuração.
Building e Download
Caso você não tenha adicionados os paths dos binários do compilador e do esptool à variável de ambiente PATH permanentemente como sugerido na primeiro post da série, execute os seguintes comandos para carregar estes paths:
1 2 |
export PATH=$PATH:/opt/xtensa/xtensa-esp32-elf/bin export PATH=$PATH:/home/<user>/.local/bin |
Finalmente, limpe os binários gerados anteriormente, conecte o DevKit ao computador e faça o build e o download dos binários para o ESP32 através do seguinte comando:
1 2 |
make clean make download ESPTOOL_PORT=/dev/ttyUSB0 |
OBS: Ajuste a porta USB conforme a sua configuração. Caso esta seja a primeira vez que esteja fazendo o download de binários para o ESP32, indique o diretório do bootloader e da tabela de partição conforme demonstrado no primeiro post da série.
Execução do exemplo
Acesse o terminal serial e execute o comando leds. Este comando irá executar o exemplo selecionado!
1 |
sudo picocom /dev/ttyUSB0 -b 115200 |
Parabéns! A partir de agora você já deve estar vendo o LED piscar!
Caso queira retornar ao terminal, reset o ESP32 pressionando o botão EN do DevKit.
Caso não possua um LED embutido, conecte um LED ao pino 2 e associe um resistor em série (entre 100 Ω a 1 k Ω):
Recomendo a minha palestra no Embarcados Experience 2020, onde apresentei mais detalhes sobre o NuttX e ESP32:
Boa noite. Também estou com o problema da reinicialização. Procurei no menuconfig e não achei onde desabilitar o watchdog . Também tentei mudar para o modelo do meu ES32 que é o WrOOM32, mas não adiantou. Desde já agradeço a atenção e parabenizo pelo trabalho. Segue abaixo o log do terminal: NuttShell (NSH) NuttX-10.0.1 nsh> [1B][Kets Jun 8 2016 00:22:57 rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:4 load:0x3fff0034,len:6972 load:0x40078000,len:13072 load:0x40080400,len:3896 entry 0x40080688 [1B][0;32mI (29) boot: ESP-IDF v4.1-dirty 2nd stage bootloader[1B][0m [1B][0;32mI (29) boot: compile time 22:24:58[1B][0m [1B][0;32mI (29) boot: chip revision: 1[1B][0m [1B][0;32mI (32) boot_comm: chip revision: 1,… Leia mais »
Caro Pedro,
este watchdog não foi configurado no menuconfig do NuttX, ele foi configurado no bootloader.
Portanto você tem duas opções:
Fiz o procedimento acima, o led pisca, mas a placa logo reseta. E fica dando reset em looping. Alguma ideia?
Olá Junior, certamente é porque o seu bootloader está com o watchdog ativado.
Podemos confirmar isso através da causa do reset. E essa causa é impressa durante o reset.
Vc pode me enviar o log do reset?
Se for mesmo este o caso, vá no primeiro post da série e atualize o bootloader com o binário que já vem com este watchdog desabilitado.
Aos leitores profissionais que possam sentir curiosidade por utilizar o NuttX, não o façam.
As ultimas versões estão fundamentalmente quebradas, os howtos estão desactualizados
A lista de email esta praticamente morta….
é uma pena porque até era uma conceito muito interessante.. um posix em ponto pequeno…
Caro Antonio, O NuttX é o resultado de um trabalho coletivo de contribuidores individuais independentes e empresas que tem dedicado muito esforço em construir um RTOS de qualidade. Porém, ainda somos um grupo pequeno para endereçar todas as demandas. Entretanto, justamente para melhorar a experiência, algumas decisões foram tomadas. Por exemplo, atualmente o NuttX está sendo incubado pela Apache Foundation aonde está “amadurecendo” cada dia mais. Toda a documentação do NuttX está sendo migrada e atualizada para https://nuttx.apache.org/docs/latest/index.html. Em relação a lista de email, ela está atualmente ativa e qualquer um pode se inscrever enviando um email para: dev-subscribe@nuttx.apache.org. É… Leia mais »
Toda mudança exige coragem e força de vontade. Com o NuttX não é diferente. O sistema mudou muito nos últimos meses, depois que o projeto passou a ser incubado na Apache Foundation. É natural que algumas coisas se quebrem, mas o cenário é bem diferente deste que o senhor Antonio Ferreira está mostrando. Qualquer pessoa que seguir os vídeo tutoriais que criei no YouTube (NuttX Channel) conseguirá fazer a maioria das coisas funcionarem. Algumas coisas mudaram de lugar, mas nada que as pessoas não consigam resolver se realmente tentarem. Talvez você está usando a lista antiga do NuttX, pois todos… Leia mais »