SGS Audio_debugsop手册¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 12/16/2024 | |
| 1.1 | 06/10/2025 |
问题1. 喇叭播放无声¶
| 流程 | 方法 | 出口条件 |
下一步 |
需提供给SWRD的资料 |
相关可参考FAQ |
|---|---|---|---|---|---|
| A | 播放过程中使用万用表确认AUDIO的AUDD18_AUD是否为1.8V | 出口条件1: 1.播放阶段AUDD18_AUD 电压与1.8V相差较大 出口条件2: 2.播放阶段AUDD18_AUD 稳定在1.8V左右 |
出口条件1: >外部供电存在问题,寻求CAE帮助。 出口条件2: >外部供电正常 ==>B |
||
| B | 确认AMP pad 的padmux设定是否和板子可以对应(evb 原理图上的amp pad 和padmux.dtis 里面的amp pad 是否对的上) | 出口条件1: 1.pad 无误 出口条件2: 2.pad 和板子对应不上 |
出口条件1: >C 出口条件2: >请自行修改padmux.dtsi 里面的amp pad |
||
| C | 在播放过程中用电压表确认AMP pad 是否正常拉高拉低 |
出口条件1: 1.可以正常拉高拉低 出口条件2: 2. 无法拉高拉低 |
出口条件1: >D 出口条件2: 走线异常>请找CAE协助排查 |
||
| D | 确认客户板子AMP PAD 拉高还是拉低使能 | 出口条件1: 1.拉高使能 出口条件2: 2.拉低使能 |
出口条件1: >E 出口条件2: > 修改对应板子的dtsi sound 节点node:amp-pad里面的参数1改成0 表示低电平使能 |
||
| E | 播放过程,启用RDMA Singen 确认是否可以出声 echo singen [SinGen Index][Enable] > /proc/mi_modules/mi_ao/mi_aox SinGen 0: Device0. SinGen 1: Device1. SinGen 2: Device2. SinGen 3: Device3. 举例:echo singen 0 1 > /proc/mi_modules/mi_ai/mi_ai0,打开Device0的singen |
出口条件1: 1.可以出声 出口条件2: 2.不可以出声 |
出口条件1: >H 出口条件2: >F |
||
| F | Cat mi proc info 确认是否mute 或者gain 值设定太小 | 出口条件1: 1.存在描述问题 出口条件2: 2. 不存在描述问题 |
出口条件1: ==> 和客户确认设定 出口条件2: ==> G |
||
| G | 播放过程,启用RDMA Singen的情况下用示波器抓lineout输出 | 出口条件1: 1.lineout 有信号 出口条件2: 2.lineout 无信号 |
出口条件1: >找CAE协助确认是否功放问题 出口条件2: >在确认示波器是抓芯片端输出也没有信号的情况下,找SWRD协助 |
是否公版复现,环境搭建方法 | |
| H | Dump user data 确认写入数据是否正常 | 出口条件1: dump 数据正常 出口条件2: dump 数据异常 |
出口条件1: > 找SW RD 协助 出口条件2: > 排查客户app 问题 |
确认是否公版复现,复现问题的环境,和复现问题的方法 |
问题2. AMIC录音没有数据¶
| 流程 | 方法 | 出口条件 |
下一步 |
需提供给SWRD的资料 |
相关可参考FAQ |
|---|---|---|---|---|---|
| A | 录音的时候打开 Amic Sinegen确认是否可以录到正选波(Singen启用方法参考MI_AI文档) | 出口条件1: 1.录不到声音 出口条件2: 2. 可以录到声音 |
出口条件1: 大概率是软件问题软件排查==>C 出口条件2:大概率是硬件问题硬件排查==>B |
||
| B | 找CAE确认硬件问题,包括Audio1.8V供电,AMIC bias偏置,以及AMIC接线位置,等硬件相关问题 |
出口条件1: 1.硬件确认无问题 出口条件2: 2.硬件发现到问题 |
出口条件1: ==>D 出口条件2: CAE协助 |
||
| C | Cat mi proc info 确认 AI interface 是否mute | 出口条件1: 1.无mute 出口条件2: 2. 有mute |
出口条件1: ==> 找SW RD分析 出口条件2: 排查客户APP 设定 |
确认是否公版复现,复现问题的环境,和复现问题的方法 |
问题3. I2S Codec 适配问题¶
| 流程 | 方法 | 出口条件 |
下一步 |
需提供给SWRD的资料 |
相关可参考FAQ |
|---|---|---|---|---|---|
| A | 确认AUDIO I2S PAD的padmux配置是否和与开发板对应,pad是否与其他mode有冲突方法: cd vim arch/arm/boot/dts/xxx_xxxx-padmux.dtsi 查找I2S PAD是否有被切为MDRV_PUSE_I2S0_XX_XXX mode,并使用IO_Check Tool 检查是否设置mode成功(./io_check_xxx PinID) |
出口条件1: 1.padmux未正确配置或者存在与其他mode冲突情况 出口条件2: 2.I2S PAD配置正常 |
出口条件1: >协助客户修改padmux设定 出口条件2: > B |
||
| B | 跑mi_demo prog_audio_audio 对应的i2S case 使用示波器抓Tx or Rx 的信号 | 出口条件1: 可以抓到正常的tx rx clk data 信号 出口条件2: 抓不到信号,或者信号异常 |
出口条件1: >C 出口条件2: > 找CAE确认pad走线问题,和干扰问题 |
||
| C | 确认芯片端I2S mode format 等格式是否符合客户codec,参考MI API 文档 | 出口条件1: 格式正常 出口条件2: 格式异常 |
出口条件1: >D 出口条件2: >协助客户修改I2S 格式 |
||
| D | 确认与codec 接入的线序是否正确,是否有共地 6wire mode 下: TX_BCK<>RX_BCK TX_WCK<>RX_WCK TX_SDO<>RX_SDI PS:codec 的LRCK 就是WCK 4wire mode 下: RX_BCK<>RX_BCK RX_WCK<>RX_WCK RX_SDI<>TX_SD0 TX_SD0<==>RX_SDI |
出口条件1: 线序正常,有共地 出口条件2: 线序异常,没有共地 |
出口条件1: ==> E 出口条件2: ==>协助客户确认线序问题 |
||
| E | 确认选择pad的电压域 1.8V/3.3V 是否和客户codec 匹配 | 出口条件1: 电压匹配 出口条件2: 电压不匹配 |
出口条件1: ==> 整理客户codec的信息,Tx Rx 的波形信号,找SW RD 协助排查 出口条件2:找CAE 确认切换对应pad电压域的方法 |
问题4. DMIC 无法正常工作问题¶
| 流程 | 方法 | 出口条件 |
下一步 |
需提供给SWRD的资料 |
相关可参考FAQ |
|---|---|---|---|---|---|
| A | 确认AUDIO DMIC PAD的padmux配置是否和与开发板对应,pad是否与其他mode有冲突方法: cd vim arch/arm/boot/dts/xxx_xxxx-padmux.dtsi 查找DMIC PAD是否有被切为MDRV_PUSE_DMIC0_XX mode,并使用IO_Check Tool 检查是否设置mode成功(./io_check_xxx PinID) |
出口条件1: >padmux未正确配置或者存在与其他mode冲突情况 出口条件2: >DMIC PAD配置正常 |
出口条件1: >协助客户确认padmux 问题 出口条件2: > B |
||
| B | 跑prog_audio_audio dmic demo 抓DMIC BCK 和DMIC data |
出口条件1: 1.BCK 2.4M Data 也有数据 出口条件2: 无BCK 无Data 出口条件3: 有bck 无data |
出口条件1: ==>C 出口条件2: 找CAE 确认走线是否存在问题 出口条件3: 找CAE 确认DMIC 是否坏了 |
||
| C | 确认线序是否正确 DMIC 线序相对简单,主要是CLK data 电源和地 |
出口条件1: 线序正确 出口条件2: 线序错误 |
出口条件1: ==>D 出口条件2: 协助客户理清线序 |
||
| D | 确认DMIC 硬件是3.3V 还是1.8V,并且确认当前选择的pad 是3.3V 还是1.8V,电压需要匹配 | 出口条件1: 1.电压匹配 出口条件2: 2. 电压不匹配 |
出口条件1: > 整理复现问题的环境,客户dmic spec 是否可以在公版复现问题,找SW RD 协助 出口条件2: > 找CAE 确认电压域调整的方法 |
客户DMIC spec 公版复现环境 |
问题5. AI interface 已知问题faq¶
5.1 AI 取不到数据问题¶
根据具体场景抓取device的proc信息,查看当前buf的配置和使用情况。 cat /proc/mi_modules/mi_ai/mi_aix
确认output buf的配置情况。usrDepth和BufCntQuota,分别代表app能拿到的buf数目和总的buf数目,检查usrDepth和BufCntQuota是否被设置为0。
确认app拿buf的情况。usrLockedCnt表示APP拿着没有释放的buf数量,若usrLockedCnt和usrDepth相等,则表示app已经把所有能拿的output buf都抓在手里了。
5.2. Buf间隔不稳定(丢 Buf)¶
根据具体场景抓取device的proc信息,查看当前buf的配置和使用情况。 cat /proc/mi_modules/mi_ai/mi_aix
- 确认output buf的配置情况。usrDepth和BufCntQuota,分别代表app能拿到的buf数目和总的buf数目,检查usrDepth和BufCntQuota是否过小,导致app拿buf会影响AI线程正常运转。
- 如果buf足够,但GetFrame/Ms和FPS明显小于预期,则整理信息联系audio owner。

5.3. 声音爆掉但采样值正常¶
此问题常见于Amic和Dmic这两种interface。这两种interface通路上有interface gain以及Dpga gain。常见情况是interface gain设置太大已经爆掉了,然后又通过Dpga gain做衰减,导致采样值又落回了正常范围内。
5.4 AMIC pop noise 问题¶
问题原因:ADC的参考电容需要充电到0.9V,在电容没有充满之前使用adc 录音会录到杂讯也就是pop noise
解决办法:
-
ifackel 之后的芯片,增加了电容快速充电的设计,默认代码下会延时50ms 所以没有这个问题
-
ifackel 之前的芯片,需要在dtsi 里面把keep adc on 打开,通过增加一定功耗来解决这个问题
-
快起场景下很在乎时间,所以不希望延时,需要在IPL 里面打开 SGS_BACH SGS_BACH_FAST_BOOT 通过将ADC参考电容在IPL里面就打开充电来解决问题
5.5. DMIC pop noise 问题¶
问题原因有两个:
- DMIC 硬件在接收到BCK 之后并不能马上给出有效的data,通常需要10ms 左右才能输出有效data 这部分异常data 会被IC 接收累加到一个异常值 导致pop noise
- 很多DMIC 硬件 存在DC 偏置 IC 内部的hpf 模块可以将DC 偏置拉回到中值,但是过程需要时间,偏置的存在也会导致pop noise
解决办法:
- dtsi sound 节点增加 dmic-delay = <80> 字段; 参数80 表示delay 的时间,通过延时80ms 的时间来规避掉pop noise 问题
问题6. AO interface 已知问题faq¶
6.1 DAC pop noise 问题¶
问题原因有两个:
- DAC 打开的瞬间的电压变化
- DAC 参考电容需要时间充电,在没有充满电的时候打开DAC 也会声音异常
解决办法:
-
ifackel 之后的芯片,增加了电容快速充电的设计,通过延时50ms来等待电容充电完成,同时也避免了DAC 打开的电压变化,之后再打开amp pad ,通过amp mute 来解决DAC pop noise 问题
-
ifackel 之前的芯片,需要再dtsi 里面把keep dac on 打开,通过增加一定功耗来解决这个问题
问题7. Speak 功放放大倍速调整到9倍下的噪声问题¶
问题背景:Pcupid IO 是1.8V的客户为了满足预期的输出功率,将功放的倍率调整到9倍;然后在程序运行过程中可以听到喇叭播放出杂讯。这个时候audio 没有启用。只是使能了功放。
问题原因:当cpu loading 较打的时候,芯片内部的电流噪声会从gnd串到功放,当功放启用的时候就会听到杂讯。
问题的解决办法: 这种问题只能通过使用差分的功放来解决gnd的噪声,差分功放由于输入的两端信号,都带有噪声,经过差分处理就可以将噪声减掉了。另外需要请CAE 将Audio 的AUD_VRM 这个pad 接地改为和功放一样的相对干净的gnd 上