IF_c8wXBr · 2021年08月04日

【R329开发板评测】开箱及Debian系统上手体验

前言

一直就很喜欢矽速家的产品,这些板子的设计真是深的我心😍。有幸参加了这次矽速的R329开发板测评活动并拿到了实物进行体验,接下来我将会简单地分享一下上手体验的过程和感受。

硬件简单介绍

首先来看看开发板的整体外观,大家都拿硬币来对比了开发板的体积,我就不一样了,我一分💰硬币都没有,所以给大家看看真·上手图:
image.png
板子正面是一块240*240的屏幕
image.png
板子背面是核心板,可以看到散热片和天线(看起来就很强
image.png
屏幕是磁吸在板子上面的,所以可以很方便地掀开,就可以看到插内存卡的地方,其实还有两个很不容易注意到的麦克风,下面还藏着一个小喇叭📢
image.png
摄像头跟板子是通过Type-C连接的,所以可以把它掰下来,正着插反着插不插(前置后置摄像头全面屏都实现了\Doge)。不插摄像头的时候,空出来的这个Type-C接口就可以用来接OTG键鼠当输入设备。
关于开发板更多的硬件介绍可以参考这里

Debian系统体验

截止发帖前,矽速已经给开发板适配了Tina、Debian和Armbian系统,很快啊。我前面体验了Tina,开关机的速度都很快,运行流畅,但是网络连接有点小问题,安装软件不够方便,所以接下来我的体验都是在Debian系统下进行的。

刷入系统

刷入系统以及初始配置都可以参考矽速发的帖子R329开发板教程之四|Debian系统初体验,写得很详细。
镜像烧录软件推荐balenaEtcher(操作简单,关键长得也好看
image.png

串口连接或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

    运行效果

    image.png
    可以看到运行帧率为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
推荐阅读
关注数
7443
内容数
92
人工智能边缘计算软硬件解决方案,提供高性能、低成本、低功耗、易使用的硬件选型方案.
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息