本章节基于你已经熟悉过 快速开始 文档而撰写,如未熟悉,请先阅读该章节内容。
操作系统要求:聆思CSK6的编译建议采用
Ubuntu 18.04LTS,其它系统尚未经过验证!
编译工具链:gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
csk6代码获取路径:代码获取
工具链可从如下地址下载:https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
(点击链接会自动下载)
下面步骤基于你已经从聆思代码仓库获取了代码,以及下载好了编译工具链。
注意请在 ubuntu 下解压缩工具链,如若在 Windows 下解压有可能会出现编译失败等不可控问题。
Ubuntu 下解压缩工具链到目录中,例如解压到 ~/toolchain/,目录名无需固定,但是步骤 2 中的编译工具链地址必须与这里保持一致。 cd ~
mkdir toolchain
cd toolchain
tar -jxvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
build.sh 脚本中的 BUILD_GCC_TOOL_PATH,为步骤 1 中解压出的路径,目录为 ~/toolchain 则无需修改,如下所示
./build.sh clean
./build.sh
out/venus_ap.bin,如下图所示。
注意:
自行编译出的离线或离在线固件,不带喇叭播放等业务逻辑,只可从日志查看语音交互效果;
如需要喇叭播放,可自行开发添加,参考章节 音频播放器 及 本地提示音,也可以通过聆思语音定制服务工具快速打包播放固件,使用文档可以参考资料库中的聆思语音定制服务工具使用说明文档;
离在线aiui固件编译出的自带喇叭播报回复及aiui等业务逻辑;
下面为离线语音demo板及离在线语音demo板(带 asr 模块)的相关接线图。


CSK6模块:
烧录口:PA15(RX) PA18(TX) GND
调试口:PA02(RX) PA03(TX) GND
(波特率 115200、数据位 8、校验位 N、停止位 1)
电源口:USB (接 5V 电源)
烧录过程需要注意
1.离在线(带asr模块)的demo板,不管烧录csk还是asr模块,在上电前必须短接SEL及V33两个脚。
2.烧录 ASR 请使用 ASR 烧录调试口。
3.烧录 CSK6 请使用 CSK6 烧录口,非 CSK6 的调试口。
4.csk的板子上的两个typeC口,烧录均可做供电作用,随意接哪个即可。
Windows环境烧录工具:
cskburn.exe(推荐)、Uart_Burn_Tool.exe(旧工具,不再维护),
Linux环境烧录工具:cskburn,
聆思提供的烧录工具都可在获取到的代码中的res目录下获取,或通过聆思仓库LSCLOUD的链接获取->点击跳转。
(注意:视频中使用的Uart_burn_tool.exe为旧烧录工具,旧工具不再维护,请使用最新工具cskburn.exe)
PB01 & GND;ASR模块 的 V33 & SEL(板子有且插上 asr 模块的必须短接,没有或者没插 asr 模块的用户无需理会此步骤);固件及烧录工具及演示视频可通过点击右边链接获取:点击跳转;
在烧录工具的目录下,烧录指令如下:
Windows:
.\cskburn.exe -C 6 -s 串口号 -b 波特率 --verify-all 烧录地址 指定路径下的固件 烧录地址 指定路径下的固件...
(可将地址及固件名加在最后面,同时烧录单个或多个固件)
示例:
.\cskburn.exe -C 6 -s COM5 -b 3000000 --verify-all 0x20000 res/venus_ap.bin
或
.\cskburn.exe -C 6 -s COM5 -b 3000000 --verify-all 0x20000 venus_ap.bin 0x200000 respak.bin
Linux:
sudo ./cskburn -C 6 -s 串口设备节点 -b 波特率 --verify-all 烧录地址 指定路径下的固件 烧录地址 指定路径下的固件...
(可将地址及固件名加在最后面,同时烧录单个或多个固件)
示例:
sudo ./cskburn -C 6 -s /dev/ttyUSB0 -b 1500000 --verify-all 0x0 res/lsboot.bin
波特率:
Windows 建议 1000000 或 3000000,
Linux 建议 1500000;
串口号:
Windows :COMx,x 为具体数字,如 COM5,
Linux的串口是设备节点,如/dev/ttyUSB0;
指定路径下的固件:指定路径下的固件,如 C:\Users\lsboot.bin 或 res\lsboot.bin。
烧录地址:不同固件烧录地址不同,以聆思提供为准,可参考本章节下的开发者烧录说明中的表格;
Windows烧录示例:

如上图所示,
Windows 用户在 cmd 命令窗口中输入如下烧录指令,自行修改下述指令中的COM口号为电脑对应的串口号:
.\cskburn.exe -C 6 -s COM5 -b 3000000 --verify-all 0x0 lsboot.bin 0x20000 venus_ap.bin 0x200000 respak.bin 0x680000 tone.bin
Linux烧录示例:

Linux 用户在终端命令窗口中输入如下烧录指令,自行修改 /dev/ttyUSB0 为串口工具对应串口节点:
sudo ./cskburn -C 6 -s /dev/ttyUSB0 -b 1500000 --verify-all 0x0 lsboot.bin
注:
离线语音demo仅需完成 csk6 烧录即可开始参考点击效果演示体验语音交互效果,
离在线及离在线 aiui 语音 demo 完成 csk6 模块烧录后,还需烧录 asr 模块,可跳转 ASR 烧录。
可以看到聆思提供的sdk代码目录下的 res 目录中,除了 fw.hex,还有其他固件,相关说明如下表所示:
| 文件名 | 说明 | 烧录的起始地址 |
|---|---|---|
| lsboot.bin | boot固件,聆思提供,不可二次开发 | 0x0 |
| venus_ap.bin | ap固件,开发者可自行编译生成 | 0x20000 |
| respak.bin | cp固件,聆思提供,不可二次开发 | 0x200000 |
| tone.bin | 提示音固件,参照提示音文档生成 | 0x680000 |
| fw.hex | 量产固件,为多个固件打包而成的单一固件,打包方式可见CSK6量产固件打包合并 | 烧录时无需指定地址 |
开发者可根据自己需要(编译完二次开发后的 venus_ap.bin 或者修改提示音固件等内容),修改烧录指令中的固件名及烧录地址即可单独烧录。
第一次烧录(没有烧录过 fw.hex 及任何其他固件的情况下)需要烧录 lsboot.bin、venus_ap.bin、respak.bin、tone.bin,缺一不可,烧录不分先后顺序,后面烧录可单独只烧录更新其中一个即可。
注意每次烧录完,如若需要烧录另外的固件,都需要重新上电。
CSK6-NanoKit 开发板预留了 SWD 烧录接口,开发者可以通过 SWD 接口将 J-Link 仿真器和开发板连接。
1.1 安装 J-Flash 应用程序:J-Link 驱动下载
下载完成完成后,默认安装即可
1.2 下载 J-Flash 项目配置文件:J-Flash 工程配置文件
1.3 下载 Flash 烧写程序文件:Flash 烧写程序文件
2.1 复制上面下载好的Flash烧写程序文件 Venus_flashloader.FLM 到 J-Flash 安装目录下的 Devices/Venus/csk6 若没有该目录,则在 Devices 目录下新建 Venus/csk6 目录,最后将 Venus_flashloader.FLM 复制到该目录下

2.2 修改 JLinkDevices.xml 文件,新增 CSK6 支持。JLinkDevices.xml 文件在 J-Flash 安装目录下

增加内容如下:
<!-- -->
<!-- ListenAI -->
<!-- -->
<Device>
<ChipInfo Vendor="ListenAI" Name="Venus" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x80000" WorkRAMSize="0x50000" />
<FlashBankInfo Name="Internal Flash" BaseAddr="0x18000000" MaxSize="0x800000" Loader="Devices/Venus/csk6/Venus_flashloader.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
完成后如下图所示:

3.1 开发板与 J-Link 连接
将 J-Link 上的 SWDIO 引脚与 CSK6 上的 SWDIO 引脚连接
将 J-Link 上的 SWCLK 引脚与 CSK6 上的 SWCLK 引脚连接
将 J-Link 上的 RESET 引脚与 CSK6 上的 RESET 引脚连接
将 J-Link 上的 GND 引脚与 CSK6 上的 GND 引脚连接

实际连接图如下:

3.2 使用 J-Flash 打开项目配置文件 venus.jflash

打开后如上图所示,可以点击 Target->connect ,连接成功后出现 Connected successfully 提示信息。
3.3 打开需要烧录的二进制文件,我们这里使用 venus_ap.bin 为例
点击 File->open data file 后选择 venus_ap.bin,并设置起始地址为 0x18020000

3.4 使用 venus_ap.bin 文件烧录

按照上述步骤烧录完成即可。
3.5 烧录成功信息

| 文件名 | 说明 | 烧录起始地址 |
|---|---|---|
| lsboot.bin | boot固件,SDK自带,res目录下 | 0x18000000 |
| venus_ap.bin | ap固件,编译生成,在out目录下 | 0x18020000 |
| respak.bin | cp固件,SDK自带,res目录下 | 0x18200000 |
| tone.bin | 提示音固件,参照提示音文档生成 | 0x18680000 |
| 分区划分 | 分区起始地址 | 分区结束地址 | 分区大小 | 介绍 |
|---|---|---|---|---|
| lsboot | 0x18000000 | 0x1801B000 | 108KB | boot固件,不可更改 |
| system config | 0x1801B000 | 0x1801C000 | 4KB | boot配置信息,不可更改 |
| partab | 0x1801C000 | 0x1801E000 | 8KB | 分区信息,不可更改 |
| environment | 0x1801E000 | 0x18020000 | 8KB | easyflash分区,存储用户信息 |
| venus_ap.bin | 0x18020000 | 0x18200000 | 1920KB | ap固件 |
| respak.bin | 0x18200000 | 0x18680000 | 4608KB | cp固件+cp资源 |
| tone.bin | 0x18680000 | 0x18800000 | 1536KB | 提示音固件 |
| region-t | 0x18800000 | 0x19000000 | 8192KB | T分区 |

点击 Range 后,输入读取的范围,Start Address:0x18020000,End Address:0x180ABDE0,读取内容就是我们在上一章节中写入的 venus_ap.bin 文件。读取完成后,将其保存为 venus_ap_readback.bin;

通过上图可以知道,我们写入的 venus_ap.bin 与我们通过 J-Flash 读出来的 venus_ap_readback.bin 文件完全一致。
注意:当我们进行 flash 数据导出的时候,为了提高数据读取的成功率,可以将 CSK6 进入到烧录模式后再进入 flash 数据的导出,进入烧录模式的方法可以参考《串口烧录》部分章节。
基于开发者使用,烧录操作是多个固件(boot、ap、respak、tone等),每个都需要单独烧录,且每次烧录之前都需要重新上电,在实际量产过程中会比较耗时,聆思提供了将多个固件按照指定偏移地址打包成 hex 文件,只需一次烧录到 Flash 中的解决方案。
打包烧录说明可点击跳转->CSK6量产固件打包合并。