编辑语:
芯片开放社区(occ)面向广大开发者推出应用实战系列内容,通过分享开发者实战开发案例,总结应用开发经验,梳理开发中的常见问题及解决方案,为后续参与的开发者提供更多参考与借鉴。
本文是关于开发者 乔帮主 分享了在docker环境下,基于博流bl606p音视频开发板,进行智能音箱系统搭建的完成过程。按照文中步骤操作后,你将得到一个可以进行对话的智能音箱。
01 背景
平头哥给我提供了一套博流bl606p音视频开发板评测:
这套bl606p开发板是由博流科技研发,基于平头哥的xtc906和e907,集成度较高,非常适合用于智能音箱系统。
开发套件提供了主控板、按键板,还提供了4欧3w的喇叭 ,还有按键板连接线和支撑柱,开箱连接好就能用了。
另外,这块板子上,还板载调试器,使用type-c连接电脑后,就能够直接进行调试和固件烧录了,不需要单独配调试器。
我这边一向习惯使用docker来搭建linux开发环境,所以这次也不例外。不过,要进行固件烧录,目前还得借助windows上运行的t-head-debugserver。
02 docker搭建基础环境
首先我们要搭建一个基于ubuntu18.04版本的基础环境,并安装好基础工具包,以及设置好python3作为默认python环境。
以下是具体的步骤:
# 主机# docker启动mkdir projectsdocker run -v $(pwd)/projects:/root/projects --name bl606p -it ubuntu:18.04#docker内# 基本工具安装cd /rootapt update && apt -y install sudo vim# apt更新安装基础工具包sudo apt updatesudo apt upgradesudo apt install build-essential git curl lsof ping unzip# 安装ppasudo apt install -y software-properties-commonsudo add-apt-repository ppa:deadsnakes/ppa #看到enter就回车# 安装python3.7sudo apt install python3.7# 更新指向sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2sudo update-alternatives --config pythonsudo update-alternatives --config python3sudo apt autoremove# 安装pipsudo apt install python3-devsudo apt install python3-pipsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1sudo apt install python3-dev# 检查python安装结果:python -v && python3 -v
最终输出如下,说明基础环境设置成功:
03 yoc工具链安装
xt系列芯片的sdk编译,在linux下使用yoc工具来进行,通过python的包管理工具,可以很方便地安装。
具体步骤如下:
# 安装yoctoolssudo pip install yoctools -u# 安装工具链sudo yoc toolchain --riscv -fls /usr/local/thead/riscv64-unknown-elf# 查看yoc版本yoc -v
最终输出结果如下,说明安装成功:
04 开发板的连接
将bl606p开发板连接到windows电脑上之前,需要做好跳线设置。
参考官方提供的原理图:
然后对照开发板的跳线进行设置:
本质上,就是把gpio16-19,连接到tck、tdi、tms、tdo,这样type-c连接到电脑后,就能够直接对接到调试端口了。
然后使用type-c,将开发板的uart接口,连接到windows电脑:
右边的type-c接口,只是用于供电的,不能用于调试通信。
05 安装 t-head-debugserver 调试工具
windows安装t-head-debugserver
windows可以直接下载 t-head-debugserver-windows 版本进行安装即可。下载地址:https://occ.t-head.cn/community/download?id=4133634465765330944
t-head-debugserver默认需要1025端口,所以启动前,先检查该端口是否被占用,可在windows黑窗口执行下面的命令检查:
netstat -aon | findstr listen | findstr 1025
如果输出端口被占用了,上述命令会输出对应的pid信息,可以到任务管理器中查看是什么进程占用了,停止它即可。
其他成功后,界面如下:
上述界面输出的最后一行,显示了用于远程连接的地址和端口,需要记好,在docker的linux环境下面需要使用。
target remote 192.168.1.47:8025
linux安装:t-head-debugserver
docker环境中的linux系统上,需要下载 t-head-debugserver-linux-x86_64 版本,在上述地址下载,解压后,直接执行解压得到的shell文件安装即可:
在linux环境中,也可以检查1025端口是否被占用,对应的指令如下:
lsof -i:1025
安装好以后,再执行下面的命令启动t-head-debugserver:
debugserverconsole -setclk 8 -port 1025
06 测试基础功能开发
上述环境搭建好以后,可以使用官方提供的helloworld进行测试,使用如下的步骤,在docker中的linux环境下,下载编译helloworld工程:
mkdir ~/testcd ~/testyoc inityoc install helloworldcd solutions/helloworldmake sdk=sdk_chip_bl606p_e907
在上述命令中,使用yoc工具,可以很方便地管理和下载源码。
最后一步完成编译,输出如下:
经过上面的步骤, helloworld已经编译完毕,可以用于烧录测试了。
在第四节【安装 t-head-debugserver 调试工具】中,得到了远程调试的地址和端口,要在docker中的linux环境下进行烧录,只需要将gdb烧录配置文件中地址和端口,修改为远程调试端口即可,具体命令如下:
sed -i 's#localhost8025#' gdbinitflash
然后,再执行下面的命令进行烧录:
make flashall sdk=sdk_chip_bl606p_e907
烧录过程中,windows上的t-head-debugserver会有如下的信息输出:
其中get connection from 192.168.1.100,表示来自这个ip的远程调试连接,也就是docker中的linux连上来了。
make flashall烧录命令执行成功后,具体输出如下:
现在,可以关闭 windows上的t-head-debugserver 工具,然后使用串口工具连接开发板,波特率使用 2000000,然后重启开发板,就能收到如下的输出信息:
看到【hello world】,说明我们的基础开发烧录运行搞定,下面可以开始进行智能音箱功能的开发烧录测试了。
07 智能音箱系统搭建
平头哥为bl606提供了sdk_longyuan,用于智能音箱系统的基础开发,类似上面的helloworld,也使用yoc工具进行操作,具体步骤如下:
cd ~/testyoc install smart_speaker_v2cd solutions/helloworldcp package_bl606p_mind.yaml package.yamlmake clean && make
但是在最后make编译的过程中,会出现找不到ao.h文件的问题:
经过一番了解,正确获取该工程的步骤应该如下:
mkdir ~/longyuancd ~/longyuanyoc inityoc install sdk_longyuancd solutions/smart_speaker_v2cp package_bl606p_mind.yaml package.yamlmake clean && make
编译成功后,输出如下:
然后,进行烧录,具体步骤如下:
sed -i 's#localhost8025#' gdbinitflashmake erasechip #擦除make flashall #烧录全量镜像make flash #仅烧录应用镜像
类似helloworld,第一步是设置远程调试地址,所以需要先关闭串口工具,并打开windows上的t-head-debugserver 工具,再执行上面的烧录指令。
烧录完成后,输出如下:
烧录完成后,再次关闭windows上的t-head-debugserver 工具,然后使用串口工具连接到开发板,重启开发板后,会进入基础shell环境,并提示进行wifi连接设置,此时要使用如下的指令:
kv set wifi_ssid0 openbsdkv set wifi_psk0 13581882013reboot
再次重启成功后,喇叭就会发声,网络连接成功,天猫精灵欢迎。
按照正常逻辑,此时就可以说【天猫精灵】唤醒,进行对话了。
实际使用时,说【天猫精灵】唤醒后,马上就死机了,反复尝试都是直接崩溃了。
又经过一番了解,原来,需要降级编译链才行。
具体步骤如下:
从 https://occ.t-head.cn/community/download?id=4049193882418745344 下载 xuantie-900-gcc-elf-newlib-x86_64-v2.4.0-20220428.tar.gz 到 ~/
解压工具链:
cd ~tar xzvf xuantie-900-gcc-elf-newlib-x86_64-v2.4.0-20220428.tar.gz
设置工具链路径:
export path=/root/xuantie-900-gcc-elf-newlib-x86_64-v2.4.0/bin:/root/xuantie-900-gcc-elf-newlib-x86_64-v2.4.0/riscv64-unknown-elf/bin:$path
设置完成,重新上面的编译烧录步骤,并再次设置wifi连接,一切就正常了。
08 智能音箱系统体验
完成后的智能音箱,可以脱离调试环境了,使用专用电源供电,或者使用type-c供电,就能使用了。
使用【天猫精灵】唤醒,发出滴滴咚声后,就可以进行自然语言对话了。
说出【天猫精灵】唤醒,会出现如下的输出:
最后的wakeup表示唤醒。
再说出【告诉我现在时间】,就可看到和听到回复了:
现在,就可以愉快地玩耍了。
09 智能音箱系统体验
虽然在智能音箱系统搭建的过程中,遇到了一些小问题,不过总的来说,还是比较顺畅的。
博流提供了完成的bl6060开发套件,平头哥提供了可以用于二次开发的系统源码,最终实现的智能音箱,使用起来也非常流畅,回复也基本感觉不到延迟,体验很好。
基于此基础上,以此为原型,实现更多功能,进行产品的开发,可以非常的快捷方便。
手机无线充新规来了:功率50W封顶
如何去打造零信任网络
贝尔金是哪个国家的品牌
白色版iPhone 4将于4月出售
电动汽车起火事故频发倒逼动力电池安全技术升级
基于博流BL606P音视频开发板的智能音箱系统开发方案
晶片键合质量的红外检测系统设计
空气净化器采用负离子功能有何不同,产品又有何特色?
西安交大提出全无机异质结器件结构,有力促进钙钛矿LED的开发
我国首个国家级物联网产业联盟成立
特斯拉CEO埃隆·马斯克宣布特斯拉将在第三季度实现盈利
按下按钮即可实现EMC滤波器设计
高速PCB信号完整性和电源完整性仿真技术研讨会
ModelCenter产品的发展和现状的阐述
工程师说 | RX系列软件的历史和今后的展望 #6
5G+VR将突破教育行业的技术瓶颈
“Riyadh Season”狂欢季,背后与这家中国企业有关
节流式差压流量计和涡街流量计比较
低代码(Low-Code)是什么?低代码的特点有哪些?
水质监测系统可多种方式进行数据采集,方便快捷