基于 RTL8723DS +A113 开发的智能音箱模块设计方案

一、前言
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 提供额外人力支持的部分
    • 例如自定义激活词的训练
    • 或自定义的TTS人声训练

发布时间

  • 2017年4月1日,开放内测。
  • 2017年6月1日,正式发布。

支持

1)开发板套件基本参数介绍
1.1. Rokid语音整体方案
通过接入Rokid智能语音服务,您可以为配有麦克风和扬声器的联网硬件设备添加语音交互体验,使得您的手机、电视、音箱等智能设备轻松拥有语音交互的能力。
  • Rokid语音整体方案,融合了从前端硬件的远场拾音、降噪、回声消除等技术,到语音识别、语义理解、自然语言合成等AI技术和iot物联网技术,提供硬件到软件全链路解决方案,助力开发者快速实现产品的智能化。

  • 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 是Google官方版本

repo init -u ssh://your-account@openai.rokid.com:29418/amlogic_a113_audio/manifest -m rokidbase.xml
  • repo 是Rokid 修正版本

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
  • 下载代码树

    repo sync
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,用户只需关注终端应用外设设计:
1
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
以下为其简化版设计如下:
2


四、调试
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自定义工具)
下面简单介绍这个工具的基础知识。 当你第一次加载工具将选择中文。 第二个菜单项是英语。
2
第一步是解压img文件。 按load按钮,系统将提示您你想解压缩。 我检查他们所有在这一点上,除了一个底部。 现在有一个问题和最后一个的工具。 然后选择img我们移植。 这将需要一段时间。
3
4
一旦img打开导航到安装自定义工具和重命名tmp目录Tronsmar
5

现在再次重复这个过程Nexbox股票img。 不要关闭直到我们完成定制工具。

现在我们有2 img的完全打开,在每一个目录中有两个文件夹:1级和2级。 一级所有单独的分区,今天我们不会做任何事情。 2级有不同的分区爆发所以我们可以操纵他们。 我们只需要进入系统做这个港口。

6


现在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卡引导与你的设备的固件,请自行寻找链接下载,见下图所示:

6

代码:
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

 


7

5.4 Upgrade Info Tool

7

ALL in ONE 开发板 AMLOGIC 905D android代码编译烧写教程

设置 android 编译环境

64-bit_Ubuntu 系统

  1. 安装 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
  2. 安装编译必须的软件包:
         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

  3. 安装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 工具

  1. 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
$ mkdir ~/bin
$ PATH=~/bin:$PATH

2.根据您的办公网络情况,获取 repo 工具。

  1. 可以翻墙

    如果您的办公环境可以翻墙访问 Google 网站,您可以使用Google 官方发行的 repo 工具。

    $ curl -Ls -o ~/bin/repo https://storage.googleapis.com/git-repo-downloads/repo 
    $ chmod a+x ~/bin/repo
  2. 不能翻墙

    如果您的办公环境可以不能访问 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 是Google官方版本
    repo init -u ssh://{user}@openai.rokid.com:29418/amlogic-sdk-s9xx/manifest -m rokid_sdk_release.xml
    • repo 是Rokid 修正版本
    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 代码树

repo sync
  • 编译代码树

    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个部分。

  1. CPU板
  2. MIC板
  3. DEBUG板
  4. CPU_MIC连接排线
  5. 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 分区

固件烧录方式

固件烧录可以有以下两种方式:

整包烧录

  1. 安装Amlogic官方刷机工具11

    具体安装步骤,请自行参阅官方说明。(需要说明的是:最新工具其他品牌HUB也可以使用,或者无HUB直连也可以烧写)。

  2. 参考镜像(20171028)地址: ftp://ftp-customer.rokid-inc.com:9921/images/nanat2/20171028/aml_upgrade_package.img

  3. 进入刷机模式

首先:开发板核心板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
,您将看到刷机界面出现已连接,表示开发板已经进入刷机模式。

  1. 刷机工具刷机。点击刷机工具中的”开始“按钮,开始刷机,并等待刷机完成,请按照刷机工具中的提示操作。图中对应的刷机工具版本是usb buring tool v2.1.2。

注意:右上角如果勾选擦除flash,则会擦除整个flash或者emmc,如果不勾选只会烧写。则只会擦除aml_upgrade_package.conf对应的分区。所以如果需要保存data分区开发者,请注意此选项。

fastboot烧录

  1. 进入 fastboot 模式

    首先:开发板核心板TypeC接口与PC已连接。
    方法一:通过 Debug 板上的TypeC连接串口线,进入u-boot,输入fastboot,开发板会进入fastboot模式。(备注:有时需要sudo fastboot)
    方法二:如果您的开发板系统是Android系统,adb shell reboot fastboot,开发板会进入fastboot模式。

  2. 刷机指令

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镜像:请移植官方网站下载

►场景应用图

►产品实体图

►展示板照片

►方案方块图

►核心技术优势

1,支持实时快速、精确的云端识别和远场拾音, 5米距离识别准确率高达>92%。 2,识别输出支持流式格式,能够实时地得到当前识别的结果,根据字段判断是否返回最终结果。 3,为保证用户口音和生僻字、方言的识别,针对用户粒度配置误识别较高的纠错指令,通过app端的人工干预,进行识别的纠正。 4,支持通用领域识别和垂直领域定制识别,定期增加领域数据,快速迭代,持续提升识别率。

►方案规格

 模组尺寸小,满足小尺寸应用场景  工作温度-20℃+70℃;  工作电压3.8V-4.2V,建议4V供电;  支持数字音频和模拟音频,支持HR,FR,EFR,AMR语音编码;  支持802.11 b/g/n 2.4GHz  支持HT20/HT40模式  支持低功耗信标监听模式,低功耗接收模式,低功耗挂起模式  支持SWD调试端口访问保护和禁止模式  Wi-Fi和BT共用同一天线  支持串口本地升级和远程固件升级(FOTA)

技术文档

类型标题档案
操作手册User Guide