VS-RK3399嵌入式主板调试方法
RK3399的CPU采用big.LITTLE大小核架构,双Cortex-A72大核+四Cortex-A53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面都具革命性提升。 RK3399的GPU采用四核ARM新一代高端图像处理器Mali-T860,集成更多带宽压缩技术:如智能迭加、ASTC、本地像素存储等,还支持更多的图形和计算接口,总体性能比上一代提升45%。
调试方法:
1. 查看 codec 寄存器,I?S 寄存器,spdif 寄存器等等,出现问题时,往往需要常看寄存器的状态是否正常,来定位分析问题。
a, 凡是使用 regmap 的驱动, 在/sys/kernel/debug/regmap 都有相应的查询入口,如下:
root@rk3366:/sys/kernel/debug/regmap # ls
0-001c
0-0040
1-001c
ff880000.spdif
ff898000.i2s-8ch
例如:1-001c 为 rt5640 的 i2c 地址,挂载在 i2c1, codec 地址为 0x1c,那么此目录中的registers 即为 codec 的 register,其他类似。
2. Xrun debug, 一般用于 debug underrun 或者 overrun,出现此两者情况时内核会打印 log 协助问题的定位分析。Menuconfig 中需要开启如下选项:
Advanced Linux Sound Architecture --->
Debug
More verbose debug
Enable PCM ring buffer overrun/underrun debugging
然后在对应声卡/proc/asound/card0/xrun 中写入相应的值,值如下:
#define XRUN_DEBUG_BASIC (1<<0)
#define XRUN_DEBUG_STACK (1<<1) /* dump also stack */
#define XRUN_DEBUG_JIFFIESCHECK (1<<2) /* do jiffies check */
比如 echo 1 > xrun 或者 echo 3 > xrun 或者 echo 7 > xrun 开启所有 debug 信息检测。
3. 通过查看 clk tree 确认相应的 audio clk 是否正常,比如 mclk:如下为采样率为
44100hz 的 mclk: 11.2896M。
c at /sys/kernel/debug/clk/clk_summary | grep i2s
i2s_2ch_src 0 0 576000000
0 0
i2s_2ch_frac 0 0 28800000
0 0
i2s_8ch_src 0 0 576000000
0 0
i2s_8ch_frac 0 0 11289600
0 0
i2s_8ch_pre 0 0 11289600
0 0
sclk_i2s_8ch 0 0 11289600
0 0
i2s_8ch_clkout 0 0 11289600
0 0
4. 要学会使用示波器测量音频的信号, 软件方式的确认有时会有误差,最精确最根本的方式就是确认音频 clk 是否正常,满足规范。音频的信号包含 mclk, bclk, lrck, data。需要确认信号幅度是否正常,如果 io 电压为 3.3v,测试出来的信号幅值应当在 3.3v
左右。如果幅值太低,则会照成采集不到数据而无声。Clk 的频偏也不宜过大,有可能会照成杂音。Bclk, lrck 要符合设置的采样率,如果不相符,则会照成音频快进或者播放缓慢。
5. 播放测试:一般播放 1khz 0db 正弦波,然后使用示波器确认输出是否有削顶失真,相位失真,杂音等。
6. 录音测试:可使用信号发生器产生 1khz 的波形从 codec 模拟端导入,然后录制波形,可以通过回放来确认波形是否正常,无失真,或者使用电脑上的软件工具 adobeaudition 来分析底噪等等基本指标。
7. 基本功能过完后,需要使用音频分析仪进行 codec 后续的指标测试以及调优。
楼主最近还看过