1. 字符设备驱动的三种写法

      先来回顾下传统字符设备的写法,然后与接下来章节要学习的设备树做下对比,进而引入设备树的学习。
我们先来回顾下,怎么写驱动?

    1. 看原理图;
    1. 写驱动;
    1. 写测试程序;



以点灯为例,来讲解;

  • 1.看原理图:
    • a. 确定引脚;
    • b. 看芯片手册,确定如何操作引脚。

      对于写驱动程序的人,需要去看原理图,看芯片手册;对于写应用程序的人,并不知道怎么去看原理图,也不会看芯片手册,只知道如何写应用程序,怎么实现业务的各种逻辑,并不想去涉及硬件。这也就是我们要写驱动程序的原因,让驱动程序来干这些活,为应用程序提供统一接口,让应用程序开发者专心做他们擅长的活。可以这么说,这个驱动程序起的一个封装的作用。
      那么,如何封装?
看这么一幅图:

      应用程序调用统一的接口 open/read/write ... 来操作硬件设备;相对应我们在驱动程序中实现 open/read/write ... 的具体硬件操作接口。使得应用程序对硬件的操作变得简单,屏蔽了硬件操作的复杂部分。所以,写驱动程序,需要实现驱动程序中的 open/read/write ... 的具体硬件操作接口。

接下来,我们来看下写驱动程序的一般步骤:

问:在驱动程序中如何指定引脚?
我们通过看原理图,可以确定引脚,在驱动程序中指定引脚的方式有三种:

      在这三种方式中,核心不变,他们都需要去分配、设置、注册一个file_operations结构体;差别在于如何指定硬件资源。
那么这三种写法有何优缺点?假设如下使用场景:
      公司用同一款芯片做了两个产品:TV和Camera,需要实现产品状态指示灯的控制。

这种办法的优缺点是:
      简单,但是不易扩展,需要重新编译,重做一个版本;

      有什么改变办法?这两款产品用同一款芯片平台,这引脚的操作是类似的,也就是说led_drv.c是类似的;那么我们可以将这些引脚给抽出来,通过其他方式来指定,也就是我们接下来介绍的第二种方法:总线设备驱动模型。

      总线设备驱动模型将传统的驱动写法分成设备和驱动两部分,然后挂载到platform总线下。

这种办法的优缺点是:
      稍复杂,易扩展,但冗余代码太多,需要重新编译(通过C文件指定资源);

第三种方法,也就是我们接下来章节的主角:设备树。

      使用设备树,对于我们的虚拟情景,不需要重新编译内核、重新编译驱动了,只需提供不同的设备树文件。

他的优缺点:
      稍复杂,易扩展,无冗余代码,不需要重新编译内核或者驱动;只需要提供不一样的设备树文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 4,965评论 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,777评论 1 20
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,354评论 0 13
  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 1,861评论 0 5
  • 炎热的九月份开学季来临,这一天对于陈予来说却是意义不凡的,她始终记得自己本是分在塘川7中,是自己争着闹着...
    Aiguij阅读 538评论 0 0