Skip to main content

设置 reCamera Pro 交叉编译 SDK

本指南使用 reCamera Pro 交叉编译 SDK 在 Linux PC 或 WSL 上构建一个小型 C++ 程序,然后在 reCamera Pro 上运行。你将安装编译器和目标库,构建示例,检查它是 ARM 64 位程序,并将其复制到相机上。

此 SDK 适用于搭载 Rockchip RV1126B 处理器的 reCamera Pro。它不适用于 SG2002/RISC-V reCamera。

你需要准备什么​

  • 运行量产固件的 reCamera Pro
  • 一台 Linux PC,或安装了 WSL 2 和 Ubuntu 的 Windows PC
  • 主机可以访问 GitHub Releases 的网络,用于下载 SDK 资源(安装后约 2.5 GB)
  • CMake、Ninja 和 pkg-config
  • 用于部署步骤的 reCamera Pro SSH 访问权限

该 SDK 以 64 位 ARM Linux 为目标,提供 Rockchip GCC 12.4.0 编译器、目标 sysroot、GStreamer 1.22 开发文件以及 RKNN API/运行时 2.3.2。模型转换是单独进行的:在 x86_64 主机上使用 RKNN-Toolkit2 2.3.2 并设置 target_platform='rv1126b' 来转换 ONNX 模型。

1. 安装 SDK​

安装主机工具并克隆 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

下载并验证带版本号的编译器和 sysroot,然后加载 SDK 环境:

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

setup.sh 会将 SDK 资源安装到仓库的 toolchain/ 和 sysroot/ 目录中,并检查它们的 SHA-256 校验和。在网络连接较慢时,下载可能需要一些时间。在配置项目之前,每个新终端中都需要再次运行 source scripts/env.sh。

2. 构建随 SDK 提供的示例​

首先构建随附的冒烟测试示例。它会链接 RKNN Runtime、OpenCV 和 GStreamer,因此可以检查 SDK 是否能找到主要的目标库。

在仓库根目录下执行:

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

可执行文件会生成在 examples/sdk_smoke/build/ 下。如果 CMake 之前已经使用你的主机编译器配置过该构建目录,请删除该构建目录,并在使用 SDK 构建之前重新配置。

3. 构建一个小型 C++ 应用​

你可以在自己的 CMake 项目中使用该 SDK。创建一个与 recamera_pro_toolchain 同级的项目目录:

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

创建 main.cpp:

#include <iostream>

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

创建 CMakeLists.txt:

cmake_minimum_required(VERSION 3.16)
project(my_recamera_app LANGUAGES CXX)

add_executable(my_recamera_app main.cpp)

加载 SDK 环境,然后进行配置和构建。如果你在其他位置克隆了 SDK,请替换下面的路径:

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

该环境会为 CMake 选择 aarch64 交叉编译器和目标 sysroot。对于使用 RKNN 或 GStreamer 的项目,请参考 SDK 仓库中的 CMake 集成示例 来查找并链接目标库。

4. 检查可执行文件​

在将程序复制到相机之前,先确认它是为正确的处理器构建的,并且不包含主机路径:

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'

检查以下结果:

  • file 报告为 ARM aarch64,而不是 x86-64 或 RISC-V。
  • ELF 解释器为 /lib/ld-linux-aarch64.so.1。
  • 任意运行时搜索路径指向 /oem/usr/lib;其中不包含主机或 WSL 路径。

SDK 的工具链文件会将设备运行时路径设置为 /oem/usr/lib。不要向可执行文件中添加来自主机、SDK 目录或构建目录的绝对路径。

5. 复制到 reCamera Pro 并运行​

通过 USB 虚拟以太网或局域网连接到相机。如果你的相机使用不同的 IP 地址,请将下面的 192.168.42.1 替换为实际地址。为程序创建一个目录并复制可执行文件:

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

在相机上运行它:

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

预期输出:

Hello from reCamera Pro

只复制你的应用程序及其所需的资源文件。不要覆盖 /oem/usr/lib/librknnrt.so;SDK 中的 RKNN Runtime 仅用于链接,并已与量产设备运行时进行过比对。

故障排查​

现象需要检查的内容
setup.sh 无法下载某个资源检查主机的网络连接并重新运行 ./scripts/setup.sh。该脚本会验证已下载文件的校验和。
CMake 选择了主机编译器在同一终端中运行 source scripts/env.sh,使用一个全新的构建目录,然后重新配置。
pkg-config 找到的是主机库在配置之前加载 scripts/env.sh;它会将 pkg-config 指向 SDK 的 sysroot。
设备上出现 Exec format error对可执行文件运行 file,确认其报告为 ARM aarch64。
运行时缺少某个共享库检查可执行文件的 NEEDED 条目,并确认所需库存在于设备固件中。不要将主机库复制到设备上。

SDK 的 sysroot 使用的 libc 提供了直到 GLIBC 2.38 的符号。在宣称与不同固件版本兼容之前,请检查固件 ABI。成功的交叉构建仅确认编译和链接通过;它并不验证你的应用在相机上的运行情况、模型精度或运行时行为。

后续步骤​

技术支持与产品讨论​

感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中体验顺畅。你可以选择最适合自己的支持渠道。

Loading Comments...