14.1.1.1. Thiết lập môi trường phát triển

Bạn cần ba thứ trên máy chủ trước khi có thể biên dịch: một trình soạn thảo (VS Code được khuyên dùng vì trình gỡ lỗi tích hợp vào nó), một shell kiểu Linux (WSL trên Windows, native trên Linux/macOS), và kho lưu trữ OpenMV với SDK được ghim và giải nén.

14.1.1.1.1. VS Code

Bất kỳ trình soạn thảo nào cũng hoạt động cho phát triển firmware -- quá trình build chỉ là make, và trình gỡ lỗi trên phần cứng cũng chạy từ dòng lệnh. Visual Studio Code đơn giản là con đường dễ nhất: thiết lập Gỡ lỗi firmware tích hợp vào tiện ích mở rộng Cortex-Debug của nó, vì vậy khi cài đặt VS Code, phần còn lại của các trang này hoạt động ngay, cả build lẫn debug.

14.1.1.1.1.1. Cài đặt VS Code

  • Windows -- tải trình cài đặt từ code.visualstudio.com và chạy nó. Cài đặt VS Code trên Windows, không phải bên trong WSL; nó tích hợp với WSL qua tiện ích mở rộng WSL, chạy giao diện người dùng trên Windows trong khi trình biên dịch, tệp và trình gỡ lỗi nằm trong Linux.

  • macOS -- tải .zip từ code.visualstudio.com, giải nén và kéo Visual Studio Code.app vào /Applications. Hoặc brew install --cask visual-studio-code.

  • Linux -- cài đặt .deb / .rpm từ code.visualstudio.com (ví dụ: sudo apt install ./code_*.deb), hoặc sử dụng Snap/Flatpak của bản phân phối.

Các tiện ích mở rộng cần cài đặt (từ bảng Extensions, Ctrl+Shift+X):

  • C/C++ (ms-vscode.cpptools) -- Điều hướng mã nguồn C và IntelliSense.

  • Cortex-Debug (marus25.cortex-debug) -- Gỡ lỗi trên chip qua GDB và J-Link / máy chủ OpenOCD. Bắt buộc cho Gỡ lỗi firmware.

  • WSL (ms-vscode-remote.remote-wsl) -- Chỉ dành cho Windows. Cho phép VS Code mở thư mục bên trong bản phân phối WSL của bạn để trình soạn thảo, terminal, IntelliSense và Cortex-Debug đều hoạt động trong Linux. Cài đặt tiện ích mở rộng C/C++ và Cortex-Debug vào WSL host sau khi kết nối (VS Code nhắc nhở điều này).

14.1.1.1.2. Shell của máy chủ

Bạn cần môi trường Linux (x86-64) hoặc macOS (arm64) với git và một vài công cụ cơ bản. Chọn phần phù hợp với hệ điều hành của bạn.

14.1.1.1.2.1. Windows: cài đặt WSL

WSL chạy một userland Ubuntu thực sự trên Windows. Sau khi được cài đặt, mọi hướng dẫn tiếp theo trong hướng dẫn này đều giống hệt với Linux native.

  1. Mở PowerShell với quyền Administrator (nhấp chuột phải vào Start -> Terminal (Admin)).

  2. Cài đặt WSL với bản phân phối Ubuntu mặc định:

    wsl --install
    

    Thao tác này kích hoạt các tính năng Windows cần thiết, cài đặt nhân WSL 2 và cài đặt Ubuntu. Khởi động lại nếu được nhắc.

  3. Sau khi khởi động lại, Ubuntu khởi chạy và yêu cầu bạn tạo tên người dùng và mật khẩu UNIX. Tài khoản này độc lập với tài khoản Windows của bạn.

  4. Cập nhật bản phân phối:

    sudo apt update && sudo apt upgrade -y
    
  5. Xác nhận bạn đang dùng WSL 2 (bắt buộc -- WSL 1 không được hỗ trợ cho quy trình này). Trong PowerShell:

    wsl --list --verbose
    

    Cột VERSION phải ghi 2. Nếu ghi 1, hãy chuyển đổi nó:

    wsl --set-version Ubuntu 2
    

Mẹo

Làm việc bên trong hệ thống tệp Linux (~/ trong WSL), không phải dưới /mnt/c/. Build trên ổ đĩa được gắn kết Windows chậm hơn đáng kể và có thể gây ra các vấn đề về quyền tệp và kết thúc dòng. Clone kho lưu trữ vào thư mục home WSL của bạn.

Để mở dự án sau này: khởi chạy Ubuntu từ menu Start để có shell, hoặc từ VS Code trên Windows nhấn Ctrl+Shift+P -> WSL: Connect to WSL, sau đó File -> Open Folder và chọn kho lưu trữ đã clone trong hệ thống tệp Linux.

14.1.1.1.2.2. Điều kiện tiên quyết cho Linux / WSL

SDK cung cấp trình biên dịch, vì vậy chỉ cần một số gói máy chủ:

sudo apt-get update
sudo apt-get install git build-essential

14.1.1.1.2.3. Điều kiện tiên quyết cho macOS

Build native được hỗ trợ trên macOS Apple-silicon (arm64) mà thôi. Sử dụng Homebrew

brew install bash make coreutils

(Mac Intel không phải là máy chủ build native được hỗ trợ -- hãy sử dụng Docker build từ Biên dịch firmware hoặc một máy ảo Linux.)

14.1.1.1.3. Lấy mã nguồn

Clone kho lưu trữ với tất cả các submodule (MicroPython, CMSIS, driver nhà cung cấp, v.v.):

git clone --recursive https://github.com/openmv/openmv.git
cd openmv

Clone đệ quy đầy đủ khá lớn. Để clone nông nhanh hơn:

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

Ghi chú

Khi build một bo mạch cụ thể, bạn có thể để make chỉ kéo các submodule của bo mạch đó:

make TARGET=<board> submodules

Lệnh git submodule update rõ ràng được hiển thị ở trên đã bao gồm mọi thứ, vì vậy bước này là tùy chọn.

14.1.1.1.4. Cài đặt OpenMV SDK

Từ thư mục gốc của kho lưu trữ, chạy lệnh cài đặt SDK một lần:

make sdk

Lệnh này tải xuống openmv-sdk-<version>-<os>-<arch>.tar.xz từ download.openmv.io, xác minh tổng kiểm tra SHA-256 của nó và giải nén vào ~/openmv-sdk-<version>/ (phiên bản được ghim bởi tệp SDK_VERSION của kho lưu trữ). Nó là idempotent -- chạy lại không làm gì nếu phiên bản đúng đã được cài đặt, và quá trình build thông thường sẽ dừng lại với thông báo "OpenMV SDK not found. Run 'make sdk' to install it." nếu thiếu hoặc sai phiên bản.

SDK bao gồm mọi thứ mà quá trình build và trình gỡ lỗi cần, tất cả được thêm tự động vào PATH bởi Makefile:

Thành phần

Mục đích

ARM GNU toolchain (arm-none-eabi-gcc 14.3)

Trình biên dịch, linker, arm-none-eabi-gdb cho gỡ lỗi

LLVM/clang

Được sử dụng cho các đối tượng được chọn trên một số cổng

CMake, GNU Make

Điều phối build cho các thư viện nhà cung cấp

Python (relocatable)

Script build, trợ giúp mpy-cross, ký, công cụ mô hình

STM32CubeProgrammer (STM32_Programmer_CLI)

Flashing SWD và luồng khôi phục STM32N6

ST Edge AI

Trình biên dịch mạng nơ-ron cho NPU STM32N6

dfu-util

Flashing USB DFU

gdbrunner

Trình khởi chạy máy chủ GDB của lệnh make debug (phần mềm Segger J-Link mà nó điều khiển là một cài đặt riêng biệt)

Cảnh báo

OpenMV N6 và OpenMV AE3 sử dụng nhân Cortex-M55 và yêu cầu GCC 14.3 trở lên. Quá trình build thực thi điều này cho các mục tiêu đó và dừng lại với lỗi "Upgrade to GCC 14.3+ for proper CM55 support" nếu tìm thấy arm-none-eabi-gcc cũ hơn trước SDK trên PATH. Toolchain SDK được tích hợp đã đáp ứng yêu cầu này; lỗi có nghĩa là một toolchain khác, cũ hơn đang che khuất nó.