语音类芯片对接

概述

上图为YoC语音子系统框架,自下而上分别包括了芯片、芯片的CSI驱动、操作系统接口、各种通用组件以及多媒体相关的组件、应用框架、应用解决方案。那么我们在对接语音芯片的时候主要是要对接基础的CSI驱动、语音相关的驱动,以及相应的DEMO进行验证,因此我们可以重点关注以下框图的这些组件即可。

基础驱动列表

驱动 是否必须 说明
uart
codec
dma
iic
iis
spiflash
mailbox 异构多核SOC所必须
shm
gpio 根据开发板需求

对接步骤

基础对接

语音类芯片和低功耗类芯片相较而言多了codec相关的驱动,有些是多核的芯片,所以在参考低功耗芯片对接对接完毕之后,需要额外再实现codec和多核相关的驱动。

codec驱动实现以及验证

首先下载codec_demo,通过以下命令获取:

yoc install codec_demo

驱动实现

驱动 参考代码 参考文档
codec 内置codec参考代码 codec驱动API介绍
外挂codec参考代码 codec驱动API介绍
dma dma参考代码 dma驱动API介绍
iic iic参考代码 iic驱动API介绍
iis i2s参考代码 i2s驱动API介绍
声卡 声卡参考代码 声卡驱动移植

功能验证

驱动对接完成之后,请参考codec_demo/README.md文件进行验证。 codec外挂:在这种情况下,运行codec_demo可以验证codec、dma、iic和iis驱动。 codec内置:在这种情况下,运行codec_demo可以验证codec和dma驱动。

异构多核SoC驱动实现以及验证

如果不是异构多核的SoC请略过此步骤。 首先下载ipc_demo,通过以下命令获取:

yoc install ipc_demo bl606p_c906_ipc_demo

驱动实现

驱动 参考代码 参考文档
mailbox mailbox参考代码 mailbox驱动API介绍
shm shm参考代码 TODO

功能验证

驱动对接完成之后,请参考ipc_demo/README.md文件进行验证。 ipc组件主要是用mailbox和shm驱动实现的,所以只需要运行ipc_demo和bl606p_c906_ipc_demo,查看ipc通信过程中发送和接收是否正常即可完成mailbox和shm驱动的验证。

常见问题

数据接收错误

  1. shm中的memory需要刷cache,drv_ipc_mem_use_cache需要返回1
  2. 发送的内容为结构体,其中成员有指针,但当ap cp的位数不一样,两个结构体所占用的长度不同
  3. 发送的内容为用户申请的空间,addr或len未对齐,导致刷cache异常

spiflash驱动实现以及验证

spiflash是一个比较基础的驱动,不实现的话就无法对Flash进行操作,如文件系统的操作。 首先下载aoshal_demo,通过以下命令获取:

yoc install aoshal_demo
驱动 参考代码 参考文档
spiflash spiflash参考代码 spiflash驱动API介绍

验证

驱动对接完成之后,请参考aoshal_demo/README.md文件进行验证。 运行aoshal_demo,输入cli命令appdemohal flash进行spiflash驱动的验证。在收到类似打印,表示运行成功。

flash demo successfully !

其他

性能优化

将热点函数或数据放入在ram空间:

  1. 修改链接脚本
  2. 在启动文件中加入自定义section的拷贝
  3. 拷贝完成后需刷cache

results matching ""

    No results matching ""