驱动分层和分离

字符设备驱动之分层和分离:

驱动设备模型:设备总线驱动

  设备树或者是platform设备文件或者是其他什么设备文件负责去描述设备的信息:使用的IO电器属性、信息,中断信息,IIC属性信息等。不过现在基本都是设备树用设备树描述设备信息了。
  驱动就是从设备树获取到信息(有设备树就是从设备树,没有就只能从partform设备文件获取了),再去根据获取的信息去控制硬件操作,中断服务函数啥的。
  用虚拟总线就是将驱动文件和设备树的compatible名字匹配。不用虚拟总线就是直接去获取设备树节点!

分层和分离

软硬分层

  总所周知软硬分层,应用和硬件分层。所以应该是三层:应用层->驱动层->底层硬件操作。驱动层负责一些不涉及硬件操作的动作(负责使能或者配置一类的函数):init,exit等。底层硬件就单纯的提供硬件操作。

通用操作(改变)分离:

  将不变的硬件动作和可变硬件的属性分离出来。这个大概是最初的设计思路。硬件操作很多时候都是固定的。比如打开发送啊。但是硬件信息是多变的。比如这个使用了GPIO1_15,那个使用了GPIO2_10。这个用了串口1那个用了串口2。难道我们每次都去改动驱动文件吗?(这太傻了吧),所以驱动层分离应运而生!用一个文件去控制硬件操作的属性(改变使用的的硬件),根据控制硬件的文件暴露的接口去改变使用的硬件(改变硬件属性),这样就不用每次傻了吧唧该驱动了,就是得手动改底层硬件属性。这就是最初的Platform总线!剥离出的硬件属性后来被人总结打包成了一棵树,就是设备树!

参考:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 回答1: Linux驱动分离分层是指将不同的驱动程序分离开来,分别放置在不同的层次结构中,以便于管理和维护。这样可以使得不同的驱动程序之间相互独立,互不干扰,同时也可以提高系统的可靠性和稳定性。在Linux系统中,驱动程序一般分为以下几个层次:硬件层、设备驱动层、总线驱动层、文件系统层等。每个层次都有其特定的功能和作用,通过分层的方式可以使得驱动程序的开发和维护更加方便和高效。 ### 回答2: Linux驱动分离分层是指将Linux内核中的驱动程序分成不同的功能层级并独立开发的过程。在Linux开发社区中,这种分离分层开发模式被广泛采纳,以提高整个系统的稳定性和可维护性。 Linux驱动分离分层主要包括以下几个层级: 1. 用户空间驱动层:用户空间驱动程序是指运行在用户空间的驱动程序,如USB驱动等。这些驱动程序通常在内核提供的接口上实现,通过系统调用和驱动程序接口对硬件进行操作。 2. 设备驱动层:设备驱动层是指连接硬件和内核的驱动程序,用来管理计算机的输入和输出设备。这一层级的驱动程序通常是编写最复杂的。 3. 驱动控制器层:驱动控制器层是指连接设备驱动程序和硬件的控制器层,比如PCI控制器、DMA控制器等。这些控制器集成在计算机的芯片组中,工作在硬件和软件之间的接口。 4. 硬件抽象层:硬件抽象层是指对硬件的抽象描述,这一层级的驱动程序提供了一个统一的接口来存取硬件设备。 总体来说,Linux驱动分离分层可以提高系统的可维护性和可靠性,同时也为内核扩展提供了可靠的机制。因此,Linux开发社区鼓励发展和维护一个分离分层驱动程序生态系统。 ### 回答3: 在Linux系统中,驱动程序是操作系统与硬件之间的桥梁,它们向操作系统提供了与硬件设备交互的能力。为了使Linux操作系统的驱动程序更加模块化和灵活,Linux设备驱动在设计时采用了分离分层的策略。 分离是指将不同类型的驱动程序放在不同的模块中,这样可以让相似的驱动程序共享一些关键代码,减少代码量,并且提高了代码的重用性。对于Linux系统中的设备,常见的驱动程序有字符设备驱动、块设备驱动以及网络设备驱动等。每种类型的驱动程序都有自己的特点和工作方式,因此将它们分离出来更便于管理和维护。 分层是指将驱动程序设计成多个层次,每个层次依赖于下一个层次,以便在需要时实现相应的功能。通常把驱动程序分为五个层次:应用程序接口层、驱动程序核心层、总线接口层、体系结构层和硬件控制层。每个层次的驱动程序都有自己的职责和功能,它们通过下一层向上提供服务,并从上一层向下接收请求。 应用程序接口层是驱动程序提供给应用程序的接口,应用程序可以通过这些接口来控制硬件设备。驱动程序核心层是驱动程序的核心部分,它在驱动程序的设计中起到桥梁的作用,它管理整个驱动程序的请求过程,同时也与硬件设备交互。总线接口层负责管理总线设备的操作,比如对于PCI总线来说,总线接口层可以管理PCI卡中的设备。体系结构层是根据系统体系结构设计的驱动程序层次,比如ARM体系结构、MIPS体系结构等。硬件控制层是直接与硬件设备交互的层次,它负责整个驱动程序对硬件设备的控制。 总之,Linux设备驱动程序的分离分层策略可以提高驱动程序的模块化和灵活性,同时也更利于维护和管理驱动程序。这种策略已经被广泛应用于各种Linux系统中,使得Linux操作系统更加强大和稳定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值