SPI驱动调试感悟

Posted djw316

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPI驱动调试感悟相关的知识,希望对你有一定的参考价值。

最近一段时间,在TX1平台的uboot中添加一个spi接口的液晶显示屏的驱动。本来以为是一项简单的工作,因为:

  1、相同的驱动在其他平台的uboot中已经添加过了

  2、内核中的驱动也是验证可用的,所以硬件上也是没有问题。

但实际进行下来,却花了一个月的时间,因此有些感悟,除了抱怨“巨坑”的Nvidia软件水平之外:

  1、Device Tree是一个好东西,可以让人高效、优雅的“配置”驱动。

  2、第一条成立的条件是,驱动是正确完备的,Device Tree本身并不能帮助解决驱动中的BUG,某些时候反而是一些阻碍。

  3、驱动,从本质上讲,就是配置一些硬件寄存器,比上层应用简单得多。

        4、嵌入式软件工程师要勇于对照数据手册,独立的实现设备驱动。

 

吐槽一下问题的原因,uboot中spi2的驱动不能正常工作的原因是电源管理相关的寄存器没有配置,但是数据手册里面没有这方面的说明,问了技术支持也表示不清楚。内核里能给运行的驱动里也没有这方面的配置,所以无法参考。

最后解决问题的方法是,在内核里写一个最简单版本的初始化spi的驱动(只有一个函数,只读写寄存器),不涉及任何dts、driver platform。然后把这个驱动沿着start_kernel函数的内核启动顺序放置,看看在哪些点能正常运行,哪些时间点能够重现uboot的现象,从而找出在此期间内核代码所做的哪一步操作影响了spi2的运行。

 

以上是关于SPI驱动调试感悟的主要内容,如果未能解决你的问题,请参考以下文章

SPISPI学习之SPI调试相关

RK3399驱动开发 | 03 - WK2124串口芯片驱动调试

RK3399驱动开发 | 03 - WK2124串口芯片驱动调试

SPISPI学习之SPI驱动相关

SPISPI学习之SPI驱动相关

致驱动工程师的一封信 (转)