开始接触本章节之前,需要先学习CSK6 [环境搭建] ,完成 CSK6 的环境搭建和熟悉基本开发方式,再进行本章节的操作。
本指引所用的硬件实验平台为 视觉开发套件(6011A-Nanokit 开发板,视觉功能模块,引脚扩展板,USB-C 数据线)
套件购买链接:聆思CSK6视觉开发套件
在本实验中,我们将使用到开发板上的两个USB接口,分别用于连接PC预览工具输出预览图像和烧录固件、查看日志。
实验中请使用两条USB数据线分别连接开发板的两个USB接口到电脑。
如图,组装好开发套件后,使用USB数据线对开发板进行供电后,若电源LED D2(红)和DAPLink LED D4(蓝)亮起则表示套件可正常工作。
我们提供了视觉SDK与配套的头肩&手势识别Sample。这个Sample展示了对SDK接口的基本调用,实现了获取Sensor图像并将算法处理后的结果传输至PC上位机。
如果您初次拿到开发套件,且希望快速体验头肩追踪&手势识别AI能力,可以通过下载体验固件,使用一键烧录工具完成烧录后体验AI能力效果。
一键烧录工具:https://tool.listenai.com/web-cskburn/#/
PC端预览工具:https://tool.listenai.com/csk-view-finder-spd/
执行以下命令后,将拉取 Sample 项目 和SDK到本地并自动完成初始化,注意代码仓在本地存放的路径不能有中文名称,否则容易引起错误;
lisa zep create --from-git https://cloud.listenai.com/zephyr/applications/app_algo_hsd_sample_for_csk6.git
TIP
当初次拉取 SDK 和 sample 后出现以下情况时,可尝试通过FAQ指引解决:
1.拉取SDK操作中断
2.编译烧录到开发板上出现预览图像黑屏FAQ指引:
打开 项目的根目录下找到 的 prj.conf
文件,将 CONFIG_WEBUSB=n
改为CONFIG_WEBUSB=y
。
lisa zep build -b csk6011a_nano
当您需要重新编译所有链接(如更换版型)时,可选择Rebuild整个项目工程,可在上述编译命令> 中增加 -p 参数,即
lisa zep build -b csk6011a_nano -p
更多编译参数的使用,详见 命令行工具-编译。
lisa zep flash
前面我们完成了应用程序烧录,接下来我们将算法运行所需的资源进行烧录,我们可以在app_algo_hsd_sample_for_csk6/resource/res.overlay
文件中看到这些资源所占用的分区。
资源 | 分区配置 |
---|---|
DSP固件资源 | <0x400000 0x100000> |
算法模型资源 | <0x500000 0x1ee000> |
NOTE
DSP固件资源是运行在csk6 DSP和NPU上的程序,包含视觉算法程序等;
算法模型资源是视觉算法运行所需要的模型资源文件。
我们提供了串口、JLink两种烧录方式,可根据情况选择合适的烧录方式。
使用 USB 线接上 DAPLink USB 口进行烧录,依次执行以下命令,完成资源的烧录。
lisa zep exec cskburn -s \\.\COMx -C 6 0x400000 .\resource\cp.bin -b 748800
lisa zep exec cskburn -s \\.\COMx -C 6 0x500000 .\resource\res.bin -b 748800
其中的 COMx
代表开发套件连接到 PC 上对应的串口号。例如:COM3
TIP
1.当您在 Windows WSL2 环境下对csk6 进行固件烧录时无法找到设备且出现以下错误信息时:
waiting for a debug probe to be connect...
可尝试通过以下FAQ指引解决:2.当您遇到无法烧录且有以下提示时:
entering-update-mode...
ERRO:Failed entering update mode
可尝试以下FAQ指引尝试解决:
lisa zep exec cskburn -s PORT -C 6 0x400000 ./resource/cp.bin -b 748800
lisa zep exec cskburn -s PORT -C 6 0x500000 ./resource/res.bin -b 748800
其中的 PORT
代表开发套件连接到 PC 上对应的串口号。例如:/dev/ttyACM0
TIP
下常见问题及解决方法:
1.当您在 Linux 系统环境下对 csk6 进行固件烧录时无法找到设备且出现以下错误信息时:
waiting for a debug probe to be connect...
可尝试通过以下FAQ指引解决:2.当您遇到无法烧录且有以下提示时:
ERRO:Failed entering update mode
可尝试以下FAQ指引尝试解决:
此烧录方式需要配套 JLink 设备进行使用,使用 USB 线接上 CSK6 USB 口进行供电,并参照以下接线方式连接 JLink :
依次执行以下命令,完成资源的烧录。
lisa zep -v flash --runner jlink --bin-file resource/cp.bin --flash-opt="--base-address=0x18400000"
lisa zep -v flash --runner jlink --bin-file resource/res.bin --flash-opt="--base-address=0x18500000"
提示
使用此方式烧录时,仅连接 CSK6 USB 接口即可,不连接 DAPLink USB 接口,以避免板载调试芯片对SWD接口造成占用。
连接开发板的 DAPLink USB ,使用串口调试工具打开 COM 口(波特率为 115200 ),使用开发板上的 reset 按键进行复位后,即可看到以下日志输出。
*** Booting Zephyr OS build 36309bca986d ***
[00:00:03.185,000] <inf> hsd: Setup resource [head_shoulder] which in <0x18500031,0xa6ce0>
[00:00:03.187,000] <inf> hsd: Setup resource [gesture] which in <0x185a6d11,0x132448>
- Device name: DVPI
[00:00:03.315,000] <inf> hsd: fmt: [VYUY] width [640] height [480]
[00:00:03.316,000] <inf> hsd: Alloc video buffer: 614400
[00:00:03.317,000] <inf> hsd: Alloc video buffer: 614400
[00:00:03.318,000] <inf> hsd: Alloc video buffer: 614400
Heap at 0x305c9530 contains 42841 units in 16 buckets
bucket# min units total largest largest
threshold chunks (units) (bytes)
-----------------------------------------------------------
15 32769 1 42831 342640
342640 free bytes, 0 allocated bytes, overhead = 96 bytes (0.0%)
[00:00:03.515,000] <inf> main: head shoulder cnt: 1
[00:00:03.516,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.608,000] <inf> main: head shoulder cnt: 1
[00:00:03.609,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.700,000] <inf> main: head shoulder cnt: 1
[00:00:03.701,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.792,000] <inf> main: head shoulder cnt: 1
[00:00:03.793,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.884,000] <inf> main: head shoulder cnt: 1
[00:00:03.885,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:03.976,000] <inf> main: head shoulder cnt: 1
[00:00:03.976,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:04.068,000] <inf> main: head shoulder cnt: 1
[00:00:04.069,000] <inf> main: gesture result id: 0 ,state: 0
[00:00:04.159,000] <inf> main: head shoulder cnt: 1