This shows you the differences between two versions of the page.
si:laboratoare:01 [2023/10/02 20:52] dan.tudose [Windows] |
si:laboratoare:01 [2024/09/24 19:49] (current) florin.stancu [Compilarea și rularea] |
||
---|---|---|---|
Line 20: | Line 20: | ||
==== Linux ==== | ==== Linux ==== | ||
- | Dacă rulați pe un sistem cu Linux nativ, continuați de la pasul [[01#compilarea_si_incarcarea_pe_placuta|Compilarea și încărcarea pe placă]]. | + | Dacă rulați pe un sistem cu Linux nativ, continuați de la pasul [[01#compilarea_si_incarcarea_pe_placa|Compilarea și încărcarea pe placă]]. |
==== Windows ==== | ==== Windows ==== | ||
Line 78: | Line 78: | ||
<code> | <code> | ||
mkdir ~/nuttxspace && cd ~/nuttxspace | mkdir ~/nuttxspace && cd ~/nuttxspace | ||
- | git clone https://github.com/apache/incubator-nuttx.git nuttx | + | git clone --branch=nuttx-12.5.1 https://github.com/apache/incubator-nuttx.git nuttx |
- | git clone https://github.com/apache/incubator-nuttx-apps.git apps | + | git clone --branch=nuttx-12.5.1 https://github.com/apache/incubator-nuttx-apps.git apps |
</code> | </code> | ||
Line 105: | Line 105: | ||
cd ~/nuttxspace/nuttx | cd ~/nuttxspace/nuttx | ||
./tools/configure.sh -l esp32-sparrow-kit:nsh | ./tools/configure.sh -l esp32-sparrow-kit:nsh | ||
- | make -j4 | + | make EXTRAFLAGS="-DESP32_IGNORE_CHIP_REVISION_CHECK" -j4 |
esptool.py erase_flash | esptool.py erase_flash | ||
make flash ESPTOOL_PORT=/dev/ttyUSB0 ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../esp-bins | make flash ESPTOOL_PORT=/dev/ttyUSB0 ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../esp-bins | ||
</code> | </code> | ||
- | În functie de tipul de plăcuță pe care rulați, este posibil să fie nevoie să apăsați butonul de ''BOOT'' (''IO0'') atunci când încărcați NuttX. Astfel, plăcuța intră în modul de "Download" - în mod normal, plăcuța este în starea de "Boot". Butonul trebuie apăsat doar atunci când se încearcă stabilirea conexiunii cu firmware-ul de pe ESP32, așa cum se poate vedea mai jos: | + | <note warning> |
+ | Oficial, NuttX nu este garantat că funcționează pe revizii vechi ale chip-ului ESP32, și, din păcate, RTOS-ul va bloca rularea cu un PANIC, după cum puteți vedea în [[https://github.com/apache/nuttx/blob/c724ed51fbb36b3e65003e474a3b7517bb91e2e7/arch/xtensa/src/esp32/esp32_start.c#L235|codul sursă de aici]]. | ||
+ | |||
+ | Observăm că putem defini simbolul ''ESP32_IGNORE_CHIP_REVISION_CHECK'' pentru a trece peste această verificare, pe care îl putem insera prin variabla ''EXTRAFLAGS'' ca în exemplul de mai sus. Din păcate, acest workaround va trebui **MEREU** activat la compilare... așadar, **nu-l uitați**! | ||
+ | </note> | ||
+ | |||
+ | <hidden>Uneori, dacă se uită oricare din flaguri sau se configurează greșit proiectul (e.g., nu se pune argumentul cu tipul plăcii bun), compilarea NuttX va crăpa cu mesaje de eroare dubioase. Ca workaround de urgență (dacă nu merge un simplu ''make distclean'' și configure din nou), se recomandă ștergerea directoarelor ''nuttx'' și ''apps'' și re-descărcarea lor pentru a nu pierde timp cu depanarea în zadar... | ||
+ | </hidden> | ||
+ | |||
+ | În functie de tipul de placă pe care rulați, este posibil să fie nevoie să apăsați butonul de ''BOOT'' (''IO0'') atunci când încărcați NuttX. Astfel, placa intră în modul de "Download" - în mod normal, placa este în starea de "Boot". Butonul trebuie apăsat doar atunci când se încearcă stabilirea conexiunii cu firmware-ul de pe ESP32, așa cum se poate vedea mai jos: | ||
{{ :si:laboratoare:nuttx_download_mode.png |}} | {{ :si:laboratoare:nuttx_download_mode.png |}} | ||
- | Pentru a vă conecta la placuță veți folosi ''picocom /dev/ttyUSB0 -b 115200''. | + | Pentru a vă conecta la placă veți folosi ''picocom /dev/ttyUSB0 -b 115200''. |
În cazul în care sistemul de build nu detectează în mod automat calea către repo-ul de apps, aceasta poate fi specificată prin ''-a <path>''. Pentru toți parametri disponibili puteți folosi ''./tools/configure.sh -h''. Alternativ, calea către directorul de apps poate fi configurată prin ''CONFIG_APPSDIR''. | În cazul în care sistemul de build nu detectează în mod automat calea către repo-ul de apps, aceasta poate fi specificată prin ''-a <path>''. Pentru toți parametri disponibili puteți folosi ''./tools/configure.sh -h''. Alternativ, calea către directorul de apps poate fi configurată prin ''CONFIG_APPSDIR''. | ||
- | Dacă compilați pentru un alt tip de plăcuță ESP32 - pentru un modul WROOM, de exemplu - trebuie să folosiți ''./tools/configure.sh esp32-devkitc:nsh''. De asemenea, deoarece plăcuțele Sparrow sunt construite peste modulul WROVER, puteți să folosiți și ''./tools/configure.sh esp32-wrover-kit:nsh''. Însă în acest caz va trebui să configurați manual NuttX-ul prin ''make menuconfig'' astfel încât să aveți acces la componentele hardware adăugate pe Sparrow. | + | Dacă compilați pentru un alt tip de placă ESP32 - pentru un modul WROOM, de exemplu - trebuie să folosiți ''./tools/configure.sh esp32-devkitc:nsh''. De asemenea, deoarece plăcile Sparrow sunt construite peste modulul WROVER, puteți să folosiți și ''./tools/configure.sh esp32-wrover-kit:nsh''. Însă în acest caz va trebui să configurați manual NuttX-ul prin ''make menuconfig'' astfel încât să aveți acces la componentele hardware adăugate pe Sparrow. |
- | Încărcarea binarului pe plăcuță se poate face și prin ''esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 write_flash 0x1000 ../esp-bins/bootloader-esp32.bin 0x8000 ../esp-bins/partition-table-esp32.bin 0x10000 nuttx.bin''. | + | Încărcarea binarului pe placă se poate face și prin ''esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 write_flash 0x1000 ../esp-bins/bootloader-esp32.bin 0x8000 ../esp-bins/partition-table-esp32.bin 0x10000 nuttx.bin''. |
Dacă nu aveți erori, ar trebui să vă apară un log asemănător cu cel de mai jos: | Dacă nu aveți erori, ar trebui să vă apară un log asemănător cu cel de mai jos: | ||
Line 132: | Line 141: | ||
===== Exerciții ===== | ===== Exerciții ===== | ||
- | **1.** Folosind sistemul de build al NuttX, activați compilarea aplicației "Hello, World!". Codul sursă îl puteți găsi în ''apps/examples/hello''. Odată încărcat pe plăcuță, rulați aplicația din linie de comandă. | + | **1.** Folosind sistemul de build al NuttX, activați compilarea aplicației "Hello, World!". Codul sursă îl puteți găsi în ''apps/examples/hello''. Odată încărcat pe placă, rulați aplicația din linie de comandă. |
<note tip> | <note tip> |