2941|5

6450

帖子

10

TA的资源

版主

楼主
 

《原子Linux驱动开发》基础阅读8:platform设备驱动 [复制链接]

        Linux系统要考虑到驱动的可重复性,对于比较复杂的驱动就要使用分离与分层,这样的软件思路进行编写这种思路下,与我们打交道最多的就是platform设备驱动,也叫做平台设备驱动。
        对于一个操作系统来说,代码的重复使用是非常重要的,大量无意义的重复代码存在于系统中,将会造成非常大的浪费尤其像这种经常使用的驱动程序,任期重复,代码不断增加,将使得内核的文件数量非常庞大。在裸机驱动编写的过程中,习惯性的是采取一对一的方式进行驱动设计。而在像linux这样的操作系统中,常采用驱动的分隔,将主机驱动和设备驱动分开来;而不同设备之间,不同主机驱动之间的分开,就是我们常说的驱动分离。
        从而形成了总线驱动和设备模型,总线就是驱动与设备之间牵线搭桥的Linux内核中有大量的驱动程序,都是采用的这样的模型。
        platform总线就是这样架构下产生的,什么是platform设备驱动?简单来说,platform设备驱动是一种不依赖于特定总线的设备驱动模型。它主要针对那些直接连接到主板或集成在CPU内部的外设,如LED、按键、定时器等。由于这些设备并不通过传统的总线如PCI、USB等进行通信,因此需要使用一种更为灵活和通用的驱动模型来支持它们,这就是platform设备驱动。
        platform设备驱动的核心在于其独特的驱动和设备匹配机制。在Linux内核中,每一个platform设备都有一个对应的platform_device结构体来描述,而每一个platform驱动都有一个对应的platform_driver结构体来定义。这两个结构体之间通过名称进行匹配,一旦匹配成功,就会调用驱动的probe函数来初始化设备。这种机制使得platform设备驱动具有很高的灵活性和可扩展性,可以方便地支持各种不同类型的硬件设备。除了匹配机制外,platform设备驱动还提供了丰富的接口和功能。它可以通过资源列表来获取设备的IO地址、中断号等关键信息,从而实现对设备的精确控制。同时,它还可以定义一系列的操作函数,如打开设备、关闭设备、读写设备等,以满足不同设备的需求。这些接口和功能的存在,使得platform设备驱动能够更好地适应各种复杂的硬件环境,确保设备的稳定运行。由于它不依赖于特定的总线,因此在某些情况下可能会使得硬件资源的分配和管理变得复杂。此外,对于某些特殊的硬件设备,可能需要更为复杂的匹配机制和更丰富的功能接口来支持,这也会增加驱动开发的难度。
        在设备树下,设备的描述被放到设备树中,platform_device都不需要编写了,只需要实现platform_driver就可以了。设备树中的Platform设备描述通常包括设备名、兼容性、设备特定的属性等信息。这些设备以Platform设备节点的形式存在于设备树中,并且它们的描述通常具有特定的结构。
 
在使用设备树与Platform设备驱动时,有几个关键点需要注意:
        兼容性匹配:在设备树文件中,每个Platform设备节点都会有一个compatible属性,这个属性需要与要匹配的驱动中的of_device_id数组中的某个元素的compatible属性一致。这样,内核在启动时就能正确地将设备与驱动进行匹配。
        设备节点定义:在设备树文件中正确定义Platform设备节点非常重要。节点中应包含所有必要的属性和资源,以便驱动能够正确地初始化和配置设备。
        驱动实现:Platform设备驱动的实现需要与设备树中的定义相匹配。驱动应该能够解析设备树中的信息,并根据这些信息来配置和管理设备。
        错误处理与调试:在开发和调试过程中,应特别注意错误处理。如果设备树或驱动配置有误,可能会导致设备无法被正确识别或初始化。因此,使用适当的调试工具和技术来诊断和解决问题是非常重要的。
 
        总的来说,设备树下的Platform设备描述和驱动实现是一个复杂但至关重要的过程。通过正确地定义和使用它们,可以确保硬件设备在Linux系统中得到正确的初始化和配置。platform设备驱动是Linux内核中一种重要且灵活的驱动模型。它以其独特的匹配机制和丰富的功能接口,为各种不同类型的硬件设备提供了有力的支持。

最新回复

有没有完整的资源,下载来慢慢看! 分片的看起来不方便!   详情 回复 发表于 2024-3-22 14:31
点赞 关注(1)
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引


回复
举报

6960

帖子

11

TA的资源

版主

沙发
 
呀,版主大佬学习可认真了,我好久没有翻了。

点评

没事就读一读,要不这么后什么时候能看完啊,不过又要没有时间了   详情 回复 发表于 2024-3-21 16:28
 
 

回复

6450

帖子

10

TA的资源

版主

板凳
 
lugl4313820 发表于 2024-3-21 13:03 呀,版主大佬学习可认真了,我好久没有翻了。

没事就读一读,要不这么后什么时候能看完啊,不过又要没有时间了 

 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

7608

帖子

18

TA的资源

五彩晶圆(高级)

4
 

这书的内核是哪个版本的?

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

308

帖子

0

TA的资源

纯净的硅(初级)

5
 

有没有完整的资源,下载来慢慢看! 分片的看起来不方便!

点评

我找了好久也没有找到电子版,不过可以去原子官网由视频教程  详情 回复 发表于 2024-3-22 15:29
 
 
 

回复

6450

帖子

10

TA的资源

版主

6
 
13620203064 发表于 2024-3-22 14:31 有没有完整的资源,下载来慢慢看! 分片的看起来不方便!

我找了好久也没有找到电子版,不过可以去原子官网由视频教程

 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表