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驱动调试感悟的主要内容,如果未能解决你的问题,请参考以下文章
RK3399驱动开发 | 03 - WK2124串口芯片驱动调试