一、环境

  • 正点原子 RK3506B-ALIENTEK-512MB+512MB 无底板版本
  • Ubuntu 20.04
  • 官方SDK
  • 镜像:最小系统镜像

二、问题

今天搞板端 I2S 和 MAX98357A 功放模块通信,设备树编译后发现98357A的DIN脚波形有问题,幅度只有几十mv,而波形形状更是异常,查了一下,发现根本不是代码的问题。

三、发现

由于修改设备树后,./build kernel编译烧写后,根本没变化,但是又检查好设备树的内容确实写入了,且SDI,CLK这些都正常,下图是我的rk3506b-alientek.dtsi文件sai0部分的内容:
图 0

然而,我执行 ./build.sh kernel 后,抓取编译临时文件tmp的数据,却没能发现sdo引脚的pinctrl,所以只能说明是有东西把它覆写了。

四、解决

找到 rk3506b-alientek-minimal-nand-ubi-ubifs.dts 这个最终编译的dts设备树文件,发现里面已经对sai0有一次声明了,因此需要直接在这个文件里面进行修改,而不是在子设备树里边进行修改,否则后面如果有其它文件把它覆写了,你写的任何内容都不会生效。