14.1.1.1. Настройка среды разработки¶
Перед компиляцией на хосте вам понадобятся три вещи: редактор (рекомендуется VS Code, поскольку в него встраивается отладчик), оболочка в стиле Linux (WSL в Windows, нативная в Linux/macOS) и репозиторий OpenMV с распакованным закреплённым SDK.
14.1.1.1.1. VS Code¶
Для разработки прошивки подойдёт любой редактор – сборка выполняется просто командой make, а аппаратный отладчик тоже запускается из командной строки. Visual Studio Code – это просто самый простой путь: настройка из Отладка прошивки встраивается в его расширение Cortex-Debug, поэтому с установленным VS Code остальные эти страницы работают сразу же, как для сборки, так и для отладки.
14.1.1.1.1.1. Установка VS Code¶
Windows – скачайте установщик с code.visualstudio.com и запустите его. Устанавливайте VS Code в Windows, а не внутри WSL; он интегрируется с WSL через расширение WSL, запуская свой интерфейс в Windows, тогда как компилятор, файлы и отладчик находятся в Linux.
macOS – скачайте
.zipс code.visualstudio.com, распакуйте его и перетащите Visual Studio Code.app в/Applications. Илиbrew install --cask visual-studio-code.Linux – установите
.deb/.rpmс code.visualstudio.com (например,sudo apt install ./code_*.deb) или используйте Snap/Flatpak вашего дистрибутива.
Расширения для установки (из панели Extensions, Ctrl+Shift+X):
C/C++ (
ms-vscode.cpptools) – навигация по исходному коду на C и IntelliSense.Cortex-Debug (
marus25.cortex-debug) – отладка на кристалле через GDB и сервер J-Link / OpenOCD. Требуется для Отладка прошивки.WSL (
ms-vscode-remote.remote-wsl) – только для Windows. Позволяет VS Code открыть папку внутри вашего дистрибутива WSL, чтобы редактор, терминал, IntelliSense и Cortex-Debug работали в Linux. После подключения установите расширения C/C++ и Cortex-Debug в хост WSL (VS Code предложит это сделать).
14.1.1.1.2. Оболочка хоста¶
Вам нужна среда Linux (x86-64) или macOS (arm64) с git и несколькими базовыми инструментами. Выберите раздел для вашей ОС.
14.1.1.1.2.1. Windows: установка WSL¶
WSL запускает настоящее пользовательское окружение Ubuntu в Windows. После его установки все последующие инструкции в этом руководстве идентичны нативному Linux.
Откройте PowerShell от имени администратора (щёлкните правой кнопкой по Пуску -> Terminal (Admin)).
Установите WSL с дистрибутивом Ubuntu по умолчанию:
wsl --installЭто включает необходимые компоненты Windows, устанавливает ядро WSL 2 и устанавливает Ubuntu. При запросе перезагрузитесь.
После перезагрузки Ubuntu запускается и предлагает создать имя пользователя и пароль UNIX. Эта учётная запись независима от вашей учётной записи Windows.
Обновите дистрибутив:
sudo apt update && sudo apt upgrade -yУбедитесь, что вы используете WSL 2 (это обязательно – WSL 1 не поддерживается для данного рабочего процесса). В PowerShell:
wsl --list --verboseВ столбце
VERSIONдолжно быть значение2. Если там1, преобразуйте его:wsl --set-version Ubuntu 2
Совет
Работайте внутри файловой системы Linux (~/ в WSL), а не в /mnt/c/. Сборка на диске, смонтированном из Windows, значительно медленнее и может вызвать проблемы с правами доступа к файлам и окончаниями строк. Клонируйте репозиторий в свой домашний каталог WSL.
Чтобы открыть проект позже: запустите Ubuntu из меню Пуск для получения оболочки или в VS Code в Windows нажмите Ctrl+Shift+P -> WSL: Connect to WSL, затем File -> Open Folder и выберите клонированный репозиторий в файловой системе Linux.
14.1.1.1.2.2. Требования для Linux / WSL¶
SDK предоставляет компилятор, поэтому требуется лишь несколько пакетов хоста:
sudo apt-get update
sudo apt-get install git build-essential
14.1.1.1.2.3. Требования для macOS¶
Нативная сборка поддерживается только на macOS с Apple-кремнием (arm64). С использованием Homebrew:
brew install bash make coreutils
(Mac на Intel не являются поддерживаемым хостом для нативной сборки – используйте сборку через Docker из Сборка прошивки или виртуальную машину Linux.)
14.1.1.1.3. Получение исходного кода¶
Клонируйте репозиторий со всеми подмодулями (MicroPython, CMSIS, драйверы поставщиков и т. д.):
git clone --recursive https://github.com/openmv/openmv.git
cd openmv
Полное рекурсивное клонирование занимает много места. Для более быстрого поверхностного клонирования:
git clone --depth=1 https://github.com/openmv/openmv.git
cd openmv
git submodule update --init --depth=1 --no-single-branch
git -C lib/micropython/ submodule update --init --depth=1
Примечание
При сборке конкретной платы вы можете вместо этого позволить make подтянуть подмодули только для этой платы:
make TARGET=<board> submodules
Явная команда git submodule update, показанная выше, уже охватывает всё, поэтому этот шаг необязателен.
14.1.1.1.4. Установка OpenMV SDK¶
Из корня репозитория выполните однократную установку SDK:
make sdk
Это загружает openmv-sdk-<version>-<os>-<arch>.tar.xz с download.openmv.io, проверяет его контрольную сумму SHA-256 и распаковывает в ~/openmv-sdk-<version>/ (версия закреплена файлом SDK_VERSION репозитория). Эта операция идемпотентна – повторный запуск не делает ничего, если уже установлена правильная версия, а обычная сборка прерывается с сообщением «OpenMV SDK not found. Run „make sdk“ to install it.», если SDK отсутствует или имеет неправильную версию.
SDK включает всё необходимое для сборки и отладки, и всё это автоматически добавляется в PATH через Makefile:
Компонент |
Назначение |
|---|---|
Инструментарий ARM GNU ( |
Компилятор, компоновщик, |
LLVM/clang |
Используется для отдельных объектов на некоторых портах |
CMake, GNU Make |
Оркестрация сборки для библиотек поставщиков |
Python (перемещаемый) |
Скрипты сборки, вспомогательные средства |
STM32CubeProgrammer ( |
Прошивка по SWD и процесс восстановления STM32N6 |
ST Edge AI |
Компилятор нейронных сетей для NPU STM32N6 |
|
Прошивка через USB DFU |
|
Запускатель сервера GDB для цели |
Предупреждение
OpenMV N6 и OpenMV AE3 используют ядра Cortex-M55 и требуют GCC 14.3 или новее. Сборка обеспечивает это для данных целей и прерывается с ошибкой «Upgrade to GCC 14.3+ for proper CM55 support», если более старый arm-none-eabi-gcc обнаруживается в PATH раньше, чем тот, что в SDK. Поставляемый инструментарий SDK уже удовлетворяет этому требованию; данная ошибка означает, что его заслоняет другой, более старый инструментарий.