一、问题描述
测试过程中发现,海思SDK里面,Mipi tx配置好以后,就会导致音频的整个业务流程变慢,而且MIC音频没法正确编码,感觉整个时钟异常了,但是一直找不到文档描述那儿问题导致,而且发现reboot整个系统都没有用途,必须拔电重启系统才能正常工作;
二、问题排查
排查glibc musl两个版本SDK,发现都有问题.初步怀疑SDK bug,最后只能继续分析问题
1.硬件MIC和mipi vo基本没有任何关系,暂时无法排除
2.clock 章节没有共用时钟相关描述,查看AIAO相关寄存器都是正常的
3.排查audio api文档找到问题
三、解决办法
PDF文档描述如下:
【注意】
音频模块参数支持配置AIAO的时钟源属性。
● Hi3519DV500音频支持2个时钟源:基础时钟源和备用时钟源。
● 基础时钟源会带来更好的音频电性能。但是,当默认时钟源被其他模块(如
MIPI)使用时,此时需要切换到备用时钟源。
– Hi3519DV500默认使用基础时钟源;
● 该接口为整个音频系统的基础接口,该接口的调用必须在其他模块( AI/AO/
ACODEC/AENC/ADEC)的接口之前。
● Hi3519DV500支持该接口
/* Defines audio clksel type */
typedef enum {
OT_AUDIO_CLK_SELECT_BASE = 0, /* Audio base clk. */
OT_AUDIO_CLK_SELECT_SPARE, /* Audio spare clk. */
OT_AUDIO_CLK_SELECT_BUTT,
} ot_audio_clk_select;
/* Defines audio mode parameter. */
typedef struct {
ot_audio_clk_select clk_select;
} ot_audio_mod_param;
td_s32 ret;
ot_audio_mod_param mod_param;
mod_param.clk_select = OT_AUDIO_CLK_SELECT_SPARE;
/* set audio mode parameter. */
ret = ss_mpi_audio_set_mod_param(&mod_param);
if (ret != TD_SUCCESS) {
printf("set audio mode parameter fail: ERRPARAM(%d)\n", mod_param.clk_select);
return ret;
}
修改为备用时钟源即可!!!
该问题卡了两个星期,做个简单的记录!多看文档!!!