本章节基于你已经熟悉过 快速开始 文档而撰写,如未熟悉,请先阅读该章节内容。
操作系统要求:聆思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量产固件打包合并。