Differences

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

Link to this comparison view

si:laboratoare:2025:01 [2025/10/06 17:24]
mihnea.dinica update bonus
si:laboratoare:2025:01 [2025/10/28 18:30] (current)
andreea.miu [Instalarea pachetelor lipsă]
Line 37: Line 37:
 ==== MacOS ==== ==== MacOS ====
  
-Pentru a rula pe MacOSurmați tutorialul de [[https://github.com/robertalexa2000/nuttx-esp32-docs/blob/si_labs/bringup/macos_tutorial.md|aici]].+Instalați pachetele necesareasigurați-vă că aveți [[https://brew.sh/|Homebrew]] în sistem. 
 +<​code>​ 
 +pip install esptool 
 +brew update 
 +brew install x86_64-elf-gcc u-boot-tools bash picocom 
 +</​code>​ 
 + 
 +Clonați repo-ul și instalați Kconfig-frontends compatibile cu MacOS: 
 +<​code>​ 
 +git clone https://​bitbucket.org/nuttx/​tools.git 
 +cd tools/​kconfig-frontends 
 +patch < ../kconfig-macos.diff -p 1 
 +./configure --enable-mconf --disable-shared --enable-static --disable-gconf --disable-qconf --disable-nconf 
 +make 
 +make install 
 +</​code>​ 
 + 
 +Descărcați [[https://docs.espressif.com/projects/esp-idf/en/latest/​esp32/​api-guides/​tools/​idf-tools.html#​xtensa-esp-elf|crosscompiler-ul pentru MacOS]] și adăgați-l în PATH. Eventual faceți această setare permanentă prin adăugarea în ~/.bashrc sau ~/.zshrc (nu uitați de ''​source''​ ulterior - pașii sunt similari cu instrucțiunile de Linux). 
 +<​code>​ 
 +export PATH=$PATH:/​path/​to/​xtensa-esp-elf/​bin 
 +</​code>​ 
 + 
 +Continuați cu Descărcarea repository-urilor. Urmăriți setul de instrucțiuni specifice MacOS.
  
 ===== Compilarea și încărcarea pe placă ===== ===== Compilarea și încărcarea pe placă =====
Line 56: Line 78:
 apt-get upgrade -y /* optional, realizeaza actualizarea intregului sistem */ apt-get upgrade -y /* optional, realizeaza actualizarea intregului sistem */
 apt-get install -y 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 chrony libusb-dev libusb-1.0.0-dev kconfig-frontends python3-pip apt-get install -y 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 chrony libusb-dev libusb-1.0.0-dev kconfig-frontends python3-pip
-pip3 install esptool pyserial+pip install esptool pyserial
 </​code>​ </​code>​
  
 +
 +<note tip>
 +In caz ca intampinati probleme cu instalarea **esptool** incercati sa utilizati **pipx**:
 +<​code>​
 +pipx upgrade esptool
 +pipx install --force esptool
 +echo '​export PATH="​$HOME/​.local/​bin:​$PATH"'​ >> ~/.bashrc
 +source ~/.bashrc
 +</​code>​
 +
 +Alternativ, puteti folosi un virtual environment,​ pe care il veti activa la fiecare reboot al masinii virtuale / host-ului (adaptati comanda cu calea dorita de voi):
 +<​code>​
 +python3 -m venv /​home/​user/​nuttxvenv
 +source /​home/​user/​nuttxvenv/​bin/​activate
 +pip install esptool pyserial
 +</​code>​
 +</​note>​
 ==== Descărcarea toolchain-ului ==== ==== Descărcarea toolchain-ului ====
  
Line 99: Line 138:
 make -j$(nproc) make -j$(nproc)
 </​code>​ </​code>​
- 
-În funcție de tipul de placă pe care rulați, este posibil să fie nevoie să apăsați un buton 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. În cazul smartwatch-ului nostru, aveți mai jos o poză atașată care vă arată ce rol au cele doua butoane disponibile pe carcasa: 
- 
-{{ :​si:​iot2025:​hacktor_buttons.jpg?​300 }} 
- 
-Dacă vrem să încărcăm NuttX pe un ESP32S3 (microcontroller-ul care stă la baza ceasului nostru), pentru a comuta din **Boot** in **Download** nu este suficient să apăsați un singur buton, ci trebuie să urmați o secvență de operații: ''​Țineți apăsat BOOT''​ -> ''​apăsați RESET **o singură dată**''​ -> ''​ridicați degetul de pe BOOT''​. Acum puteți să flash-uiți microcontroller-ul folosind comanda ''​make flash ESPTOOL_PORT=/​dev/​ttyACM0 ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../​esp32s3-bins''​. 
- 
-După ce ați terminat procesul de flash, este nevoie de încă un reset pentru a comuta înapoi din modul de **Download** in cel de **Boot**. 
- 
-Pentru a vă conecta la placă veți folosi ''​picocom /​dev/​ttyACM0 -b 115200''​. 
  
 <note important>​ <note important>​
Line 115: Line 144:
 ./​tools/​configure.sh -m hacktorwatch:​usbnsh ./​tools/​configure.sh -m hacktorwatch:​usbnsh
 make -j$(sysctl -n hw.ncpu) make -j$(sysctl -n hw.ncpu)
-make flash ESPTOOL_PORT=/​dev/​cu.usbmodem101 ​ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../​esp32s3-bins+make flash ESPTOOL_PORT=/​dev/​cu.usbmodem01 ​ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../​esp32s3-bins
 sudo picocom -b 115200 /​dev/​cu.usbmodem01 sudo picocom -b 115200 /​dev/​cu.usbmodem01
 </​code>​ </​code>​
  
-Observați flag-ul "​-m"​ și denumirea diferită a portului usb.+Observați flag-ul "​-m"​ și denumirea diferită a portului usb. Verificați cu ''​ls /​dev/​cu.*''​ specific ce port aveți (01 sau 2101 etc.).
 </​note>​ </​note>​
 +
 +În funcție de tipul de placă pe care rulați, este posibil să fie nevoie să apăsați un buton 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. În cazul smartwatch-ului nostru, aveți mai jos o poză atașată care vă arată ce rol au cele doua butoane disponibile pe carcasa:
 +
 +{{ :​si:​iot2025:​hacktor_buttons.jpg?​300 }}
 +
 +Dacă vrem să încărcăm NuttX pe un ESP32S3 (microcontroller-ul care stă la baza ceasului nostru), pentru a comuta din **Boot** in **Download** nu este suficient să apăsați un singur buton, ci trebuie să urmați o secvență de operații: ''​Țineți apăsat BOOT''​ -> ''​apăsați RESET **o singură dată**''​ -> ''​ridicați degetul de pe BOOT''​. Acum puteți să flash-uiți microcontroller-ul folosind comanda ''​make flash ESPTOOL_PORT=/​dev/​ttyACM0 ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../​esp32s3-bins''​.
 +
 +După ce ați terminat procesul de flash, este nevoie de încă un reset pentru a comuta înapoi din modul de **Download** in cel de **Boot**.
 +
 +Pentru a vă conecta la placă veți folosi ''​picocom /​dev/​ttyACM0 -b 115200''​. Apăsați ''​Enter''​ de 3 ori pentru a debloca (,) consola NSH!
  
 Î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''​.
Line 141: Line 180:
 </​note>​ </​note>​
  
-**2.** ​ Folosind ''​make menuconfig'',​ dezactivați aplicația "​Hello,​ World!"​ pe care ați activat-o la Exercițiul 1. Recompilați și reîncărcați sistemul de operare. Verificați dacă aplicația mai este disponibilă în linia de comandă a NuttX. Acum ștergeți fișierele de configurare și compilare folosind ''​make distclean''​. Apoi, reinițializați sistemul de build pentru placa Hacktor Watch și recompilați. Observați diferența dintre ''​make clean''​ și ''​make distclean''​ (așa cum este menționat în nota tip).+**2 (Bonus).**  Folosind ''​make menuconfig'',​ dezactivați aplicația "​Hello,​ World!"​ pe care ați activat-o la Exercițiul 1. Recompilați și reîncărcați sistemul de operare. Verificați dacă aplicația mai este disponibilă în linia de comandă a NuttX. Acum ștergeți fișierele de configurare și compilare folosind ''​make distclean''​. Apoi, reinițializați sistemul de build pentru placa Hacktor Watch și recompilați. Observați diferența dintre ''​make clean''​ și ''​make distclean''​ (așa cum este menționat în nota tip).
  
 <note tip> <note tip>
si/laboratoare/2025/01.1759760658.txt.gz · Last modified: 2025/10/06 17:24 by mihnea.dinica
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