This shows you the differences between two versions of the page.
|
si:laboratoare:2025:01 [2025/10/06 17:24] mihnea.dinica |
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''. | ||