Перше знайомство із Zephyr RTOS
За недавній час декілька разів зверталися HR з вакансією в якій одна з ключових вимог стосувалась досвіду роботи з операційною системою реального часу (ОСРЧ) Zephyr.
Колись мав завдання портувати код, написаний під Raspberry PI з операційною системою (ОС) Linux на мікроконтролер.
Зробив огляд можливих варіантів ОСРЧ, які мали певну відповідність POSIX. На той момент виявив можливі кандидати: NuttX, Riot, Zephyr.
Вирішив продовжувати експеременти із NuttX. Мені вдалось зкомпілювати перенесений код, програма стартувала, але через використання Protobuf швидко зупинялась, так як не вистачало оперативної пам’яті для динамічного створення об’єктів.
Наразі, змотивований тим, що є певний інтерес до потенційного роботодавця, вирішив ознайомитися з Zephyr RTOS.
З переліку підтримуваних плат виявив, що в наявності маю EPS32 і STM32F103C8T6. Остання, за браком USB-UART перехідника, була запрограмована на такий адаптер, не бажаючи її перепрошивати, зосередився на іншій.
Власне вона має назву NodeMCU-32 v3 (www.ai-thinker.com)і містить модуль ESP32-WROOM-32E.
Далі короткий опис інсталяції оточення для розробки та компіляції та запуску Helloworld та Blink аплікацій. Використовую ПК з Ubuntu.
1. Установка середовища розробки.
Дію згідно інструкцій:
docs.zephyrproject.org/...etting_started/index.html
... і отримую помилку:
Installing 'aarch64-zephyr-elf' toolchain ... ERROR: Toolchain download failed
тому пробую інший шлях встановлення SDK
2. Альтернативна установка SDK
Дію згідно інструкцій:
docs.zephyrproject.org/...lchain-zephyr-sdk-install
cd /home/$USER/ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.4/zephyr-sdk-0.17.4_linux-x86_64.tar.xz --no-check-certificate tar -xvf zephyr-sdk-0.17.4_linux-x86_64.tar.xz cd zephyr-sdk-0.17.4 ./setup.sh
Вибираю двічі yes і надаю права доступу до послідовного порта ПК:
sudo cp ~/zephyr-sdk-0.17.4/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d sudo udevadm control --reload
3. Компіляція Helloworld під цілеву платформу.
west boards | grep esp32
Виводить список, серед яких виглядає, що до наявної плати подібні yd_esp32 та esp32_devkitc
Далі підключаю до USB порта свого ПК плату з ESP та виконую дії:
cd ~/zephyrproject/zephyr west build -p always -b yd_esp32/esp32/procpu --sysbuild samples/hello_world west flash west espressif monitor
В консолі ПК бачу вивід.
Hello World! esp32_devkitc/esp32/procpu
4. Компіляція Blink під цілеву платформу.
Не ускладнюючи життя додаю до Helloworld мигання світлодіодом.
nano samples/hello_world/src/main.c
І копіюю кодом із:
indiantinker.bearblog.dev/...-esp32-setting-things-up
Цього разу компілю під іншу платку (хоча діод мигатиме на попередній теж, перевірено).
west build -p always -b esp32_devkitc_wroom/esp32/procpu --sysbuild samples/hello_world west flash west espressif monitor
Якщо під’єднати до GPIO25 світлодіод через обмежуючий струм опір, то буде видно його спалах з періодом 1с. Щоб знайти потрібний контакт плати, можна скористатись ресурсом:
docs.sunfounder.com/...ndix/esp32_wroom_32e.html
Орієнтовна ціна дешевих плат на Аliexpres, які підтримують Zephyr RTOS:
- STM32F103C8T6 original c8t6 — $1.38
- ESP32-C3 SuperMini — $1.73
- ESP-WROOM-32E — $3.68 (містить ESP32-WROOM-32E, плата на 38 контактів)
Посилання на мій GitHub стосовно цього допису:
1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарівРекомендую наступний крок — подивіться, як зробити out-of-tree проект з власним маніфестом і зробіть там той самий блінк. А потім додайте власний board root і знову спробйте блінк.