zoukankan      html  css  js  c++  java
  • 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的运行。

  • 相关阅读:
    BCrypt 加密实现
    Java AES512加密算法
    二、 Mosquitto 使用说明
    一、Mosquitto 介绍&安装
    ConcurrentHashMap源码分析(JDK8版本<转载>)
    详解设计模式六大原则(转载)
    Java 单例模式详解(转)
    一致性哈希算法(consistent hashing)(转载)
    Java并发之AQS详解(转)
    数据库(第一范式,第二范式,第三范式)(转)
  • 原文地址:https://www.cnblogs.com/djw316/p/10306305.html
Copyright © 2011-2022 走看看