14.1.1.2. Збірка мікропрограми¶
Маючи середовище з Налаштування середовища розробки, збірка образу мікропрограми складається з двох команд make та вибору TARGET.
14.1.1.2.1. Компіляція¶
Спочатку зберіть mpy-cross, інструмент хоста, що компілює заморожені модулі .py у байткод (зробіть це один раз і повторіть після оновлення MicroPython):
make -j$(nproc) -C lib/micropython/mpy-cross
Потім зберіть мікропрограму для плати, де <TARGET> – одне з імен з таблиці нижче:
make -j$(nproc) TARGET=<TARGET>
-j$(nproc) виконує паралельну збірку на всіх ядрах процесора (на macOS використовуйте -j$(sysctl -n hw.ncpu)). TARGET є обов’язковим – make без цілі завершується з помилкою «Invalid or no TARGET specified».
Повна перша збірка від початку до кінця:
make sdk
make -j$(nproc) -C lib/micropython/mpy-cross
make -j$(nproc) TARGET=OPENMV4
14.1.1.2.1.1. Підтримувані плати¶
Значення TARGET – це імена каталогів під boards/. Камери та їх кремнієва база:
Камера |
|
MCU |
Порт |
Ядро |
|---|---|---|---|---|
OpenMV Cam M4 |
|
STM32F427 |
stm32 |
Cortex-M4 |
OpenMV Cam M7 |
|
STM32F765 |
stm32 |
Cortex-M7 |
OpenMV Cam H7 |
|
STM32H743 |
stm32 |
Cortex-M7 |
OpenMV Cam H7 Plus |
|
STM32H743 + SDRAM |
stm32 |
Cortex-M7 |
OpenMV Pure Thermal |
|
STM32H743 + SDRAM |
stm32 |
Cortex-M7 |
OpenMV Cam N6 |
|
STM32N657 |
stm32 |
Cortex-M55 |
OpenMV Cam RT1062 |
|
MIMXRT1062 |
mimxrt |
Cortex-M7 |
OpenMV AE3 |
|
Alif Ensemble (dual M55) |
alif |
Cortex-M55 |
Arduino Portenta H7 |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Giga |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Nicla Vision |
|
STM32H747 |
stm32 |
Cortex-M7 |
Arduino Nano 33 BLE Sense |
|
nRF52840 |
nrf |
Cortex-M4 |
Arduino Nano RP2040 Connect |
|
RP2040 |
rp2 |
Cortex-M0+ |
Зберіть точний TARGET для вашого обладнання – наприклад, OPENMV4 для OpenMV Cam H7, OPENMV4P для H7 Plus, OPENMV_N6 для N6.
14.1.1.2.1.2. Вивід збірки¶
Усе для плати розміщується в build/<TARGET>/bin/. Для TARGET=OPENMV4 це build/OPENMV4/bin/, що містить:
Файл |
Опис |
|---|---|
|
Бінарний файл мікропрограми – прошивається через OpenMV IDE Tools -> Load Custom Firmware та за допомогою |
|
Мікропрограма з символами налагодження – файл, на який вказує налагоджувач |
|
Завантажувач (лише на платах з увімкненим завантажувачем) |
|
Комбінований образ завантажувача + мікропрограми |
|
Образ файлової системи ROM тільки для читання, що прошивається разом з мікропрограмою |
AE3 є двоядерним, тому він виробляє firmware_M55_HP.elf / firmware_M55_HP.bin (ядро високої продуктивності) та окремі firmware_M55_HE.elf / firmware_M55_HE.bin (ядро високої ефективності) плюс образ таблиці вмісту (TOC), що вказує завантажувальному ROM, де знаходиться образ кожного ядра.
14.1.1.2.1.3. Очищення та перезбірка¶
Збірки ізольовані для кожної плати в build/<TARGET>/. Щоб очистити збірку однієї плати:
make TARGET=<TARGET> clean
Немає distclean; clean завжди вимагає TARGET. mpy-cross є спільним для всіх плат – якщо ви оновлюєте MicroPython, перезберіть його теж:
make -C lib/micropython/mpy-cross clean
make -j$(nproc) -C lib/micropython/mpy-cross
Щоб отримати звіт про використання флеш-пам’яті/RAM у збірці:
make TARGET=<TARGET> size
14.1.1.2.1.4. Збірка в Docker (без ланцюжка інструментів хоста)¶
Якщо ви не хочете нічого встановлювати на хості (або знаходитесь на платформі без нативної збірки), використовуйте шлях Docker:
git clone --recursive https://github.com/openmv/openmv.git
cd openmv/docker
make TARGET=<TARGET>
Артефакти з’являються в openmv/docker/build/<TARGET>. Для повторних збірок існує інкрементальний шлях розробки, який монтує репозиторій за тим самим абсолютним шляхом всередині контейнера, що й на хості, тому шляхи до вихідного коду налагоджувача вирішуються без переналаштування:
make install-sdk
make build-firmware-dev TARGET=<TARGET>
Запустіть make clean-dev при зміні TARGET.
14.1.1.2.2. Параметри збірки¶
Поведінка збірки контролюється змінними, що передаються в командному рядку make, наприклад:
make -j$(nproc) TARGET=OPENMV4 DEBUG=1 V=1
Змінні, які використовує розробник мікропрограми:
Змінна |
За замовчуванням |
Ефект |
|---|---|---|
|
(обов’язкова) |
Плата для збірки. Вибирає |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Який налагоджувач використовують цілі |
Примітка
Існує багато інших змінних (драйвери камери/датчика, бездротові стеки, ML-бекенди, USB-стек, безпечне завантаження тощо), але вони встановлюються для кожної плати в boards/<TARGET>/board_config.mk і зазвичай не перевизначаються в командному рядку. Їх зміна є налаштуванням плати, а не звичайною збіркою для розробника – дивіться docs/boards.md у репозиторії мікропрограми.
Для повсякденної роботи вам потрібні лише TARGET (завжди), DEBUG=1 (завжди, коли ви збираєтесь налагоджувати, дивіться Налагодження мікропрограми), та іноді V=1.