一、前言AI智慧音箱是人工智慧與傳統音箱結合的產物。其基本原理是使用者使用自然語言與機器(即音箱)交流,音箱通過識別使用者的語音指令完成相應任務,如點播音樂、收聽新聞、設置日程、查詢資訊等。當今AI智慧音箱,已被認為是物聯網時代的入口,在去年成為了各大廠商爭相投入的風口。因它不僅僅是一台單純的音樂播放機,在其背後支撐的 AI 技術才是整個產品的核心,也是各大公司覬覦物聯網入口的最根本原因。經歷了2017年的爆發式增長,到現在AI智慧音箱已經成為最熱門的硬體產品之一,因此各種客制化的產品如雨後春筍般的噴湧而出。二、基於“RTL8723DS +A113”開發的智慧音箱模組設計鑒於市場的蓬勃發展,我們審時度勢,推出基於“RTL8723DS +A113”開發的智慧音箱模組設計,更加方便工程師的應用需求,注意 Amlogic/A113 開發手冊目前只面向 Rokid 開發者提供。如未註冊成為Rokid 開發者,請先至 Rokid 官網註冊成為開發者,具體請訪問https://developer.rokid.com/。
什麼是 Rokid 開放平臺
Rokid 開放平臺提供語音整體方案,實現產品的快速智慧化,讓產品擁有語音交互能力,使終端使用者直接使用語音就能與設備進行交互。目前這套方案已用於多款智慧設備,可以在Rokid Alien、Rokid Pebble等產品上體驗(快速瞭解:https://www.rokid.com)。
平臺在技能商店中提供豐富的成熟技能(Skill,可以理解為手機中的 APP),開發者只需簡單的添加或申請操作,即可快速配置到產品中,終端使用者就可以通過語音命令獲取音樂、新聞、天氣、問答等各種日常服務。當技能商店中的技能不能滿足業務需求時,開發者還可以在平臺提供的技能開發工具中,創建開發個性化技能,滿足定制需求。
Rokid開放平臺語音整體方案建立在雲端,將會隨著終端使用者不斷的使用而變得更加智慧。同時也會因為開發者不斷新增的各種技能而變得更加好用全面。
Rokid 開放平臺的優勢
1. 頂尖的AI能力
Rokid 自主研發的語音智慧技術,包括遠場語音喚醒、語音辨識、語義理解等核心AI能力,效果行業領先,為輕鬆流暢的用戶體驗保駕護航。
2. 成熟的場景解決方案
Rokid提供智慧音箱、智慧電視、智慧兒童故事機等場景解決方案,它們均已成功應用於產品中,經過市場驗證已經相當成熟。
3. 全棧語音解決方案
Rokid開放平臺提供的整體語音方案包含從前端硬體的遠場拾音、降噪、回聲消除等技術,到語音辨識、語義理解、自然語言合成這一全鏈路解決方案,實現一站式服務。
5. 操作簡單便捷
Rokid開放平臺提供完整成熟的語音整體方案,包括持續豐富的成熟技能、專業而簡單的技能開發工具,助力開發者快速實現產品的智慧化。同時提供豐富的文檔和開發者社區,低門檻易上手。
Rokid 開放服務合作方式
基礎語音服務
- 提供硬體設計參考方案
- 提供遠場啟動拾音、降噪、回聲消除等硬體技術方案
- 提供基礎語音服務
- 語音辨識(ASR)
- 自然語言理解(NLP)
- 語音合成播報(TTS)
- 使用Rokid雲服務
- 可以使用平臺中的所有公共技能(Skill)
- 可以自訂3個字及以上啟動詞
其他服務
- 涉及版權的技能(Skill)內容
- 需要 Rokid 提供額外人力支援的部分
發佈時間
- 2017年4月1日,開放內測。
- 2017年6月1日,正式發佈。
支持
1)開發板套件基本參數介紹
1.1. Rokid語音整體方案
通過接入Rokid智慧語音服務,您可以為配有麥克風和揚聲器的聯網硬體設備添加語音交互體驗,使得您的手機、電視、音箱等智慧設備輕鬆擁有語音交互的能力。
同時,平臺還提供了包括內容類別、工具類和互動類等不同類型的垂直語音技能。您的設備接入Rokid後,即可使用眾多豐富有趣的 Rokid 公有技能,您也可以為自己的設備創建個性化的私有技能。
1.2. 接入方案類型
-
全鏈路通用方案:包括前端語音啟動/降噪以及 Rokid 語音辨識服務和語音合成服務的相關能力。
-
基礎語音模組:基礎語語音服務的輸出,包括語音辨識服務和語音合成服務。
-
全開源方案:YODAOS系統,可根據廠商或者個人開發者的需求,靈活修改,也歡迎開發者一起建設。
-
CPU: Amlogic A113X A53x4 up to 1.5Ghz
-
Memory: 256MB DDR3 + 512MB Nand Flash
-
Mic Array: PDM mic x 4
-
Audio:line out 3.5mm
-
Network:802.11 a/b/g/n/ac
-
Bluetooth: BT 4.1/BLE
-
LED: RGB LED x 12
-
DC in:USB-Type C 5V
2) 硬體設計參考資料(請聯繫Amlogic官方或者參考附件原理圖)
3) CPU 功能板介紹
3.1 軟體設計參考資料(請聯繫Amlogic官方或者參考相關網站)
3.2 代碼獲取
repo init -u ssh://your-account@openai.rokid.com:29418/amlogic_a113_audio/manifest -m rokidbase.xml
repo init -u ssh://your-account@openai.rokid.com:29418/amlogic_a113_audio/manifest -m rokidbase.xml --repo-url=ssh://your-account@openai.rokid.com:29418/tools/repo --no-repo-verify
3.3
Rokid對上游代碼的修改目錄
├── bootloader
│ └── uboot-2015-dev
├── buildroot
│ ├── board
│ │ ├── amlogic
│ │ └── rokid
│ ├── configs
│ │ └── banban_m_a113_release_defconfig
│ ├── fs
│ │ ├── cpio
│ │ └── ubifs
│ └── package
│ ├── android-tools
│ ├── systemd
│ └── tinyalsa
├── build.sh
├── kernel
│ └── aml-4.9
├── multimedia
│ └── libplayer === disabled by rokid.
├── robot
│ ├── apps
│ │ ├── bluetooth
│ │ ├── chat
│ │ ├── cloudappclient
│ │ ├── konnichiha
│ │ ├── miss
│ │ ├── network
│ │ └── volume
│ ├── external
│ │ ├── android-kernel-headers
│ │ ├── librplayer
│ │ ├── libuv_callback
│ │ ├── ota_unpack
│ │ ├── power_ctrl
│ │ ├── rokidos-node
│ │ ├── rplayer-demo
│ │ ├── vol_ctrl
│ │ ├── wpa_ctrl
│ │ └── znode
│ ├── frameworks
│ │ └── native
│ ├── hardware
│ │ ├── libhardware
│ │ └── modules
│ ├── openvoice
│ │ ├── ams
│ │ ├── blacksiren
│ │ ├── openvoice_process
│ │ └── speech
│ ├── services
│ │ ├── bootanim
│ │ ├── btflinger
│ │ ├── jsproxy
│ │ ├── lumenflinger
│ │ ├── pivotdb
│ │ ├── pkgm
│ │ ├── power_monitor
│ │ ├── shadowgrade
│ │ ├── ttsflinger
│ │ ├── wifi_monitor
│ │ ├── www
│ │ └── zygote
│ └── system
│ ├── core
│ ├── extras
│ ├── property
│ └── property_service
└── rokid_br_external
├── build
│ ├── buildprop.sh
│ ├── ci_build.sh
│ ├── envsetup.sh -> setenv.sh
│ ├── rokidclean.sh
│ └── setenv.sh
├── Config.in
├── external.desc
├── external.mk
└── package
├── ams
├── android-fw-native
├── android-hardware
├── android-kernel-headers
├── android-system-core
├── apps-bluetooth-nodejs
├── apps-cloudappclient-nodejs
├── apps-konnichiha-cpp
├── apps-miss-nodejs
├── apps-network-nodejs
├── apps-volume-nodejs
├── blacksiren
├── bootanim
├── btflinger
├── cloudappclient-native
├── fw_env
├── librplayer
├── libuv_callback
├── lumenflinger
├── openvoice_process
├── ota_unpack
├── pivotdb
├── pkgm
├── power_ctrl
├── power_monitor
├── property
├── property-service
├── rokidos_node
├── rplayer-demo
├── shadowgrade
├── speech
├── ttsflinger
├── vol_ctrl
├── wifi_monitor
├── wpa_ctrl
├── www
├── znode
└── zygote
3.4
U-Boot
修改了廠商代碼,支援Rokid的板級配置目錄
3.5
Kernel
修改了廠商代碼,支援Rokid多型號板子的DST配置目錄
3.6
編譯指令
目前僅支持64位版本。
編譯A113請選擇'banban_m_a113_release'
source rokid_br_external/build/setenv.sh
輸出
Environment setting is OK! Just type 'lunch' and you will get a list of choices, or you can type 'lunch [choice]' to lunch directly.
lunch
輸出
You are building on Linux echo Lunch menu... pick a combo: 1. nana_t_s905d_release 2. nana_l_a112_release 3. rm101_s905d_release 4. rp102_s905d_release 5. banban_m_a113_release
3.7. nana_t2_s905d_release 7. banban_m2_a113_release 8. banban_m3_a113_release Which would you like?
其中banban_m_a113_release:為 A113 6mic v1.0 麥克風板,版本號 v1.0 在麥克風板正中央絲印上
banban_m2_a113_release: 為 A113 4mic 麥克風板
banban_m3_a113_release: 為 A113 6mic v1.1 麥克風板, 版本號 v1.1 在麥克風板正中央絲印上
請根據開發板型號選擇相應軟體版本
3.8
編譯代碼
make
ROKID OS簡介
RokidOS 是一個針對多種不同設備類型打造的開放原始程式碼以語音交互為特色的軟體堆疊。RokidOS 主要目的是為運營商、設備製造商、DesignHouse 和開發者創造一個開放的軟體平臺,使他們能夠將創新理念變為現實,並推出能夠卓有成效地改善使用者體驗的真實產品。
1、配置編譯環境
在做之前先配置一下編譯所需的環境(就是下載一些所需的安裝工具),ROKIDOS提供兩種編譯環境64位Ubuntu和Dector。
2、下載原始程式碼和安裝repo工具
首先要先註冊成為ROKID平臺開發者(https://openai.rokid.com/#/dashboard/self),接下來要下載代碼要先進行授權(就是將你的機器代碼加到個人帳號下,具體可以看下面的操作方法)
安裝repo工具(請自行搜尋連結獲取安裝方法)
3、刷機準備
刷機時有兩種系統Android和Linux,通常刷機提供兩種方式官方刷機和fastboot方式,請聯繫請聯繫Amlogic官方獲取。
兩種系統鏡像下載位址:
ROKIDOS Android開發板鏡像下載:https://developer-forum.rokid.com/t/topic/1178
ROKIDOS Linux開發板鏡像下載:https://developer-forum.rokid.com/t/topic/1152
下載對應開發板的鏡像,當顯示開發板連接成功後在刷機工具裡導入後點擊開始,開始燒錄。完成之後點擊停止,
就完成燒錄鏡像了。
如果你的機器上沒有安裝adb或者adb驅動版本太舊可以去下面的連結中下載與你機器系統相對應的驅動
在解壓完之後,使用adb shell 的時候要先進入到你解壓驅動的資料夾目錄下
Rokid Open Voice SDK快速集成指南
簡介
Rokid開放平臺SDK包含Siren、NLP、ASR、TTS幾大模組。使用Rokid開放平臺的SDK之前,首先需要有一套 Android 源碼,然後下載以下SDK模組:
Android 6.0 使用
git clone https://github.com/Rokid/rokid-openvoice-sdk-deps-protobuf -b android23
命令獲取protobuf。另外,這裡為大家提供了rokid-openvoice_process-android-pro代碼幫忙大家快速集成。
接下來會從以下6個步驟完整講述如何為自己的項目部署Rokid開放平臺的SDK:
1 目錄結構
命名建議與上圖一致,先在 Android 根目錄建一個 openvoice 資料夾,把上圖中的庫放進去
rokid-openvoice_process-android-pro 與整個的業務邏輯相關,其中包含一個 openvoice_proc 的C++服務和一個 VoiceClient 的Java服務,以及MIC HAL。C++服務用於為Siren提供pcm流,然後傳遞由Siren濾波降噪過的純淨語音給NLP或ASR,NLP或ASR經過雲端處理返回結果,還有一個最重要的點就是維持Siren與NLP或ASR之間的狀態。Java服務用於解析NLP或ASR返回結果,處理應用層邏輯。
2 配置
1、進入Rokid開放平臺申請Rokid帳號,已經有Rokid帳號的同學可直接登錄(但需進行部分資訊補全)。
2、登錄後點選「語音接入」進行設備認證資訊申請。
3、具體做法:語音接入 > 創建新設備 > 填寫設備名稱 > 創建認證文件。之後您將獲得:
account_id、device_type_id、device_id、secret、key
通過以上資訊,您就可以獲取Rokid語音服務了,然後把申請得到的帳號資訊寫入到 /rokid-openvoice_process-android-pro/etc/openvoice-profile.json
文件中。
{
"host": "apigwws.open.rokid.com",
"event_req_host": "apigwrest.open.rokid.com",
"port": "443",
"branch": "/api",
"key": "rokid_test_key",
"device_type_id": "rokid_test_device_type_id",
"device_id": "rokid_test_device_id",
"secret": "rokid_test_secret",
"api_version":"1",
"lang": "zh",
"codec": "opu",
"vad_mode": "cloud",
"vend_timeout": 500
}
請添加如下內容到 /device/xxxx/p230/p230.mk
,每個人的路徑是不一樣的。這一步是為了讓SDK編譯出來的東西打包進system.img。
注意SDK存放位置
include openvoice/rokid-openvoice_process-android-pro/device/xxxx/p230/openvoice.mk
3 處理許可權問題
Android 基於Linux引入了selinux,這是專門為Linux設計的一套安全機制。它有三種工作模式,Android4.2 以前一直處於Permission模式,之後便工作在enforcing模式,這就需要我們根據selinux的規範添加相應的.te文件,建議在開發階段設回Permission,省掉一大堆許可權問題。
/system/core/init/init.cpp
static selinux_enforcing_status selinux_status_from_cmdline() {
selinux_enforcing_status status = SELINUX_ENFORCING;
修改為
selinux_enforcing_status status = SELINUX_PERMISSIVE;
}
4 添加系統啟動項
進入到 /device/xxxx/common/products/mbox/init.xxxx.rc
加入如下內容,每個人的目錄是不一樣的。因為rokid-openvoice_process-android-pro中的C進程編譯出來為openvoice_proc,所以我們加在這裡,讓init進程幫我們啟動。
service openvoice_proc /system/bin/openvoice_proc
class main
user root
group root root
5 編譯
如果你的開發板使用的是USB MIC,你需要定義巨集 USB_AUDIO_DEVICE,具體操作如下:
/rokid-openvoice_process-android-pro/Android.mk
LOCAL_CPPFLAGS += -DUSB_AUDIO_DEVICE
請修改如下內容:
/rokid-openvoice-sdk/Android.mk
include $(LOCAL_PATH)/JavaLibrary.mk
修改為
#include $(LOCAL_PATH)/JavaLibrary.mk
單編 :
先編譯 Andorid,然後使用 mm 依次編譯:rokid-openvoice-sdk-deps-protobuf,rokid-openvoice-sdk-deps-poco,rokid-openvoice-sdk,rokid-blacksiren,rokid-openvoice_process--android-pro。
整編 :
./build/envsetup.sh
lunch
make aprotoc -j8
make -j8
6 調試
以上是一套完整的集成流程,到目前為止已經完成了50%的工作。調試主要圍繞MIC這塊,拾音以及語音辨識準確度都圍繞在這裡,建議大家分兩步:
第一步:測試硬體是否OK,我們使用tinycap命令抓取pcm裸資料,這個命令是從kernel層直接拿資料,不經過HAL層,這樣可以定位問題。然後用 Audacity 或 Adobe 工具分析波形,不能有雜音或奇怪的波形出現。
adb shell
stop openvoice_proc
cd /sdcard
tinycap file.wav [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p period_size] [-n n_periods]
card :選擇一個MIC設備,可以執行`cat /proc/asound/cards` 下查看
device :0代表輸入,1代表輸出
channels :通道數
rate :取樣速率,Siren取樣速率最小必須為48K
bits :位元速率,32/24/16
period_size :週期
periods :點
例:
tinycap 1.wav -D 0 -d 0 -c 8 -r 48000 -b 32 -p 1024 -n 8
adb pull sdcard/1.wav ./
第二步:拾音
附件1:
如圖,MIC可以呈三維立體設計,但一般都是二維的。不管怎樣,只要找到圓心,順時針測量從圓心到MIC之間的距離。例如上面pos.0的座標:x=0.00000000,y=0.03000000,z=0.00000000,單位為”米“。
三、基於“RTL8723CS +A113”系統硬體模組設計由於該模組由AMLogic 主控+Realtek wifi/BT Combo 組成,集成了強大的功能,完成模組設計後,其終端使用者僅僅需要搭配簡單的外設電路即可完成整個系統產品的設計及開發。從而讓終端客戶集中圍繞于其他配套的生態產品建設,大大減輕了開發的工作難度及平臺軟體研發的巨大工作量。以下是模組的功能引腳定義,裡面包含RTL8723DS和AMLogic A113及其FW,使用者只需關注終端應用外設設計:3.1 A113參數介紹
CPU
四核ARM Cortex-A53
音訊介面
16通道I2S和S/PDIF輸入輸出介面 TDM/PCM輸入輸出介面,最高支援32通道 8通道PDM輸入介面
顯示介面:
MIPI-DSI 最高支持1920x1080
安全:
支援安全啟動和安全作業系統
乙太網:
10/100/1000M MAC
IP授權(可選):
Dolby Digital, Dolby Digital Plus DTS Digital Surround, DTS HD, DTS Express
工藝:
28nm HKMG
可應用方案:
智能音箱,智能家居
3.2 RTL8723DS介紹
RTL8723DS是一個單晶片無線區域網路(WLAN),藍牙(BT)組合支援1x1的帶符合IEEE802.11a/b/g/n WLAN標準,具有低功耗、性價比高的優點。RTL8723DS是RTL8723BS的升級版本晶片方案,而且模組化後,採用的是硬體完全相容的設計:
WiFi連接方式:SDIO 1.1/2.0 or GSPI介面,速率高達150Mbps;
BT連接方式:高速的HS-UART介面;
Wlan部分性能:CMOS MAC地址、帶通PHY和射頻集成於一體;
符合標準:IEEE 802.11b/g/n/i/e;
藍牙部分:符合BT2.1+EDR和BT4.2要求.向下相容BLE4.0.
工作頻段:2.400GHz ~ 2.4835 GHz(ISM)
供電電壓:DC3V3 ±0.2V
以下為其簡化版設計如下:四、調試4.1、搭建Linux 編譯環境瞭解Kernel 目錄結構•[Arch]架構相關代碼,包括arm,mips,sh,spark,x86,•[Block]塊設備基礎代碼;•[Crypto]加密相關•[Documentation]kernel相關文檔•[Drivers]驅動相關代碼•[Fs]檔案系統相關代碼•[Include]共用標頭檔目錄•[Init]系統系統代碼•[Ipc]IPC通信,Message Queue等相關代碼•[Kernel]內核進程管理相關目錄
4.2、進一步剖析Linux 的內核
•Linux System Start Steps
•Interrupter Manage
•Memory Manage
•Cache Manage
•Task Manage
•Linux Kernel Module
4.3、熟悉Linux 調試的環境
•Metaware調試內核和驅動
•GDB/insight調試應用程式
•Procfs
•Oprofile優化代碼
五、開發工具介紹
5.1 AML Customization Tool (AML自訂工具)
下面簡單介紹這個工具的基礎知識。 當你第一次載入工具將選擇中文。 第二個功能表項目是英語。
第一步是解壓img文件。 按load按鈕,系統將提示您你想解壓縮。 我檢查他們所有在這一點上,除了一個底部。 現在有一個問題和最後一個的工具。 然後選擇img我們移植。 這將需要一段時間。
一旦img打開導航到安裝自訂工具和重命名tmp目錄Tronsmar
現在再次重複這個過程Nexbox股票img。 不要關閉直到我們完成定制工具。
現在我們有2 img的完全打開,在每一個目錄中有兩個資料夾:1級和2級。 一級所有單獨的分區,今天我們不會做任何事情。 2級有不同的分區爆發所以我們可以操縱他們。 我們只需要進入系統做這個港口。
現在Nexbox固件、刪除應用程式,字體,框架,媒體,priv-app在系統目錄中,並從Tronsmart複製它們。
此時回到定制工具按包按鈕並將其保存在某個地方。 如果我這樣做我第一次將flash和做一些測試,看它是否啟動,Wifi、遠端等。這也讓你到一個好地方回到所以以防出現壞你不需要做整件事一遍又一遍。 當你正在探索最好這樣做經常為了節省一些時間和頭痛。
小心當你包一個img,你必須關閉自訂工具,打開最後一個你了。 有一個錯誤,如果你包改變測試然後再包而不需要重新開機和重啟。 所有img的後第一個包不能打開的工具。
最後的調整
這是我們的機會刪除所有img的膨脹和清潔。 當我清潔一個img的拍照應用抽屜裡與我的電話和刪除任何不需要的應用程式從應用程式目錄或priv-app目錄。 請注意還有一個預裝目錄不安裝任何東西。 我刪除一切收拾。 我嘗試修復快,但沒有花太多時間在這上面。
我也取代了Tronsmart引導不同的動畫。 這是在媒體上目錄。
您還可以修改引導img和標識使用此工具。 我使用gimp修改標識。 首先我將導航到圖示資料夾在二級目錄中。 最大的檔啟動是一個bmp檔。 重命名來啟動。 bmp,右鍵點擊屬性和注意尺寸和深度。 在這種情況下,它是一個32位1280×720 bmp img。 找到任何圖片或標誌…你的想像力的極限是但是你必須確保你的維度和位深度是恰當的。 在gimp你出口到bmp和選擇32位…如果正確完成你的檔將相同的大小與原始。 重命名啟動和刪除原始。 完成後你可以包,享受你的新標誌。 我相信該工具本身將進口但是我喜歡做手工。 我唯一使用工具是解包和包img。
故障排除
所以到目前為止我們還沒有觸及幾個工具。 這是一件好事。 但是如果我們確實遇到了一些麻煩無以倫比可以大大減少時間。 使用此工具可以比較的所有檔從股票羅,羅你移植。 如果我遇到了麻煩在內核引導入手比較級別2。 也許在一個rc檔的引用不同的東西。 這可能導致許多時間丟失。 我失去了許多,而不是成功。 準備做大量的閱讀和研究。 我包括HXD和notepad++如果你要修改一個檔。 在Windows記事本它沒有認識到Linux回車。
如果你想安裝自訂圖像在你NEXBOX A95X (Amlogic S905)電視盒子,這是自訂固件連結
5.2 Bootloader Console
用於修復/功能與UBOOT的溝通工具Burn Card Maker,是最簡單解決這個問題的方法且不需要短路NAND的別針,我們使用Amlogic BootcardMaker做出微型SD卡引導與你的設備的固件,請自行尋找連結下載,見下圖所示:
代碼:
GXM: b11: dc8b51:76f1a5;壯舉:ADFC318C: 0; POC: 3;紅十字青少年:0; EMMC: 0;讀:0;分:AA; SD: 0;閱讀:0;分:AA; USB: 8;
這意味著框不能讀eMMC和SD卡,如果你有一個插入、正確引導u-boot不是準備。如果你看到u-boot載入引導你也許只有一個問題。 img或復蘇。 img,可以固定數量的方式包括以下。正常啟動看起來像這樣:
代碼:
GXM: b11: dc8b51:76f1a5;壯舉:ADFC318C: 0; POC: 3;紅十字青少年:0;EMMC: 0;閱讀:0;0.0;分:0;
TE: 147717
b12建:2016年8月31日19:58:22。
gxl g54c8aee -xiaobo.gu@droid05設置vdd cpu_a 1120 mv
設置vdd cpu_b 1050 mv
設置vddee 1000 mv
董事會ID = 2
CPU時鐘:1200 mhz
DQS-corr啟用
DDR爭奪啟用
的背影:DDR3 Rank0 + 1 @ 912 mhz -通過
2 t-13 Rank0: 1024 mb(汽車)
2 t-13 Rank1: 1024 mb(汽車)
DataBus測試通過!
AddrBus測試通過!
- s
負載金頭球eMMC src: 0 x0000c200 des: 0 x01400000 x00004000大小:0
新工廠檢驗計畫結構!
從eMMC載入bl30 src: 0 x00010200 des: 0 x01100000 x0000d600大小:0
從eMMC載入bl31 src: 0 x00020200 des: 0 x10100000 x00015400大小:0
從eMMC載入bl33 src: 0 x00038200 des: 0 x01000000 x000a9200大小:0
注意:BL3-1: v1.0(調試):2 e39a99
注意:BL3-1:建造:16:36:21,2016年9月20日
aml日誌:bl31正常啟動!
(圖片:gxl_v1.1.3153 - 831 ee11 2016-09-23 19:09:41yan.wang@droid05]
行動= 0 x82
2 b c1 3 4 d 9 c 87 d8 6 b 3 e fe 40 85 [0.395813] init做
任務啟動安全!
高任務啟動!
任務啟動低!
信息:BL3-1:初始化運行時服務
警告:沒有提供OPTEE b12的引導載入程式
初始化運行時服務opteed_fast錯誤:錯誤
信息:BL3-1:準備EL3退出正常世界
信息:地址= 0 x1000000 BL3-1:下一個圖像
信息:spsr = 0 x3c9 BL3-1:下一個圖像
U-Boot 2015.01(2016年10月01 - 13:36:46)
DRAM: 2直布羅陀海峽
ec9000搬遷補償是:76
引導載入程式階段b11 BL3-1手臂可信固件。BL3-3引導載入程式階段U-Boot。b11——這是引導載入程式階段1不是eMMC。b12的——這是第二階段的引導載入程式和eMMC。BL30 - ? 沒有特定的關於這個BL31——這是引導載入程式階段3 - 1和eMMC。BL33——這是引導載入程式階段3 - 3和eMMC。 這是u-boot。與用磚設備你可能沒有引導載入程式階段b12——BL3-3 eMMC了。如何恢復沒有USB燃燒的工具唯一的區別是方法來獲取u-boot到sdcard。 您可以使用dd在windows上如果你想要,只要記住跳過第一個512位元組的u-boot檔和sdcard。步驟1:你需要三個檔:aml_upgrade_package。 img, aml_sdc_burn。 ini, aml_sdc_burn.UBOOT你可以從第一個最後兩個檔通過使用提取代碼連結或Amlogic定制工具。步驟2:窗戶使用Amlogic寫aml_sdc_burn Bootcard製造商。 UBOOT sdcard。Linux使用dd aml_sdc_burn寫。 UBOOT sdcard。 這通常會適合MBR和第一個分區之間沒有任何調整。
代碼:
如果= aml_sdc_burn dd。 UBOOT = / dev /設備尋求= 1跳過= 1 b = 512
步驟3:aml_upgrade_package副本。 img和aml_sdc_burn。 ini卡。然後把sd卡槽和權力這個盒子。就是這樣。注意:您還可以使用這種方法用牙籤來更新如果你的盒子沒有完全用磚。 不是完全用磚以來它不會引導了sdcard預設情況下,這就是為什麼需要牙籤來告訴它你想升級。
5.3 AMLogic Flash Tool
5.4 Upgrade Info Tool
ALL in ONE 開發板 AMLOGIC 905D android代碼編譯燒寫教程
設置 android 編譯環境
64-bit_Ubuntu 系統
-
安裝 Ubuntu (14.04或者 16.04) 64位元系統。記憶體至少8G, CPU核數至少4個,單個可用分區至少60G。
如有需要,可以下載VMWARE的虛擬機器鏡像,我們提供的ubuntu鏡像密碼是Rokid123:
14.04鏡像:ftp://ftp-customer:9921/images/vmware/ubuntu_14.04.5_64.zip
16.04鏡像:ftp://ftp-customer:9921/images/vmware/ubuntu_16.04.3_64.zip
- 安裝編譯必須的套裝軟體:
sudo apt-get install git-core gnupg gperf zip cscope ctags libz-dev libexpat-dev \
python language-pack-en texinfo zlib1g-dev x11proto-core-dev libx11-dev\
build-essential g++ git bison flex unzip gcc-multilib g++-multilib libgl1-mesa-dev \
libssl-dev libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
wget bc ccache curl libc6-dev-i386 lib32ncurses5-dev lib32z-dev
- 安裝java環境並配置java環境變數;安裝命令如下:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
保證java -version 有以下結果:
java -version
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-1ubuntu0.14.04.3)
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)
安裝repo 工具
- 確保主目錄下有一個 bin/ 目錄,並且該目錄包含在路徑中:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2.根據您的辦公網路情況,獲取 repo 工具。
-
可以翻牆
如果您的辦公環境可以翻牆訪問 Google 網站,您可以使用Google 官方發行的 repo 工具。
$ curl -Ls -o ~/bin/repo https://storage.googleapis.com/git-repo-downloads/repo
$ chmod a+x ~/bin/repo
-
不能翻牆
如果您的辦公環境可以不能訪問 Google 網站,您可以使用Rokid 修正版的 repo 工具。
$ curl -Ls -o ~/bin/repo http://scm-deps-library.rokid-inc.com/linux/buildroot_dl_aml/tools/repo
$ chmod a+x ~/bin/repo
初始化 repo 用戶端
需要根據您的開發板的晶片廠商來選擇具體的代碼下載庫。我們最近在外網代碼倉庫中加入了許可權管理,各位可以參考配置代碼許可權,申請帳號,並配置許可權。之後再執行以下命令,同步代碼:
注意命令中的user對應的openai的用戶名。
以下示例同步的代碼僅保證支援Amlogic-905D開發板。
-
運行repo init
repo init -u ssh://{user}@openai.rokid.com:29418/amlogic-sdk-s9xx/manifest -m rokid_sdk_release.xml
repo init -u ssh://{user}@openai.rokid.com:29418/amlogic-sdk-s9xx/manifest -m rokid_sdk_release.xml --repo-url=ssh://{user}@openai.rokid.com:29418/tools/repo --no-repo-verify
-
下載RokidOS 代碼樹
-
編譯代碼樹
source
build/envsetup.sh
lunch nanat2-userdebug-32
# 或 lunch 對應的id號
lunch 69
make update-api
make -j40
如果用ubuntu16.04的版本,可能出現以下報錯:
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set16_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set16_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set32_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set32_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set_obj_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set_obj_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set64_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set64_instance: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set64_static: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_set64_static: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_proxy_invoke_handler: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_resolution_trampoline: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_resolution_trampoline: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_generic_jni_trampoline: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_to_interpreter_bridge: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_to_interpreter_bridge: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_instrumentation_entry: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_instrumentation_entry: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_instrumentation_exit: error: unsupported reloc 43
out/host/linux-x86/obj32/SHARED_LIBRARIES/libart_intermediates/arch/x86/quick_entrypoints_x86.o:function art_quick_deoptimize: error: unsupported reloc 43
host C++: libinput <= frameworks/native/libs/input/KeyLayoutMap.cpp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:51: recipe for target ‘out/host/linux-x86/obj32/lib/libart.so’ failed
make: *** [out/host/linux-x86/obj32/lib/libart.so] Error 1
make: *** Waiting for unfinished jobs…
Install: out/host/linux-x86/bin/apicheck
```
需要做以下修改:
It works to me:
in file /art/build/Android.common_build.mk, find out:
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
change to :
# Host.
ART_HOST_CLANG := false
ifeq ($(WITHOUT_HOST_CLANG),false)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
endif
結構
對於AMLOGIC開發板一共包含5個部分。
- CPU板
- MIC板
- DEBUG板
- CPU_MIC連接排線
- CPU_DEBUG連接排線
連接方法
所有連接線對應的金手指均為向下扣。效果如圖所示:
注意:對於拿到我們測試機(對應下圖)的開發者,請千萬注意CPU_DEBUG連接排線再CPU測是朝向上扣下,如下圖紅框,其餘三端也是朝下扣。
固件燒寫
固件位置
AMLOGIC 905D Android鏡像具體位置及相關介紹如下:
out/target/product/p230/
├── aml_upgrade_package.img #<< Amlogic 官方工具刷機包
├── upgrade/aml_upgrade_package.conf #<< 分區配置分區
├── boot.img #<< 可 fastboot 刷機鏡像,kernel、ramdisk 分區
├── dtb.img #<< 可 fastboot 刷機鏡像,這是一個軟連結,實際刷機時用指向的鏡像
├── recovery.img #<< 可 fastboot 刷機鏡像,OTA 功能主體
├── u-boot.bin #<< 可 fastboot 刷機鏡像,bootloader 分區
固件燒錄方式
固件燒錄可以有以下兩種方式:
整包燒錄
-
安裝Amlogic官方刷機工具11
具體安裝步驟,請自行參閱官方說明。(需要說明的是:最新工具其他品牌HUB也可以使用,或者無HUB直連也可以燒寫)。
-
參考鏡像(20171028)地址: ftp://ftp-customer.rokid-inc.com:9921/images/nanat2/20171028/aml_upgrade_package.img
-
進入刷機模式
首先:開發板核心板TypeC介面與PC已連接。
方法一:接上開發板配套的Debug 板 ,先按住Debug上的 <upgrade> 鍵不能鬆開,再按 <reset> 鍵,刷機工具介面出現已連接,請馬上鬆開按鍵,即表示開發板已經進入刷機模式。
備註:如果用虛擬機器,其中涉及到虛擬機器usb口設備的選擇,需要勾選
Devices-USB-Amlogic GX Chip
Devices-USB-Amlogic,Inc
方法二:通過 Debug 板上的 TypeC 連接串口線,開機後迅速按enter或者space,進入u-boot,輸入update,您將看到刷機工具介面出現已連接,表示開發板已經進入刷機模式。
shell Hit Enter or space or Ctrl+C key to stop autoboot -- : 0 nana_t2# nana_t2# nana_t2# nana_t2#
方法三:如果您沒有debug板或者debug已損壞,可以通過主機板上面的測試點短接,主機板上面reset對應debug的reset按鍵,u對應debug上面的update按鍵。具體位置如下圖,具體操作跟方法二一樣:
方法四:如果您的開發板系統是Android系統(支援ADB),
adb shell reboot update
,您將看到刷機介面出現已連接,表示開發板已經進入刷機模式。
- 刷機工具刷機。點擊刷機工具中的”開始“按鈕,開始刷機,並等待刷機完成,請按照刷機工具中的提示操作。圖中對應的刷機工具版本是usb buring tool v2.1.2。
注意:右上角如果勾選擦除flash,則會擦除整個flash或者emmc,如果不勾選只會燒寫。則只會擦除aml_upgrade_package.conf對應的分區。所以如果需要保存data分區開發者,請注意此選項。
fastboot燒錄
-
進入 fastboot 模式
首先:開發板核心板TypeC介面與PC已連接。
方法一:通過 Debug 板上的TypeC連接串口線,進入u-boot,輸入fastboot
,開發板會進入fastboot模式。(備註:有時需要sudo fastboot)
方法二:如果您的開發板系統是Android系統,adb shell reboot fastboot
,開發板會進入fastboot模式。
-
刷機指令
2.1鏡像檔與設備分區的對應關係
Amlogic晶片的開發板,您可以通過查看** aml_upgrade_package.conf **檔內容,如cat aml_upgrade_package.conf
,來找到一些線索。
#This file define how pack aml_upgrade_package image
[LIST_NORMAL]
#partition images, don't need verfiy
file="u-boot.bin.usb.bl2" main_type= "USB" sub_type="DDR"
file="u-boot.bin.usb.tpl" main_type= "USB" sub_type="UBOOT"
file="u-boot.bin.sd.bin" main_type="UBOOT" sub_type="aml_sdc_burn"
file="platform.conf" main_type= "conf" sub_type="platform"
file="aml_sdc_burn.ini" main_type="ini" sub_type="aml_sdc_burn"
file="dtb.img" main_type="dtb" sub_type="meson1"
[LIST_VERIFY]
#partition images with verify
file="boot.img" main_type="PARTITION" sub_type="boot"
file="recovery.img" main_type="PARTITION" sub_type="recovery"
file="rootfs.ubifs" main_type="PARTITION" sub_type="system" file_type="ubifs"
file="u-boot.bin" main_type="PARTITION" sub_type="bootloader"
file="dtb.img" main_type="PARTITION" sub_type="_aml_dtb"
2.2開發板是 Linux 系統
在PC端執行如下指令:
fastboot flash bootloader u-boot.bin
fastboot flash dtb <開發板型號>.dtb
fastboot flash boot boot.img
fastboot flash system rootfs.ubifs
fastboot flash recovery recovery.img2.3
2.3開發板是 Android 系統
在PC端執行如下指令:
fastboot flash bootloader u-boot.bin
fastboot flash dtb dtb.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash recovery recovery.img
fastboot flash data userdata.img
RokidOS開放原始程式碼項目簡介
RokidOS是 Rokid領導的基於雲端語音服務平臺的一個可以廣泛應用于智慧音箱、車載系統、智慧電視、機上盒等多種設備的開放源碼代碼語音交互系統。您可以用 Rokid提供的技術,為您的客戶提供自然的語音交互體驗。我們整合了大量的工具、APIs、參考解決方案以及文檔,讓任何人都能輕鬆打造具備語音交互能力的設備。
.規格能力介紹:
(1)ROM的鏡像有Android版本和Linux版本
(2)rokid的開發板有兩個s905D版本和A113X版本
其中開發板s905D可以有Android版本和Linux版本,A113X版本只有Android版本
開發板的具體介紹 :請移至官方網站查看
.使用前的準備工作
1.mac安裝adb
參考連結:https://developer.android.com/studio/releases/platform-tools.html
下載完成之後在Mac終端輸入 ./adb shell可以運行 (Mac直接adb)
配置 adb shell
adb的官方介紹和使用: https://developer.android.com/studio/command-line/adb.html#howadbworks
Rokid初體驗
(備註:目前 我使用的開發板中裝入的是Linux系統的A113X板, 接上線就是開機狀態, 可以在adb shell使用getpro查看安裝的iOS鏡像是安卓還是linux。)
一.藍牙配網
手藍牙機配網步驟
(1)打開你的手機APP,打開藍牙若琪APP連結
(2) 打開時是開發板是藍色光圈,
(3) 點擊5次,根據提示一步一步來,成功聯網時會有一注白光,並有聲音提醒(備註:沒有揚聲器,帶耳機)
(4)連接上網就可以直接語音命令若琪,
比如:“若琪,我要聽歌”, “ 若琪,明天的天氣怎麼樣”
連上網後還有更多的功能在APP中玩轉若琪中。
(備註:換一個wift環境就需要配置一次網路 )
二:使用若琪APP
(1)多媒體播放音樂
(2)接入你的智慧設備,使你的智慧設備具有語音功能
(4) 點擊上圖左上角的兩個杠的圖示,出現如下:
主要有:
若琪技能
天氣,時間,手機找回,真心話 ,開發者社區更多技能介紹 連結
智能場景:
可以設定你的智慧場景比如:回家
---你說:我回來了;
---若琪:主人最美,並播放音樂
若琪設置:
可以添加新設備: 讓你的手機可以管理多個設備
也可以點開你的設備獲得設備資訊或解綁設備
問題:
(1):會有手機聯網失敗的現象 ,每次都讓添加設備
(2)手機搜索到的設備就可以控制連接,那麼別人是不是也可以用這個APP連接我的設備????)
(3)藍牙有時關閉會斷網
(4) 有語音清除網路嗎
Rokid語音接入介紹
Rokid語音接入能夠為配有麥克風和揚聲器的聯網硬體設備開啟若琪所提供的智慧語音交互能力。使用者可以直接使用語音讓搭載若琪的設備播放音樂、查天氣、播報新聞,以及其他技能(Skills)所提供的各種服務。
( 備註:語音接入就是給你的設備獲得進入rokid接入的鑰匙(假設rokid是一個房子,你想給房子置辦東西,那麼你就得先進入房子,那麼rokid語音接入就是你獲得進入房子的鑰匙,你只有進入房子才可以給房子添加物件(技能))
語音接入的步驟:
首先需要登錄 Rokid開放平臺,之後按照如下步驟執行
1.登錄Rokid開發者社區,https://developer.rokid.com/#/ ,沒有帳號可以註冊一個,有帳號的可以完善一下資訊就好了)
2.點擊上圖的控制台或者下翻可以找到語音接入
4.創建新設備
5,設備名稱
獲取認證
到此,獲取認證檔的步驟已經結束,您已經可以根據上圖處提供的key secret account_iddevice_id 獲取Rokid提供的服務了
6.
7.
8.adb shell 登錄RokidOS,將上面獲得的 key 等寫入到openvoice_profile.json 中
vi/data/system/openvoice_profile.json
{
"host": "apigwws.open.rokid.com",
"event_req_host": "apigwrest.open.rokid.com",
"port": "443",
"branch": "/api",
"key": "your key",
"device_type_id": "your device_type_id",
"device_id": "your account_id",
"secret": "your secret",
"api_version":"1",
"lang": "zh",
"codec": "opu",
"vad_mode": "cloud",
"vend_timeout": 500
}
9.sync 同步
10.reboot 後即獲得語音接入
(2)為你的設備接入語音能力
方法有2種:
(1)給您的Rokid ALL inONE 全棧開發套件刷寫代碼
(2)使用SDK
1.接入前的準備:
(1)Ubuntu 64位環境的搭建:
(a)可能你的電腦是window,Mac : 想要安裝虛擬機器:
window:VWWare 破解版:https://pan.baidu.com/s/1bq3QU1T#list/path=%2F
Mac:VWWare fusion破解版:https://www.douban.com/note/645909864/
(備註:Mac的安全和隱私可能會阻止運行,去修改即可)
(b)ubuntu鏡像密碼是Rokid12314.04
14.05鏡像:
16.04鏡像:請移植官方網站下載