社区
Linux_Kernel
帖子详情
问个问题,在平台设备(platform_driver)注册以后,在应用层如何调用呢?
lieye_leaves
2011-06-26 08:08:16
问个问题,Linux平台设备注册,注册时提供的函数是pobe,suspend,resume等,但是在应用层一般访问驱动是用open,read,write等,两个部分怎么适配起来的?
...全文
552
9
打赏
收藏
问个问题,在平台设备(platform_driver)注册以后,在应用层如何调用呢?
问个问题,Linux平台设备注册,注册时提供的函数是pobe,suspend,resume等,但是在应用层一般访问驱动是用open,read,write等,两个部分怎么适配起来的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a1163539718
2011-11-02
打赏
举报
回复
学习一下
井朝天
2011-07-04
打赏
举报
回复
[Quote=引用 7 楼 lieye_leaves 的回复:]
谢谢1楼和6楼的答复,刚刚看懂,还有一点,我觉得platform一般都用于包含在芯片SOC上的内置控制器上面,如arm上的USB,LCD,watchdog等。
[/Quote]
你说的很对!
但是仍然可以用在其他地方
井朝天
2011-07-01
打赏
举报
回复
我对platform设备的理解是这样的:
1,是个虚拟的总线设备。因为系统中有了PCI,USB,SPI, I2C等总线,设备模型通过bus进行匹配device 和driver,为了兼容设备模型,搞出个platform设备(注意这里的platform类似于说某个设备是PCI设备,还是I2C设备,也就是说该设备挂载哪个总线上)
2,这个只是说明了设备在哪个总线上(platform),并不能说明设备是个什么设备(是字符设备,块设备?),所以需要另加说明。我一般注册为混杂设备(这是一个设备类,类似输入类等),因为这些类子系统会动态分配设备号和自动创建/dev下的设备文件(udev机制),所以比较好用。我想目前真正写驱动的时候不会去做个字符设备,然后用mknod去创建设备节点吧!
以上纯属个人理解哈~~
井朝天
2011-07-01
打赏
举报
回复
我一般在Probe函数中将设备注册为misc设备
lieye_leaves
2011-07-01
打赏
举报
回复
谢谢1楼和6楼的答复,刚刚看懂,还有一点,我觉得platform一般都用于包含在芯片SOC上的内置控制器上面,如arm上的USB,LCD,watchdog等。
steven_miao
2011-06-27
打赏
举报
回复
platform僅僅是提供一種驅動和設備匹配的的功能,其設備的本質還是cdev設備,其中的file_operation才是提供了設備的open,close等等!
lieye_leaves
2011-06-27
打赏
举报
回复
就字符设备来说,应用层在打开设备时,会访问到设备节点,类似于打开文件,然后内部传入驱动函数来访问设备,所以我感觉设备驱动在注册的时候会有类似的操作函数,如open,read,write等。因为平台设备也是一种字符设备,但是它注册的时候的函数是probe,suspend, resume等呢,所以对于应用层的操作有点不明白。
翔云123456
2011-06-27
打赏
举报
回复
linux下设备被当做文件来访问,系统初始化就应该有设备与文件的对应关系,同学习中
lieye_leaves
2011-06-27
打赏
举报
回复
那么这个file_operation在哪里注册呢,好像平台设备注册的时候没有该定义的。
深入解析Linux
Platform
_device 及驱动
深入解析Linux
Platform
_device 及驱动 [导读] 前文分析了Linux
设备
驱动的驱动模型,本文来聊聊
Platform
_
driver
/
Platform
_device这个类。做嵌入式Linux的驱动,这个也是绕不开的,所以来学习分析总结一下。 上文阅读: 注:代码分析基于linux-5.4.31 为什么有
Platform
_
driver
前文谈到的总线驱动模型(注这个图是照着bootlin的文档绘制的): 同时,根据代码分析其基础数据结构框架关系如下(UML关系并不严谨,仅为理
Linux利用
platform
_
driver
和
设备
树实现PWM驱动
Linux环境下利用
platform
_
driver
和
设备
树实现PWM驱动,此文以开发板FS4412为例。
linux
设备
和驱动
注册
,Linux驱动第五篇-----驱动
注册
和生成
设备
节点
加载驱动的指令是:insmod xx.ko查看驱动的指令是: lsmod卸载驱动的指令是:rmmod xx在include/linux/
platform
_device.h这个文件中定义了
平台
驱动
注册
和卸载文件函数
platform
_
driver
_register 和
platform
_
driver
_unregister 函数 这个两个函数参数
调用
了结构体
platform
_
driver
该结构中包含...
Linux
设备
驱动开发 ——
platform
设备
驱动
一、
platform
总线、
设备
与驱动 一个现实的Linux
设备
和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的
设备
而言,这自然不是问题,但是在嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设等确不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为
platform
总线,相应的
设备
称为
platform
_d
基于
设备
树的
platform
驱动之LED(
平台
设备
驱动)
platform
驱动框架分为总线、
设备
和驱动。总线:是 Linux 内核提供的,不需要我们这些驱动程序员去管理。我们在编写驱动的时候只要关注于
设备
和驱动的具体实现即可。
设备
、驱动:在没有
设备
树的 Linux 内核下,我们需要分别编写并
注册
platform
_device 和
platform
_
driver
,分别代表
设备
和驱动。在使用
设备
树的时候,
设备
的描述被放到了
设备
树中,因此
platform
_device 就不需要我们去编写了,我们只需要实现
platform
_
driver
即可。
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章