Papalimo · 2022年11月19日 · 上海市静安区

【聆思CSK6 视觉AI开发套件试用】Ubuntu 环境下 AI 图像识别体验

前言

非常感谢极术社区和聆思科技提供的机会,本人有幸本选中参加体验聆思 CSK6 视觉 AI 套件。话不多说,开始进入正题。

芯片介绍

开始之前先对本次体验的芯片做一个大体上的认知。

CSK6 是聆思科技新一代的 AI 芯片 SoC 产品系列,采用多核异构架构,集成了 ARM Star MCU,HiFi4 DSP,以及聆思全新设计的 AI 神经网络处理内核 NPU,算力达到 128 GOPS。多核异构的设计使芯片能以较低功耗满足音频及图像视频的 AI 应用需求。

环境搭建

本次体验使用的开发环境是 Ubuntu 20.04。

  1. 使用套件中提供的 Type-C 线插入开发板的 DAPLink 接口,然后另外一端插入电脑上。此时会在 ubuntu 系统中弹出 LISTENAI 的 可移动 U 盘图标。

image-20221118212429841.png

  1. 打开终端,输入以下命令安装依赖

    sudo apt update
    sudo apt upgrade -y
    sudo apt install git wget minicom vim -y
  2. 搭建 CSK 开发环境。安装 lisa zep 工具,初始化 CSK6 SDK 所需要的开发环境

    curl -o- https://cdn.iflyos.cn/public/cskTools/lisa-zephyr-install.sh | bash
  3. 检查开发环境

    lisa info zep

    image-20221118212924358.png

Hello World

国际惯例,拿到板子先跑一下 hello,world

创建工程

  1. 在测试目录,使用下面的命令创建一个 hello,world 工程

    lisa zep create

    image-20221118213232174.png

  2. 出现上面的界面后,我们选择 hello_world,创建成功后的 hello_world 目录如下图

    image-20221118213338663.png

编译固件

使用下面的命令编译 hello_world 工程

lisa zep build -b csk6011a_nano

编译成功的界面:

image-20221118213817914.png

下载固件

lisa zep flash

下载成功界面如下图所示:

image-20221118220849600.png

连接串口

  1. 另外打开一个终端,输入命令配置串口:

    sudo minicom -s
  2. 选择 Serial port setup

    image-20221118221405705.png

  3. 按一下 A 键,修改 Serial Device。波特率默认为115200,不需要修改。我这里的串口设备名字为:/dev/ttyACM0。各位以自己本地的名字为主。

    image-20221118221520344.png

  4. 保存并退出 minicom

    image-20221118221703509.png

  5. 输入以下命令,启动 minicom

    sudo minicom
  6. 复位开发板,就可以看到串口的输出了

    image-20221118221822855.png

图像识别

上一小节,我们跑了一个简单的 hello world 工程。对聆思开发板的开发步骤有了一个大概的了解。作为一款 AI 开发板,怎么能不体验一下它的 AI 功能呢!这一章节,我们跑一个头肩&手饰识别来体验 CSK6 的 AI 功能。

功能介绍

详见管网:功能与场景 | 聆思文档中心 (listenai.com)

获取源码

执行下面的命令,拉取 Sample 代码并完成初始化

lisa zep create --from-git https://cloud.listenai.com/zephyr/applications/app_algo_hsd_sample_for_csk6.git

初始化成功界面如下:

image-20221118224014555.png

开启PC端图像预览功能

修改 prj.conf 文件,将 CONFIG_WEBUSB=n 改为 CONFIG_WEBUSB=y

cd app_algo_hsd_sample_for_csk6/
sudo vim prj.conf

image-20221118224418996.png

保存并退出。

vim 常用命令

编译固件

使用下面的命令编译固件

lisa zep build -b csk6011a_nano

编译成功后,界面如下所示:

image-20221118224705664.png

下载固件

下载应用程序

使用下面的命令下载固件到开发板

lisa zep flash

下载成功后,界面如下所示:

image-20221118224906180.png

下载资源

如果此时 minicom 还连接着开发板的串口,需要使用命令 CTRL+A X先断开连接。否则会下载失败!

下载完应用程序后,我们需要将算法运行所需要的资源进行烧录,执行下面的命令,下载资源文件:

lisa zep exec cskburn -s /dev/ttyACM0 -C 6 0x400000 ./resource/cp.bin -b 748800
lisa zep exec cskburn -s /dev/ttyACM0 -C 6 0x500000 ./resource/res.bin -b 748800
  • -s 后面需要修改为自己开发环境上的串口设备号

烧录界面如下所示:

image-20221118231218191.png

重启开发板

下载完成之后,按下 REST 重启开发板。此时可以使用 minicom 连接开发板的串口,查看日志:

image-20221118231350988.png

PC 查看工具

  1. 安装工具

    git clone https://cloud.listenai.com/zephyr/applications/csk_view_finder_spd.git
  2. 使用 Type-C数据线连接 CSK6 USB 接口至电脑
  3. 打开 index.html 文件(要使用 chrome 浏览器打开)

    image-20221118225130258.png

  4. 此时浏览器界面如下

    image-20221118230017512.png

  5. 点击 选择设备按钮后,选择 CSK View Finder 选项,点击连接后,就可以看到预览图和识别结果啦:

    image-20221118230211798.png

  6. 识别结果

    111.png

跑分

本章节使用 coremark 工具简单跑一下分,测试以下 ARM STAR 芯片的性能。

  1. 下载 coremark

    git clone https://github.com/eembc/coremark.git
  2. 将下面的几个文件复制到 helle world 工程的 src 目录下;并修改 cmake 文件

    image-20221119101546654.png

  3. 打开 prj.conf 文件,添加下面的内容

    # # nothing here
    CONFIG_PRINTK=y
    CONFIG_DEBUG=y
    CONFIG_LOG=y
    CONFIG_MAIN_STACK_SIZE=8192
    CONFIG_GPIO=y
    CONFIG_FPU=y
    CONFIG_NEWLIB_LIBC=y
  4. 修改 core_portme.c 文件

    image-20221119101759059.png

  5. 修改 core_portme.h 文件

    image-20221119101853188.png

  6. 修改 coremark.h 文件

    image-20221119101936846.png

  7. 全局搜索 crc16 函数,替换为 core_urc16。否则编译会出警告(重复定义)。能忍受警告的也可以不用修改。

    image-20221119102053806.png

  8. 修改完毕后,保存修改,编译下载固件,打开 minicom 查看串口输出情况

    image-20221119102410379.png

最后

文章最后,再次感谢极术社区和聆思科技提供的开发套件。总体来说,整个体验流程是很顺利的,可以体验到聆思科技做了很多的准备,可以让开发者快速上手体验 AI 识别。后续有机会的话,我会适配一下 国产 RT-Thread 操作系统,看一下适配了 RT-Thread 操作系统的 CSK6 会不会有更好的表现。

问题总结

下载失败,提示以下错误

[Errno 13] Access denied (insufficient permissions) while trying to interrogate a USB device

解决方法

  1. 下载 pyocd

    git clone https://github.com/pyocd/pyOCD.git
  2. 复制 udev 目录下的文件到 /etc/udev/rules.d/ 目录下

    cd pyOCD
    sudo cp udev/*.rules /etc/udev/rules.d/
  3. 强制 udev 重新加载

    sudo udevadm control --reload
    sudo udevadm trigger
推荐阅读
关注数
5175
内容数
100
聆思科技官方专栏,专注AIOT芯片,持续分享有趣的解决方案。商务合作微信:listenai-csk 技术交流QQ群:825206462
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息