14.1.1.1. Configurando o ambiente de desenvolvimento¶
Você precisa de três coisas no host antes de poder compilar: um editor (o VS Code é recomendado porque o depurador se integra a ele), um shell no estilo Linux (WSL no Windows, nativo no Linux/macOS) e o repositório OpenMV com o SDK fixado extraído.
14.1.1.1.1. VS Code¶
Qualquer editor serve para o desenvolvimento de firmware – a compilação é apenas make, e o depurador em hardware também roda pela linha de comando. O Visual Studio Code é simplesmente o caminho mais fácil: a configuração de Depurando o firmware se integra à sua extensão Cortex-Debug, então, com o VS Code instalado, o restante destas páginas funciona de imediato, tanto para compilar quanto para depurar.
14.1.1.1.1.1. Instalando o VS Code¶
Windows – baixe o instalador em code.visualstudio.com e execute-o. Instale o VS Code no Windows, não dentro do WSL; ele se integra ao WSL por meio da extensão WSL, executando sua interface no Windows enquanto o compilador, os arquivos e o depurador residem no Linux.
macOS – baixe o
.zipem code.visualstudio.com, descompacte-o e arraste o Visual Studio Code.app para/Applications. Ou usebrew install --cask visual-studio-code.Linux – instale o
.deb/.rpmde code.visualstudio.com (por exemplo,sudo apt install ./code_*.deb), ou use o Snap/Flatpak da sua distribuição.
Extensões a instalar (a partir do 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ária para Depurando o firmware.WSL (
ms-vscode-remote.remote-wsl) – somente Windows. Permite que o VS Code abra uma pasta dentro da sua distribuição WSL, de modo que o editor, o terminal, o IntelliSense e o Cortex-Debug operem todos no Linux. Instale as extensões C/C++ e Cortex-Debug no host WSL uma vez conectado (o VS Code solicita isso).
14.1.1.1.2. Shell do host¶
Você precisa de um ambiente Linux (x86-64) ou macOS (arm64) com git e algumas ferramentas básicas. Escolha a seção correspondente ao seu sistema operacional.
14.1.1.1.2.1. Windows: instale o WSL¶
O WSL executa um userland Ubuntu genuíno no Windows. Depois que ele estiver instalado, todas as instruções posteriores deste guia são idênticas às do Linux nativo.
Abra o PowerShell como Administrador (clique com o botão direito em Iniciar -> Terminal (Admin)).
Instale o WSL com a distribuição Ubuntu padrão:
wsl --installIsso habilita os recursos necessários do Windows, instala o kernel do WSL 2 e instala o Ubuntu. Reinicie se solicitado.
Após a reinicialização, o Ubuntu é iniciado e pede que você crie um nome de usuário e uma senha UNIX. Essa conta é independente da sua conta do Windows.
Atualize a distribuição:
sudo apt update && sudo apt upgrade -yConfirme que você está no WSL 2 (obrigatório – o WSL 1 não é compatível com este fluxo de trabalho). No PowerShell:
wsl --list --verboseA coluna
VERSIONdeve indicar2. Se indicar1, converta-a:wsl --set-version Ubuntu 2
Dica
Trabalhe dentro do sistema de arquivos Linux (~/ no WSL), não em /mnt/c/. Compilar no drive montado do Windows é drasticamente mais lento e pode causar problemas de permissão de arquivos e de fim de linha. Clone o repositório no seu diretório pessoal do WSL.
Para abrir o projeto depois: inicie o Ubuntu pelo menu Iniciar para obter um shell, ou, a partir do VS Code no Windows, pressione Ctrl+Shift+P -> WSL: Connect to WSL e então File -> Open Folder e selecione o repositório clonado no sistema de arquivos Linux.
14.1.1.1.2.2. Pré-requisitos do Linux / WSL¶
O SDK fornece o compilador, então apenas alguns poucos pacotes do host são necessários:
sudo apt-get update
sudo apt-get install git build-essential
14.1.1.1.2.3. Pré-requisitos do macOS¶
A compilação nativa é suportada apenas no macOS com Apple-silicon (arm64). Usando o Homebrew
brew install bash make coreutils
(Macs com processador Intel não são um host de compilação nativa suportado – use a compilação via Docker de Compilando o firmware ou uma VM Linux.)
14.1.1.1.3. Obtendo o código-fonte¶
Clone o repositório com todos os submódulos (MicroPython, CMSIS, drivers de fornecedores, etc.):
git clone --recursive https://github.com/openmv/openmv.git
cd openmv
Um clone recursivo completo é grande. Para um clone mais rápido e raso:
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, você pode, em vez disso, deixar o make baixar apenas os submódulos daquela placa:
make TARGET=<board> submodules
O comando explícito git submodule update mostrado acima já cobre tudo, então esta etapa é opcional.
14.1.1.1.4. Instalando o OpenMV SDK¶
A partir da raiz do repositório, execute a instalação única do SDK:
make sdk
Isso baixa openmv-sdk-<version>-<os>-<arch>.tar.xz de download.openmv.io, verifica seu checksum SHA-256 e o extrai em ~/openmv-sdk-<version>/ (a versão é fixada pelo arquivo 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 normal é abortada com “OpenMV SDK not found. Run ‘make sdk’ to install it.” caso ele esteja ausente ou na versão errada.
O SDK inclui tudo o que a compilação e o depurador precisam, tudo adicionado ao PATH automaticamente pelo Makefile:
Componente |
Finalidade |
|---|---|
Toolchain ARM GNU ( |
Compilador, linker e |
LLVM/clang |
Usado para objetos selecionados em algumas portas |
CMake, GNU Make |
Orquestração da compilação para bibliotecas de fornecedores |
Python (relocável) |
Scripts de compilação, utilitários |
STM32CubeProgrammer ( |
Gravação via SWD e o fluxo de recuperação do STM32N6 |
ST Edge AI |
Compilador de rede neural para a NPU do STM32N6 |
|
Gravação via USB DFU |
|
O lançador do servidor GDB do alvo |
Aviso
O OpenMV N6 e o OpenMV AE3 usam núcleos Cortex-M55 e exigem GCC 14.3 ou mais recente. A compilação impõe isso para esses alvos e é abortada com um erro “Upgrade to GCC 14.3+ for proper CM55 support” caso um arm-none-eabi-gcc mais antigo seja encontrado antes do SDK no PATH. A toolchain incluída no SDK já atende a esse requisito; o erro significa que uma toolchain diferente e mais antiga está se sobrepondo a ela.