14.1.1.1. Configurar o ambiente de desenvolvimento¶
São necessárias três coisas no anfitrião antes de poder compilar: um editor (o VS Code é recomendado porque o depurador se integra nele), uma shell do tipo Linux (WSL no Windows, nativa em Linux/macOS) e o repositório OpenMV com o SDK definido extraído.
14.1.1.1.1. VS Code¶
Qualquer editor funciona para o desenvolvimento de firmware – a compilação é apenas make, e o depurador no hardware também é executado a partir da linha de comandos. O Visual Studio Code é simplesmente o caminho mais fácil: a configuração de Depuração do firmware integra-se na sua extensão Cortex-Debug, pelo que com o VS Code instalado o resto destas páginas funciona imediatamente, tanto na compilação como na depuração.
14.1.1.1.1.1. Instalar o VS Code¶
Windows – transferir o instalador de code.visualstudio.com e executá-lo. Instalar o VS Code no Windows, e não dentro do WSL; este integra-se com o WSL através da extensão WSL, executando a sua interface no Windows enquanto o compilador, os ficheiros e o depurador residem em Linux.
macOS – transferir o ficheiro
.zipde code.visualstudio.com, descomprimi-lo e arrastar Visual Studio Code.app para/Applications. Oubrew install --cask visual-studio-code.Linux – instalar o
.deb/.rpmde code.visualstudio.com (p. ex.sudo apt install ./code_*.deb), ou utilizar o Snap/Flatpak da distribuição.
Extensões a instalar (no painel de Extensões, Ctrl+Shift+X):
C/C++ (
ms-vscode.cpptools) – navegação em código-fonte C e IntelliSense.Cortex-Debug (
marus25.cortex-debug) – depuração no chip via GDB e um servidor J-Link / OpenOCD. Necessário para Depuração do firmware.WSL (
ms-vscode-remote.remote-wsl) – apenas para Windows. Permite ao VS Code abrir uma pasta dentro da sua distribuição WSL para que o editor, terminal, IntelliSense e Cortex-Debug funcionem todos em Linux. Instalar as extensões C/C++ e Cortex-Debug no anfitrião WSL após a ligação (o VS Code solicita isso).
14.1.1.1.2. Shell do anfitrião¶
É necessário um ambiente Linux (x86-64) ou macOS (arm64) com git e algumas ferramentas básicas. Escolha a secção correspondente ao seu sistema operativo.
14.1.1.1.2.1. Windows: instalar o WSL¶
O WSL executa um ambiente de utilizador Ubuntu genuíno no Windows. Após a instalação, cada instrução posterior neste guia é idêntica à do Linux nativo.
Abrir o PowerShell como Administrador (clique com o botão direito em Iniciar -> Terminal (Administrador)).
Instalar o WSL com a distribuição Ubuntu predefinida:
wsl --installIsto ativa as funcionalidades Windows necessárias, instala o kernel do WSL 2 e instala o Ubuntu. Reiniciar se solicitado.
Após o reinício, o Ubuntu inicia e solicita a criação de um nome de utilizador e senha UNIX. Esta conta é independente da sua conta Windows.
Atualizar a distribuição:
sudo apt update && sudo apt upgrade -yConfirmar que está no WSL 2 (obrigatório – o WSL 1 não é suportado neste fluxo de trabalho). No PowerShell:
wsl --list --verboseA coluna
VERSIONdeve indicar2. Se indicar1, convertê-la:wsl --set-version Ubuntu 2
Dica
Trabalhe dentro do sistema de ficheiros Linux (~/ no WSL), não em /mnt/c/. Compilar na unidade montada pelo Windows é dramaticamente mais lento e pode causar problemas de permissões de ficheiros e de terminações de linha. Clone o repositório para o seu diretório home no WSL.
Para abrir o projeto mais tarde: inicie o Ubuntu no menu Iniciar para obter uma shell, ou no VS Code no Windows prima Ctrl+Shift+P -> WSL: Connect to WSL, depois Ficheiro -> Abrir Pasta e selecione o repositório clonado no sistema de ficheiros Linux.
14.1.1.1.2.2. Pré-requisitos Linux / WSL¶
O SDK fornece o compilador, pelo que apenas é necessário um pequeno conjunto de pacotes do anfitrião:
sudo apt-get update
sudo apt-get install git build-essential
14.1.1.1.2.3. Pré-requisitos macOS¶
A compilação nativa é suportada apenas em macOS Apple silicon (arm64). Usando Homebrew
brew install bash make coreutils
(Os Macs Intel não são um anfitrião de compilação nativa suportado – utilize a compilação Docker de Compilar o firmware ou uma VM Linux.)
14.1.1.1.3. Obter o código-fonte¶
Clonar o repositório com todos os submódulos (MicroPython, CMSIS, drivers de fornecedor, etc.):
git clone --recursive https://github.com/openmv/openmv.git
cd openmv
Um clone recursivo completo é grande. Para um clone superficial mais rápido:
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
Nota
Ao compilar uma placa específica, pode deixar o make obter apenas os submódulos dessa placa:
make TARGET=<board> submodules
O git submodule update explícito mostrado acima já cobre tudo, pelo que este passo é opcional.
14.1.1.1.4. Instalar o SDK OpenMV¶
Na raiz do repositório, executar a instalação única do SDK:
make sdk
Isto transfere openmv-sdk-<version>-<os>-<arch>.tar.xz de download.openmv.io, verifica o seu checksum SHA-256 e extrai-o para ~/openmv-sdk-<version>/ (a versão está definida pelo ficheiro SDK_VERSION do repositório). É idempotente – executá-lo novamente não faz nada se a versão correta já estiver instalada, e a compilação regular é interrompida com «OpenMV SDK not found. Run “make sdk” to install it.» se estiver em falta ou for a versão errada.
O SDK inclui tudo o que a compilação e o depurador necessitam, tudo adicionado automaticamente ao PATH pelo Makefile:
Componente |
Propósito |
|---|---|
Toolchain ARM GNU ( |
Compilador, linker, |
LLVM/clang |
Utilizado para objetos selecionados em algumas portas |
CMake, GNU Make |
Orquestração da compilação para bibliotecas de fornecedor |
Python (relocável) |
Scripts de compilação, auxiliares |
STM32CubeProgrammer ( |
Flash por SWD e o fluxo de recuperação do STM32N6 |
ST Edge AI |
Compilador de rede neuronal para o NPU do STM32N6 |
|
Flash USB DFU |
|
O lançador do servidor GDB para o alvo |
Aviso
O OpenMV N6 e o OpenMV AE3 utilizam núcleos Cortex-M55 e requerem GCC 14.3 ou mais recente. A compilação impõe este requisito para esses alvos e é interrompida com um erro «Upgrade to GCC 14.3+ for proper CM55 support» se for encontrado um arm-none-eabi-gcc mais antigo antes do SDK no PATH. A toolchain do SDK incluída já satisfaz este requisito; o erro significa que uma toolchain diferente e mais antiga está a sobrepor-se a ela.