Pular para o conteúdo principal

Configurar o SDK de Cross-Compilação do reCamera Pro

Este guia usa o SDK de cross-compilação do reCamera Pro para compilar um pequeno programa em C++ em um PC Linux ou no WSL e depois executá-lo no reCamera Pro. Você instalará o compilador e as bibliotecas de destino, compilará o exemplo, verificará que ele é um programa ARM de 64 bits e o copiará para a câmera.

Este SDK é para o reCamera Pro com o processador Rockchip RV1126B. Ele não funciona com o reCamera SG2002/RISC-V.

O que você precisa​

  • reCamera Pro executando o firmware de produção
  • Um PC Linux ou PC com Windows com WSL 2 e Ubuntu
  • Acesso de rede do host ao GitHub Releases para baixar os artefatos do SDK (cerca de 2,5 GB instalados)
  • CMake, Ninja e pkg-config
  • Acesso SSH ao reCamera Pro para a etapa de implantação

O SDK tem como alvo Linux ARM de 64 bits e fornece o compilador Rockchip GCC 12.4.0, o sysroot de destino, arquivos de desenvolvimento do GStreamer 1.22 e RKNN API/runtime 2.3.2. A conversão de modelos é separada: converta modelos ONNX em um host x86_64 com RKNN-Toolkit2 2.3.2 e target_platform='rv1126b'.

1. Instalar o SDK​

Instale as ferramentas de host e clone o repositório do SDK:

sudo apt update
sudo apt install -y git cmake ninja-build pkg-config
git clone https://github.com/Seeed-Projects/recamera_pro_toolchain.git
cd recamera_pro_toolchain

Baixe e verifique o compilador e o sysroot versionados e depois carregue o ambiente do SDK:

./scripts/setup.sh
source scripts/env.sh
bash scripts/check-sdk.sh

setup.sh instala os artefatos do SDK nos diretórios toolchain/ e sysroot/ do repositório e verifica seus checksums SHA-256. O download pode levar tempo em uma conexão lenta. Execute source scripts/env.sh novamente em cada novo terminal antes de configurar um projeto.

2. Compilar o exemplo incluído no SDK​

Primeiro, compile o teste de fumaça incluído. Ele faz link com RKNN Runtime, OpenCV e GStreamer, então verifica se o SDK consegue encontrar as principais bibliotecas de destino.

A partir da raiz do repositório:

source scripts/env.sh
cmake -S examples/sdk_smoke -B examples/sdk_smoke/build -G Ninja
cmake --build examples/sdk_smoke/build

O executável é gravado em examples/sdk_smoke/build/. Se o CMake tiver configurado anteriormente esse diretório de build com o compilador do host, remova esse diretório de build e configure-o novamente antes de compilar com o SDK.

3. Compilar uma pequena aplicação em C++​

Você pode usar o SDK com o seu próprio projeto CMake. Crie um diretório de projeto ao lado de recamera_pro_toolchain:

mkdir -p ~/my-recamerapro-app
cd ~/my-recamerapro-app

Crie main.cpp:

#include <iostream>

int main() {
std::cout << "Hello from reCamera Pro" << std::endl;
return 0;
}

Crie CMakeLists.txt:

cmake_minimum_required(VERSION 3.16)
project(my_recamera_app LANGUAGES CXX)

add_executable(my_recamera_app main.cpp)

Carregue o ambiente do SDK e depois configure e compile. Substitua o caminho abaixo se você clonou o SDK em outro lugar:

cd ~/my-recamerapro-app
source ~/recamera_pro_toolchain/scripts/env.sh
cmake -S . -B build -G Ninja
cmake --build build

O ambiente seleciona o cross-compiler aarch64 e o sysroot de destino para o CMake. Para projetos que usam RKNN ou GStreamer, siga o exemplo de integração com CMake do repositório do SDK para localizar e fazer link com as bibliotecas de destino.

4. Verificar o executável​

Antes de copiar o programa para a câmera, confirme que ele foi compilado para o processador correto e não contém um caminho do host:

file build/my_recamera_app
source ~/recamera_pro_toolchain/scripts/env.sh
"${CROSS_COMPILE}readelf" -l build/my_recamera_app | grep interpreter
"${CROSS_COMPILE}readelf" -d build/my_recamera_app | grep -E 'NEEDED|RPATH|RUNPATH'

Verifique estes resultados:

  • file relata ARM aarch64, não x86-64 ou RISC-V.
  • O interpretador ELF é /lib/ld-linux-aarch64.so.1.
  • Qualquer caminho de busca em tempo de execução aponta para /oem/usr/lib; ele não contém um caminho do host ou do WSL.

O arquivo de toolchain do SDK define o caminho de runtime do dispositivo como /oem/usr/lib. Não adicione um caminho absoluto do seu host, diretório do SDK ou diretório de build ao executável.

5. Copiar e executar no reCamera Pro​

Conecte-se à câmera via Ethernet virtual USB ou pela sua LAN. Substitua 192.168.42.1 abaixo se a sua câmera usar um endereço IP diferente. Crie um diretório para o programa e copie o executável:

ssh root@192.168.42.1 'mkdir -p /userdata/my-recamerapro-app'
scp build/my_recamera_app root@192.168.42.1:/userdata/my-recamerapro-app/
ssh root@192.168.42.1

Na câmera, execute-o:

cd /userdata/my-recamerapro-app
chmod +x my_recamera_app
./my_recamera_app

Saída esperada:

Hello from reCamera Pro

Copie apenas a sua aplicação e os artefatos necessários. Não sobrescreva /oem/usr/lib/librknnrt.so; o RKNN Runtime do SDK é usado para linkagem e foi verificado em relação ao runtime do dispositivo de produção.

Solução de problemas​

SintomaO que verificar
setup.sh não consegue baixar um artefatoVerifique a conexão de internet do host e execute ./scripts/setup.sh novamente. O script verifica os checksums baixados.
O CMake seleciona o compilador do hostExecute source scripts/env.sh no mesmo terminal, use um diretório de build novo e configure novamente.
pkg-config encontra bibliotecas do hostCarregue scripts/env.sh antes de configurar; ele aponta o pkg-config para o sysroot do SDK.
Exec format error no dispositivoExecute file no executável e confirme que ele relata ARM aarch64.
Uma biblioteca compartilhada está ausente em tempo de execuçãoVerifique as entradas NEEDED do executável e confirme que a biblioteca necessária existe no firmware do dispositivo. Não copie bibliotecas do host para o dispositivo.

O sysroot do SDK usa uma libc com símbolos até GLIBC 2.38. Verifique o ABI do firmware antes de declarar compatibilidade com uma versão de firmware diferente. Uma cross-compilação bem-sucedida confirma compilação e linkagem; ela não verifica a operação da câmera, a precisão do modelo ou o comportamento em tempo de execução da sua aplicação.

Próximas etapas​

Suporte Técnico e Discussão sobre o Produto​

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diversos tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Você pode escolher o canal que funcionar melhor para você.

Loading Comments...