一 问题背景
瑞芯微RK3588等嵌入式板作为边缘端设备为算法模型的部署提供了便利,目前很多分类或好检测模型针对边缘端做了优化或量化,使得在边缘端也能达到实时稳定的识别和检测效果。
但嵌入式设备普遍的flash emmc不大,一般在32G左右,如果在嵌入式设备进行大量的编译操作很容易空间不足。通过交叉编译的方式避免文件包在嵌入式上编译,可以通过在x86 PC端等进行交叉编译,然后将编译好的文件夹拷贝到ARM设备平台上。
交叉编译是指在一台计算机上生成目标平台的可执行程序。通常情况下,我们在开发软件时会在同一平台上编译、运行程序,但有时候需要将程序部署到不同体系结构或操作系统的设备上运行,这就需要使用交叉编译工具链来生成适用于目标平台的可执行文件。常见的应用场景包括在开发嵌入式系统、移动应用程序或跨平台软件时进行交叉编译。
二 问题描述
需要将一个类似于CNStream的框架移植到RK3588板子上,跑通示例模型,其中需要用到交叉编译后的带ffmeg的opencv,读取示例MP4视频,作为模型算法输入数据,完成框架移植与测试。
三 环境准备
-linux系统:unbuntu18.04 X86_64
-rk3588软件包:rknn-toolkit2:1.5.2-cp36
-交叉编译工具:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu
-硬件平台:寒武纪MLU270
1 创建docker虚拟环境
docker创建命令如下:
docker run -it --privileged --name NewF3588 -p 35886:22 -v /home/lc/hang/rk3588:/workspace/hang/rk3588 rknn-toolkit2:1.5.2-cp36 /bin/bash
2 搭建交叉编译环境
step1:交叉编译工具链下载
下载交叉编译工具链,将交叉编译工具放置在docker虚拟环境中,比如/opt目录下改名gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu为aarch64-rockchip-linux-gnu
step2: 设置交叉编译环境变量
关于linux下环境变量的设置,可看此处博文