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 .zip de code.visualstudio.com, descomprimi-lo e arrastar Visual Studio Code.app para /Applications. Ou brew install --cask visual-studio-code.

  • Linux – instalar o .deb / .rpm de 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.

  1. Abrir o PowerShell como Administrador (clique com o botão direito em Iniciar -> Terminal (Administrador)).

  2. Instalar o WSL com a distribuição Ubuntu predefinida:

    wsl --install
    

    Isto ativa as funcionalidades Windows necessárias, instala o kernel do WSL 2 e instala o Ubuntu. Reiniciar se solicitado.

  3. 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.

  4. Atualizar a distribuição:

    sudo apt update && sudo apt upgrade -y
    
  5. Confirmar que está no WSL 2 (obrigatório – o WSL 1 não é suportado neste fluxo de trabalho). No PowerShell:

    wsl --list --verbose
    

    A coluna VERSION deve indicar 2. Se indicar 1, 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 (arm-none-eabi-gcc 14.3)

Compilador, linker, arm-none-eabi-gdb para depuração

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 mpy-cross, assinatura, ferramentas de modelo

STM32CubeProgrammer (STM32_Programmer_CLI)

Flash por SWD e o fluxo de recuperação do STM32N6

ST Edge AI

Compilador de rede neuronal para o NPU do STM32N6

dfu-util

Flash USB DFU

gdbrunner

O lançador do servidor GDB para o alvo make debug (o software Segger J-Link que este utiliza é uma instalação separada)

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.