上一章: 智能語音終端開發闆介紹 | 《無需從0開發 1天上手智能語音離線上方案》第二章>>> 下一章: 智能語音應用開發指南 | 《無需從0開發 1天上手智能語音離線上方案》第四章>>>
智能語音終端SDK快速上手說明
1. 使用Windows開發環境
1.1 概述
Windows開發環境采用劍池CDK開發工具。劍池CDK開發工具以極簡開發為理念,是專為IoT應用開發打造的內建開發環境。它在不改變使用者開發習慣的基礎上,全面接入雲端開發資源,結合圖形化的OSTracer、Profiling等調試分析工具,加速使用者産品開發。
1.2 CDK工具下載下傳
• 登入平頭哥晶片開放社群,進入欄目“技術部落->資源下載下傳->工具->CDK內建開發環境”,下載下傳最新版本的劍池CDK內建開發環境安裝包。下載下傳完成後,點選setup.exe,根據CDK安裝向導提示完成安裝。
• 掃描下方二維碼即可下載下傳。

注意:
- 建議CDK不要安裝在C槽,否則需要管理者權限運作
- 下載下傳或安裝過程中有可能被防火牆攔截,注意将其添加到防火牆白名單中
1.3 Windows調試環境安裝
安裝序列槽驅動程式
• 登入平頭哥晶片開放社群,進入欄目“技術部落->資源下載下傳->工具->驅動工具”,下載下傳并安裝“CP210x_Windows10_Drivers”序列槽轉USB驅動包(注:根據作業系統選擇對應的版本)。
安裝Debug Server
• 登入平頭哥晶片開放社群,進入欄目“技術部落 -> 資源下載下傳 -> 工具 -> Debug Server”,下載下傳最新CSKY-DebugServer-windows版本。
注:下載下傳或安裝過程中有可能被防火牆攔截,注意将其添加到防火牆白名單中
• Debug Server安裝過程中,會同時安裝JTAG調試驅動。
檢查驅動狀态
• 插入開發闆調試序列槽和JTAG調試口後,打開計算機裝置管理器,确認序列槽驅動以及JTAG調試驅動安裝無誤。
driver_status
運作Debug Server
• 燒錄之前需要打開并運作CSkyDebugServer。CSkyDebugServer初始狀态,左下角顯示Ready:
• 上電開發闆,確定藍色JTAG訓示燈被點亮。點選 ,CSkyDebugServer與裝置連接配接成功:
debugserver_run
DebugServer處于上述的運作态時,可以燒錄固件和對程式進行GDB調試,參考《2. 使用GDB調試》。
1.4 應用開發
建立執行個體工程
本節以“智能語音終端解決方案”為例,介紹如何使用CDK進行應用開發。
• 運作CDK,在首頁點選建立工程:
• 在搜尋框内輸入智能語音并按回車,在第一個搜尋結果右邊點選建立工程:
• 輸入工程名稱,點選下載下傳方案:
CDK_Download
• 輸入工作空間名稱和路徑,點選OK建立工作空間
• 之後CDK會建立工程并自動下載下傳工程所需依賴。
編譯
• 下載下傳成功後,可以在左邊的導航欄中看到項目(本例中項目名稱demo_project)。右擊項目名稱,選擇Build開始編譯。
編譯時間大約需要10分鐘。
• 編譯成功後,在界面底部的輸出視窗,會顯示成功資訊:
CDK_Build_Success
燒錄
點選工具欄的 開始燒錄:
CDK_Start_Program
燒錄完成後,顯示燒錄成功視窗:
CDK_Program_Success
2. 使用Linux開發環境
2.1 安裝YocTools
YocTools需要通過 pip 指令安裝,YocTools 支援 python2.7+、python3.6+,建議使用 python2 作為預設 python。
• 解除安裝舊版本YocTools,之前如果沒安裝請跳過該步驟
$sudo pip uninstall yoctools
• 安裝YocTools
$sudo pip install --no-binary=yoctools
http://yoctools.oss-cn-beijing.aliyuncs.com/yoctools-1.0.60.1.tar.gz-i
https://mirrors.163.com/pypi/simple/2.2 工具鍊安裝
編譯工具鍊采用gcc編譯,第一次編譯時,makefile會自動下載下傳編譯工具鍊:
$ make
scons: Reading SConscript files ...
100.00% [##################################################] Speed: 9.260MB/S
Start install, wait half a minute please.
Congratulations!
工具鍊會被安裝在目前使用者的~/.thead目錄下:
~/.thead$ ll
drwxr-xr-x 1 User user 4096 Apr 7 18:11 csky-abiv2-elf/
配置工具鍊路徑到環境變量:
$echo "export PATH=$HOME/.thead/csky-abiv2-elf/bin:$PATH" >> ~/.bashrc
$source ~/.bashrc
2.3 Linux調試環境安裝
• 登入平頭哥晶片開放社群,進入欄目“技術部落 -> 資源下載下傳 -> 工具 -> Debug Server”,下載下傳最新CSKY-DebugServer-Linux版本,并解壓
• 執行sudo sh ./CSKY-DebugServer-linux-*.sh -i,開始安裝
• 系統提示“Do you agree to install the DebugServer[yes/no]”,輸入yes
• 系統提示設定安裝路徑“Set full installing path:”,推薦安裝到預設路徑:直接回車
• 系統會提示”This software will be installed to the default path: (/usr/bin/)?[yes/no/cancel]:”,輸入yes
• 安裝成功後會提示:
Done !
You can use command “DebugServerConsole” to start DebugServerConsole!
(NOTE:The full path of ‘DebugServerConsole.elf’ is /usr/bin/C-Sky_DebugServer)
注意:安裝過程中使用者需要擷取sudo權限。
Linux虛拟機下安裝Debug Server
很多開發者習慣在Windows系統(或Mac OS系統)下安裝Linux虛拟機來進行開發,常見的虛拟機有WSL(Windows Subsystem for Linux),VMware,VirtualBox等。然而在Linux虛拟機下,由于Debug Server沒辦法擷取到USB裝置資訊,導緻部分情況下Debug Server連接配接失敗。
是以需要切換到Windows環境安裝和使用Debug Server。具體安裝步驟,請參考《1.3 Windows調試環境安裝》。
• 安裝完成後,在任意目錄下通過指令 sudo DebugServerConsole,來打開 DebugServer。打開後界面如下:
• DebugServer連接配接成功如下:
2.4 應用開發
2.4.1 編譯
以CB5654開發闆為例,進入開發闆目錄,使用make指令開始編譯:
$ cd solutions_cb5654/smart_speaker_cb5654
$ make clean; make
2.4.2 燒錄
調試腳本
• 鏡像的燒寫通過GDB完成,需要先配置調試伺服器的IP位址為本機位址。輸入指令ifconfig擷取本機位址(下例為:30.21.178.4):
$ ifconfig
wifi0: flags=4163 mtu 1500
inet 30.21.178.4 netmask 255.255.252.0 broadcast 30.21.179.255
inet6 fe80::b031:5c7e:9a91:d8d2 prefixlen 64 scopeid 0xfd<compat,link,site,host>
ether 60:f2:62:77:45:d9 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
• 在開發目錄下(例如:solutions_cb5654/smart_speaker_cb5654)建立檔案.gdbinit,設定JTAG IP位址為本機IP位址,端口号為1025:
$ cat .gdbinit
target jtag jtag://30.21.178.4:1025
全部燒錄
• 上電開發闆,確定電源訓示燈被點亮;運作Debug Server并保證與開發闆連接配接成功
• 首次運作時,需要執行全部燒錄指令,保證所有分區内容都被燒錄:
$ make flashall
該指令會燒錄Bootloader分區、算法分區、應用分區。
注意:Bootloader燒寫若異常斷電可能會導緻裝置無法引導。
應用固件燒錄
• 大部分應用程式都運作應用分區上,修改應用程式代碼後可以隻燒寫相應的應用程式固件,加快燒寫速度。
$ make flash
燒錄成功
• 燒錄成功後,可以看到所有分區燒寫進度都已至100%。
Program partition: bmtb address: 0x8000000, size 192 byte
erasing...
program 08000000, 100%
Program partition: boot address: 0x8001000, size 41592 byte
program 08009000, 100%
Program partition: tee address: 0x8011000, size 22048 byte
program 08011000, 100%
Program partition: imtb address: 0x8021000, size 8192 byte
program 08021000, 100%
Program partition: prim address: 0x8023000, size 1712796 byte
program 081c3000, 100%
Program partition: cpu1 address: 0x8323000, size 233708 byte
program 0835b000, 100%
Program partition: cpu2 address: 0x83a3000, size 388358 byte
program 083fb000, 100%
Program partition: lpm address: 0x85a7000, size 25508 byte
program 085a7000, 100%
Program partition: lfs address: 0x85c7000, size 143360 byte
program 085e7000, 100%
Program partition: kp address: 0x8fff000, size 576 byte
program 08fff000, 100%
3. 例程運作
3.1 配置序列槽工具
Windows序列槽工具
• 序列槽工具可以選擇putty/SecureCRT/Xshell等常見Windows工具
• 以Xshell為例,選擇對應的端口号(安裝完序列槽驅動後,從裝置管理器中可以查詢到),波特率設定為115200,資料位設為8,停止位設1,奇偶校驗位和流控制位均設為‘無’:
Linux序列槽工具
• Linux下推薦使用minicom作為序列槽工具,安裝指令:
$sudo apt-get install minicom
• 啟動minicom并配置參數:
$sudo minicom -s
//選擇‘Serial port setup’
A - Serial Device : /dev/ttyS0
E - Bps/Par/Bits : 115200 8N1
F - Hardware Flow Control: No
3.2 開發闆上電
• 按開發闆上的複位按鍵,複位開發闆,開發闆正常上電log列印如下:
boot_v1.4
sdram ok
boot core...build: May 16 2020 14:29:18
BOOT[I] part_num:12
BOOT[E] otp cant find pk region
BOOT[I] verify [prim] ok
BOOT[I] load img & jump to [tee]
BOOT[I] all copy over..
BOOT[I] j m
BOOT[I] j 0x18000000
Tee v1.4.0 Initliaze done, Jun 22 2020 17:29:06
... 後續日志省略
3.3 配置 WiFi 密碼
首次上電時,開發闆沒有配置 WiFi 使用者名密碼,無法連接配接無線路由器。使用者可以通過序列槽指令行指令快速配置 WiFi 密碼,步驟如下:
• 序列槽中輸入指令分别設定 WiFi 參數(ssid, password),其中 {ssid} 為 wifi 名稱,{password} 為 wifi 密碼,如果路由器沒有密碼,密碼可随意填寫
注意:所有指令都需要以換行符 \n 或\r\n結尾
kv set wifi_ssid {ssid}
kv set wifi_psk {password}
• 可以通過 kv get wifi_ssid/kv get wifi_psk 來擷取設定的ssid/密碼,驗證設定是否正确
kv get wifi_ssid
kv get test
kv get wifi_psk
kv get 123456
• 按開發闆複位鍵,重新開機開發闆
• 等待語音提示 正在啟動,網絡連接配接成功,并可以觀察到序列槽列印輸出 wifi 連接配接成功
7.801532[netmgr ]start dhcp
7.855701[netmgr ]IP: 192.168.1.103
也可以通過指令ifconfig檢查網絡連接配接狀态,如果Wi-Fi連接配接失敗,會顯示“WiFi Not connected”:
ifconfig
wifi0 Link encap:WiFi HWaddr 18:bc:5a:60:d7:f1
inet addr:192.168.1.80
GWaddr:192.168.1.1
Mask:255.255.255.0
DNS SERVER 0: 208.67.222.222
WiFi Not connected
3.4 語音互動示範
開發闆成功連網後,就可以進行語音互動示範了。
開發者可以通過喚醒詞“寶拉寶拉”喚醒開發闆,之後可以通過語音指令控制或詢問開發闆。
互動示例
人:寶拉寶拉
機:在
人:杭州天氣
機:杭州今天陰轉小雨,微風,15攝氏度,出門别忘了得帶傘哦!
人:聲音調大一點
機:好的
常用語音互動指令
控制指令:
• 聲音大點/提高音量
• 聲音小點/降低音量
• 停止播放
• 繼續播放
互動指令:
• 講個笑話
• 現在幾點
• 天氣預報/{城市}天氣/明天天氣/後天天氣/下周天氣
3.5 其他測試指令
更多測試指令,請參考解決方案檔案夾下面的README.md檔案。