linux驱动-- 平台设备驱动platform devices
来源:互联网 发布:python 每1s执行一次 编辑:程序博客网 时间:2024/06/08 04:48
platform平台设备驱动是基于设备总线驱动模型,它只不过是将device进一步封装成为platform_device,将device_driver进一步封装成为
platform_device_driver。
linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性描述,也就是说,linux设备模型提取了
设备操作的共用属性,进行抽象,并将这部分共同属性在内核的实现,而为需要添加新设备或驱动提供一般性的统一接口,这使得驱动程序
的开发变得更加的简单,而程序员只需要去学习接口就行了。
在内核里,有各种各样的总线,如usb,spi,pci,platform,i2c等,内核通过总线将设备与驱动分离。
设备模型是层次的结构,层次的每一个节点都是通过kobiect实现的,在文件上则体现在sysfs文件系统。
对于整个设备总线驱动模型,bus负责维护注册进来的device和driver,每注册进来一个device或者driver都会调用bus_match函数,将device
与driver进行配对,并将它们加入链表,如果配对成功,调用BUs-》probe或者driver-》probe函数,调用kobject-uevent函数设置环境变量,mdev
进行设备节点等操作。主要有三部分:bus,driver,device
bus:
在设备总线驱动模型中,bus就像一个月老一样,通过他的match函数,将注册到bus的device和driver经行配对,那么每一个不同的bus都有自己
的match函数。
.......................
如果platform_device_driver中定义了id_table,则调用platform_match_id经行匹配,用此ID遍历整个Id_table数组,寻找是否有与platform_device-name同名的
,如果有则返回这个platform_device_id,使用Id_table打破原本设备总线驱动模型。
如果没有则只有根据platform_device_driver-name和platform——driver-name进行比较。匹配成功则调用driver-probe函数...
在linux中,系统资源包括IO,memory,Register,IRQ,DMA,Bus等多种类型,这些资源太多具有独占性,不允许多个设备同时使用,因此linux内核提供了一些API,用于分配管理这些资源。
当某个设备需要使用某个资源时,只需利用struct resource组织这些资源,用名称,类型,起始,结束地址等。并保存在该设备的resource指针中即可。
然后再设备probe时,设备需求会调用资源管理接口,分配使用这些资源,而内核的资源管理逻辑,可以判断这些资源是否已被使用,是否可被使用等等。
- linux驱动-- 平台设备驱动platform devices
- Linux Platform devices 平台设备驱动
- Linux Platform devices 平台设备驱动
- Linux Platform devices 平台设备驱动
- Linux Platform devices 平台设备驱动
- linux platform平台设备驱动
- linux platform平台设备驱动 .
- platform平台设备驱动
- linux驱动platform平台设备总线
- linux Platform设备驱动
- linux ------ Platform设备驱动
- linux Platform设备驱动
- linux PlatForm设备驱动
- [Linux]Platform设备驱动
- Linux学习:platform平台总线、平台设备、平台驱动
- LINUX设备驱动模型之PLATFORM(平台)总线详解
- Linux设备驱动模型之platform(平台)总线详解
- Linux驱动---------platform总线设备
- numpy 进行数组的拼接,分别在行和列上合并
- 设计模式:工厂模式
- 欢迎使用CSDN-markdown编辑器
- c语言的操作符之按位操作符
- java两个礼拜学习心得
- linux驱动-- 平台设备驱动platform devices
- [2017纪中11-4][Codeforces Round #395 Div.1]C pacifist
- linux
- HTTP 缓存机制及原理
- 简易医疗系统设计(二)实现携带信息的页面跳转
- 搬瓦工配置shadowsocks多用户配置
- 【动态规划】0-1背包
- 习题4.1(1)
- Ubuntu14.04 安装opencv2.4.13与opencv3.2,多版本共存