This shows you the differences between two versions of the page.
|
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 MacOS, urmați tutorialul de [[https://github.com/robertalexa2000/nuttx-esp32-docs/blob/si_labs/bringup/macos_tutorial.md|aici]]. | + | Instalați pachetele necesare, asiguraț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> | ||