ARM技术论坛
直播中

jf_99374259

3年用户 71经验值
擅长:处理器/DSP
私信 关注
[讨论]

【米尔-全志T113-i开发板试用】基础开发环境配置和opencv-mobile移植测试

【米尔-全志T113-i开发板试用】基础开发环境配置和opencv-mobile移植测试

MYC-YT113i核心板及开发板
真正的国产核心板,100%国产物料认证

  • 国产T113-i处理器配备2*Cortex-A7@1.2GHz ,RISC-V;
  • 外置DDR3接口、支持视频编解码器、HiFi4 DSP;
  • 接口丰富:视频采集接口、显示器接口、USB2.0 接口、CAN 接口、千兆以太网接口;
  • 工业级:-40℃~+85℃、尺寸37mm*39mm;
  • 邮票孔+LGA,140+50PIN;

系统启动

使用配套的 12V2A 电源输入,串口接入debug连接电脑usb,同时用 usba-c 线连接电脑和开发板USB-OTG

拨动开关,开发板的灯会亮起,过一会儿就自动进入系统,绿灯和蓝灯闪烁

2a41f8ba9b260bbea94c6f9454dd4471.jpg

串口方式,root权限执行 tio /dev/ttyUSB0 可以观察启动和运行日志
Screenshot_20231227_195058.png

串口中输入 root 回车,无密码登录,此时内存占用
Screenshot_20231227_195304.png

sh-4.4# free -m
total       used       free     shared    buffers     cached
Mem:           485        123        361          0          2         75
-/+ buffers/cache:         45        439
Swap:            0          0          0

有个示例应用 mxapp2 自动启动,占用了较多资源 killall mxapp2 释放

sh-4.4# killall mxapp2
sh-4.4# free -m
total       used       free     shared    buffers     cached
Mem:           485        105        379          0          2         75
-/+ buffers/cache:         28        456
Swap:            0          0          0

系统自带 ssh 服务,在配置好密码后,插上网线能 ssh 上去,不过还是 adb 方便些

沿袭全志的传统,系统自带 adb 功能,可以直接 adb push localfile /root/adb pull /root/remotefile . 上传和下载文件

也可以用 adb shell 登录系统

编译opencv-mobile

opencv-mobile 通过调整编译参数,删减部分opencv源码,来最小化编译的 opencv 库

提供了 opencv 常用的功能,如读写图片,处理,矩阵操作等等 版本与上游同步,无第三方依赖

在绝大多数情况下,以 1/10 的体积无痛替换官方 opencv,尤其适合对体积有特殊要求的移动端和嵌入式环境
Screenshot_20231227_195355.png

下载编译工具链 https://github.com/MYIR-ALLWINNER/toolchain

git clone https://github.com/MYIR-ALLWINNER/toolchain.git MYIR-ALLWINNER-toolchain

打开 https://github.com/nihui/opencv-mobile

下载最新 opencv-mobile 源码

Screenshot_20231227_195530.png

使用 cmake 搭配 opencv-mobile 的 toolchain 文件进行编译

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER "arm-linux-gnueabi-gcc")
set(CMAKE_CXX_COMPILER "arm-linux-gnueabi-g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv4")
set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv4")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")

具体命令

export PATH=$PATH:/home/nihui/osd/MYIR-ALLWINNER-toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/arm-linux-gnueabi.toolchain.cmake -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../options.txt` -DBUILD_opencv_world=OFF -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
make -j4
make install

Screenshot_20231227_195434.png

测试opencv-mobile

编写个使用 opencv 读取图片,缩放到200x200大小,保存图片的测试程序

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main()
{
    cv::Mat bgr = cv::imread("in.jpg", 1);

    cv::resize(bgr, bgr, cv::Size(200, 200));

    cv::imwrite("out.jpg", bgr);

    return 0;
}

编写个cmake工程文件

project(opencv-mobile-test)
cmake_minimum_required(VERSION 3.5)

# opencv4 requires c++11
set(CMAKE_CXX_STANDARD 11)

# set OpenCV_DIR to where OpenCVConfig.cmake resides
find_package(OpenCV REQUIRED)

add_executable(opencv-mobile-test main.cpp)

target_link_libraries(opencv-mobile-test ${OpenCV_LIBS})

编译命令

cmake -DCMAKE_TOOLCHAIN_FILE=../arm-linux-gnueabi.toolchain.cmake -DOpenCV_DIR=/home/nihui/osd/opencv-mobile-4.8.1/build/install/lib/cmake/opencv4 ..
make

将测试程序以及图片一起上传到开发板

adb push opencv-mobile-test /root/
adb push in.jpg /root/

in.jpg

adb shell 登录开发板,运行提示缺库报错

sh-4.4# ./opencv-mobile-test
./opencv-mobile-test: error while loading shared libraries: libgomp.so.1: cannot open shared object file: No such file or directory

这是因为开发板系统中没有 libgomp.so.1 文件,我们可以把工具链中的 libgomp.so.1 拷贝到开发板上使用

adb pull /home/nihui/osd/MYIR-ALLWINNER-toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/lib/libgomp.so.1 /root/

设置 LD_LIBRARY_PATH 后再次运行成功,并存出了结果图片

sh-4.4# LD_LIBRARY_PATH=. ./opencv-mobile-test
this device is not whitelisted for jpeg decoder cvi
this device is not whitelisted for jpeg decoder cvi
this device is not whitelisted for jpeg decoder cvi
this device is not whitelisted for jpeg encoder rkmpp
sh-4.4# ls -l
total 3832
-rw-rw-rw- 1 root root  557455 Sep  2  2023 in.jpg
-rwxrwxrwx 1 root root  918576 Dec 27  2023 libgomp.so.1
-rwxrwxrwx 1 root root 2420200 Dec 27  2023 opencv-mobile-test
-rw-rw-rw- 1 root root   18091 Jan  1 00:29 out.jpg

将输出图片下载到电脑上

adb pull /root/out.jpg

打开out.jpg 可以看到缩放后的图片,验证 opencv 功能正常可用
out.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分