Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>
si/laboratoare/01.1696269138.txt.gz · Last modified: 2023/10/02 20:52 by dan.tudose
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0