Programando u-blox NINA-W106 com NuttX/WOKIWI - Network Support - WIFI
quinta-feira, 29 de setembro de 2022
Programando u-blox NINA-W106 com NuttX/WOKIWI - Network Support - WIFI
Programando e simulando u-blox NINA-W106 com NuttX/WOKWI
Programando e simulando u-blox NINA-W106 com NuttX/WOKWI
$sudo apt install \ bison flex gettext texinfo libncurses5-dev libncursesw5-dev \ gperf automake libtool pkg-config build-essential gperf genromfs \ libgmp-dev libmpc-dev libmpfr-dev libisl-dev binutils-dev libelf-dev \ libexpat-dev gcc-multilib g++-multilib picocom u-boot-tools util-linux
Nota 1: O NuttX utiliza um sistema de build semelhante ao do Kernel do Linux (https://www.kernel.org/doc/html/latest/kbuild/index.html). Ele utiliza o kconfig-frontends como seu sistema de configuração. O repositório tools.git é utilizado para instalar este pacote. Porém se você estiver usando o Ubuntu 19.10 ou mais recente, estas distribuições já contém o pacote, mas de qualquer forma, instale.$ sudo apt-get install kconfig-frontends
Nota 2: Outra dependência para o processo do NuttX com o ESP32 é o ESP-IDF (Espressif IoT Development Framework). Este framework é nativo do ESP e mantido pela Espressif. Ele compreende um conjunto de códigos como drivers, APIs, scripts, ferramental para compilar e fazer upload do firmware e o FreeRTOS customizado. Neste ponto, uma observação conceitual é muito importante, o NuttX não usa o FreeRTOS em nenhuma camada interna, apenas algumas ferramentas auxiliares que compõem o IDF serão utilizadas para geração do binário e gravação.
Download do NuttX
$ mkdir nuttx
$ cd nuttx
$ git clone https://github.com/apache/incubator-nuttx.git nuttx
$ git clone https://github.com/apache/incubator-nuttx-apps apps
O Ubuntu e o Debian ainda fornecem o Python 2.7 como o interpretador padrão, mas alguns
pacotes necessários podem estar faltando para distribuições mais recentes. Python 3 é
recomendado e pode ser instalado da seguinte maneira:
$ sudo apt-get install python3 python3-pip
python3-setuptool$sudo update-alternatives --install /usr/bin/python python /usr/bin/python3
Instale agora o ESP-IDF (ESP32 TOOLS, LIBS, ETC) manualmente
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-setup.html
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#get-started-get-esp-idf
osboxes@osboxes:~$ cd esp/
osboxes@osboxes:~/esp$ cd esp-idf/
osboxes@osboxes:~/esp/esp-idf$ ./install.sh
Detecting the Python interpreter
Checking "python" ...
/home/osboxes/esp/esp-idf/tools/detect_python.sh: line 16: python: command not found
Checking "python3" ...
Python 3.8.5
"python3" has been detected
Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, xtensa-esp32s3-elf, riscv32-esp-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32
Installing xtensa-esp32-elf@esp-2020r3-8.4.0
Downloading xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz to /home/osboxes/.espressif/dist/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz.tmp
Done
Extracting /home/osboxes/.espressif/dist/xtensa-esp32-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz to /home/osboxes/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0
Installing xtensa-esp32s2-elf@esp-2020r3-8.4.0
Downloading xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz to /home/osboxes/.espressif/dist/xtensa-esp32s2-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz.tmp
Done
.
.
.
$cd nuttx
$make -C tools/esp32/ ${HOME}/esp/esp-idf
Após a instalação do IDF, ou caso já possua o IDF instalado, execute oseguinte comando para ativar o ambiente virtual que foi configurado nainstalação. Sempre que for realizar o build do NuttX, será necessárioativar este ambiente.$. ${HOME}/esp/esp-idf/export.sh
No presente momento, o NuttX utiliza 2 binários gerados através doIDF: o bootloader e a tabela de partição. Ainda dentro do diretórionuttx/, faça o download destes binários pré configurados:
Mantenha-se no diretório do NuttX e execute o script de configuração para criar um arquivo de configuração para o ESP32.
Este binário não tem os cabeçalhos com as informações que o bootloader do ESP32 espera encontrar, então ele deve ser removido:
$ rm nuttx.bin
E um novo binário deverá ser gerado a partir do arquivo ELF chamado “nuttx”. Para isso, é necessário usar o script esptool.py para gerar este arquivo:
esptool.py --chip esp32 elf2image --flash_mode dio --flash_size 4mb -o ./nuttx.bin nuttx
$ make menuconfig
.config - NuttX/x86_64 Configuration────────────────────────────────────────────────────────────────────────────────────┌───────────────────────── NuttX/x86_64 Configuration ──────────────────────────┐│ Arrow keys navigate the menu. <Enter> selects submenus ---> (or empty ││ submenus ----). Highlighted letters are hotkeys. Pressing <Y> includes, ││ <N> excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> for ││ Help, </> for Search. Legend: [*] built-in [ ] excluded <M> module < > ││ ┌───────────────────────────────────────────────────────────────────────────┐ ││ │ Build Setup ---> │ ││ │ System Type ---> │ ││ │ Board Selection ---> │ ││ │ RTOS Features ---> │ ││ │ Device Drivers ---> │ ││ │ Networking Support ---> │ ││ │ Crypto API ---> │ ││ │ File Systems ---> │ ││ │ Graphics Support ---> │ ││ │ Memory Management ---> │ ││ │ Audio Support ---> │ ││ │ Video Support ---> │ ││ │ Wireless Support ---> │ ││ │ Binary Loader ---> │ ││ │ Library Routines ---> │ ││ │ Open Asymmetric Multi Processing ---> │ ││ │ Application Configuration ---> │ ││ └───────────────────────────────────────────────────────────────────────────┘ │├───────────────────────────────────────────────────────────────────────────────┤│ <Select> < Exit > < Help > < Save > < Load > │└───────────────────────────────────────────────────────────────────────────────┘Make menuconfig customiza o que deseja adicionar/retirar na placa. Por exemplo, permite adicionar os drivers de um determinado periférico, adicionar mensagens de debug, etc.
Após compilar, será gerado um BIN, o mesmo deve ser gravado no UBLOX NINA W106, via FLASHTOOLS, junto com partitions.bin e bootloader.bin.
Pode também ser utilizado esptools
TESTANDO NO U-BLOX NINA W106Abra então o TERATERM (115200,N,8.1)
- Create a new project on wokwi
- Click inside the code editor, press "F1" and choose "Load custom board file..."
- Select the directory that contains the board definition files (board.json and board.svg)
- The board should load into Wokwi. Check the browser JavaScript console for any error messages.
- Paste the following code into the diagram.json file:{{"version": 1, "author": "Miguel Alexandre Wisintainer", "editor": "wokwi", "serialMonitor": { "display": "terminal" }, "parts": [ { "id": "esp", "type": "wokwi-custom-board" } ], "connections": [ [ "esp:TX0", "$serialMonitor:RX", "" ], [ "esp:RX0", "$serialMonitor:TX", "" ] ]}
Sobre a SMARTCORE
Simulação NuttX no ESP32 com WOKWI - APP Leds
Simulação NuttX no ESP32 com WOKWI - APP Leds
A proposta deste artigo é demonstrar como é possível simular o sistema operacional NuttX em um ambiente virtual chamado WOKWI, utilizando como testes o ESP32. O APP do NuttX a ser testado será o leds, o mesmo fará com que um LED pisque na frequência de 1Hz, já embarcado no GPIO 2 do ESP32.