前言
一直就很喜欢矽速家的产品,这些板子的设计真是深的我心😍。有幸参加了这次矽速的R329开发板测评活动并拿到了实物进行体验,接下来我将会简单地分享一下上手体验的过程和感受。
硬件简单介绍
首先来看看开发板的整体外观,大家都拿硬币来对比了开发板的体积,我就不一样了,我一分💰硬币都没有,所以给大家看看真·上手图:
板子正面是一块240*240的屏幕
板子背面是核心板,可以看到散热片和天线(看起来就很强
屏幕是磁吸在板子上面的,所以可以很方便地掀开,就可以看到插内存卡的地方,其实还有两个很不容易注意到的麦克风,下面还藏着一个小喇叭📢
摄像头跟板子是通过Type-C连接的,所以可以把它掰下来,正着插反着插不插(前置后置摄像头全面屏都实现了\Doge)。不插摄像头的时候,空出来的这个Type-C接口就可以用来接OTG键鼠当输入设备。
关于开发板更多的硬件介绍可以参考这里。
Debian系统体验
截止发帖前,矽速已经给开发板适配了Tina、Debian和Armbian系统,很快啊。我前面体验了Tina,开关机的速度都很快,运行流畅,但是网络连接有点小问题,安装软件不够方便,所以接下来我的体验都是在Debian系统下进行的。
刷入系统
刷入系统以及初始配置都可以参考矽速发的帖子R329开发板教程之四|Debian系统初体验,写得很详细。
镜像烧录软件推荐balenaEtcher(操作简单,关键长得也好看
串口连接或SSH连接
在首次开机时要通过串口连接才能进行操作,直接用Type-C数据线将开发板连接到电脑就可以,不需要额外安装驱动。关于串口软件,macOS和Linux推荐使用minicom,Windows推荐使用MobaXterm,串口波特率为115200,其它参数默认。
配置好网络之后,可以使用ssh连接到开发板,但是Debian系统需要首先手工生成ssh秘钥:
ssh-keygen -A
systemctl restart ssh
Tips: 遇到过电脑无法ping通开发板,ssh也无法登录开发板的情况,首先在开发板上ping一下电脑的ip地址即可解决。
编译并运行分类Demo
Debian镜像附带了一个分类的例程zhouyi_test,可以在板子上编译运行,也可以在自己的电脑上交叉编译,再到板子上运行。
板上直接编译
镜像已经配置好了编译环境,可以直接编译运行(注意先要开启虚拟内存)。
编译步骤:
cd ~/zhouyi_test/build
cmake ..
make -j2 # 编译
cd .. && bash run.sh # 运行程序
编译结果:
root@maixsense:~/zhouyi_test/build# time make -j2
Scanning dependencies of target zhouyi_cam
[ 33%] Building C object CMakeFiles/zhouyi_cam.dir/fb_display.c.o
[ 66%] Building CXX object CMakeFiles/zhouyi_cam.dir/main.cpp.o
[100%] Linking CXX executable zhouyi_cam
[100%] Built target zhouyi_cam
real 13m19.126s
user 0m23.554s
sys 0m4.308s
在板上直接编译的一个好处是,镜像已经配置好了环境,省去了自己再配置编译环境的麻烦,但是!编译的速度实在是太慢了!以这个例程为例,在板子上编译的时间差不多需要15min,这非常不利于代码开发和调试,所以我们最好还是在自己的电脑上进行编译。
PC上交叉编译
这部分内容参考了@杨修的帖子R329 MaixSense OpenCV图像采集。
步骤(以Ubuntu为例):
安装编译工具
apt-get update apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
交叉编译OpenCV,生成动态库(可跳过,直接下载我编译好的)
wget https://github.com/opencv/opencv/archive/4.5.1.zip unzip 4.5.1.zip cd opencv-4.5.1 && mkdir r329-build && cd r329-build # 这一步让BUILD_SHARED_LIBS保持默认,即编译动态库 cmake \ -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-gnu.toolchain.cmake \ .. make -j && make install
成功后,在opencv-4.5.1/r329-build/install目录下是这样的:
├── bin ├── include ├── lib └── share
修改zhouyi_test/CMakeList.txt
cmake_minimum_required(VERSION 3.10.0) project(test_r329) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-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=armv8-a ") set(CMAKE_CXX_FLAGS "-march=armv8-a -fpermissive ") # cache flags set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") # 注意opencv的路径 set(OpenCV_DIR ../opencv4.5.1/lib/cmake/opencv4) find_package(OpenCV REQUIRED) set(OpenCV_LIBS opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio) set(AIPU_LIBS "${CMAKE_SOURCE_DIR}/libaipudrv.so.4") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") aux_source_directory(. src) add_executable(zhouyi_cam ${src}) target_link_libraries(zhouyi_cam ${OpenCV_LIBS} ${AIPU_LIBS})
编译zhouyi_cam:
cd zhouyi_test/build && cmake .. && time make
编译结果:
root@ecf9748d25c7:~/r329-coding/zhouyi_test/build# time make [ 33%] Building C object CMakeFiles/zhouyi_cam.dir/fb_display.c.o [ 66%] Building CXX object CMakeFiles/zhouyi_cam.dir/main.cpp.o [100%] Linking CXX executable zhouyi_cam [100%] Built target zhouyi_cam real 0m2.889s user 0m2.574s sys 0m0.326s
可以看到编译快了亿点点,在build目录下生成了一个zhouyi_cam文件
板上运行zhouyi_cam
首先将程序发送到板子上,推荐用scp命令,电脑上执行:scp zhouyi_cam root@板子ip地址:~/zhouyi_test/build
板子上执行:
cd ~/zhouyi_test && bash run.sh
运行效果
可以看到运行帧率为20fps,分类结果正确✅。总结(
尝试升华)附件:
r329-coding.tar.gz 提取码: a69j
附件说明:r329-coding ├── opencv4.5.1 # 编译好的opencv │ ├── bin │ ├── include │ ├── lib │ └── share └── zhouyi_test # 测试工程 ├── CMakeLists.txt ├── Makefile ├── aipu.bin ├── build ├── fb_display.c ├── fbviewer.h ├── include ├── label.h ├── libaipudrv.so.4 ├── libaipudrv.so.4.1.1 ├── low_level_api.h ├── main.cpp ├── run.sh ├── standard_api.h └── zhouyi_cam -> build/zhouyi_cam