linux驱动中的platform
来源:互联网 发布:js 数组增加class 编辑:程序博客网 时间:2024/04/28 15:38
从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示;驱动用 platform_driver 进行注册。
Linux platform driver 机制和传统的device driver机制(即:通过 driver_register 函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中用使用这些资源时,通过platform device提供的标准接口进行申请并使用。
platform 是一个虚拟的地址总线,相比 PCI、USB,它主要用于描述SOC上的片上资源。platform 所描述的资源有一个共同点:在CPU 的总线上直接取址。平台设备会分到一个名称(用在驱动绑定中)以及一系列诸如地址和中断请求号(IRQ)之类的资源。
platform 总线下驱动的开发步骤是:
1、 设备
需要实现的结构体是:platform_device 。
1)初始化 resource 结构变量
2)初始化 platform_device 结构变量
3)向系统注册设备:platform_device_register。
以上三步,必须在设备驱动加载前完成,即执行platform_driver_register()之前,原因是驱动注册时需要匹配内核中所有已注册的设备名。platform_driver_register()中添加device到内核最终还是调用的device_add函数。Platform_device_add和device_add最主要的区别是多了一步insert_resource(p, r),即将platform资源(resource)添加进内核,由内核统一管理。
2、驱动
驱动注册中,需要实现的结构体是:platform_driver 。
在驱动程序的初始化函数中,调用了platform_driver_register()注册 platform_driver 。需要注意的是:platform_driver 和 platform_device 中的 name 变量的值必须是相同的 。这样在 platform_driver_register() 注册时,会将当前注册的 platform_driver 中的 name 变量的值和已注册的所有 platform_device 中的 name 变量的值进行比较,只有找到具有相同名称的 platform_device 才能注册成功。当注册成功时,会调用 platform_driver 结构元素 probe 函数指针。
platform_driver_register()的注册过程:
1 platform_driver_register(&s
2 driver_register(&drv->driver)
3 bus_add_driver(drv)
4 driver_attach(drv)
5 bus_for_each_dev(drv->bus, NULL, drv, __driver_attach)
6 __driver_attach(struct device * dev, void * data)
7 driver_probe_device(drv, dev)
8 really_probe(dev, drv)
在really_probe()中:为设备指派管理该设备的驱动:dev->driver = drv, 调用probe()函数初始化设备:drv->probe(dev)
上一篇:linux通过结构体struct resource描述一个具体的硬件
下一篇:linux虚拟机添加额外硬盘方法
- linux 常见服务端口
- xmanager 2.0 for linux配置
- 【ROOTFS搭建】busybox的httpd...
- openwrt中luci学习笔记
- 什么是shell
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
chinaunix网友2010-11-10 19:52:33
很好的, 收藏了推荐一个博客,提供很多免费软件编程电子书下载:http://free-ebooks.appspot.com
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- Linux驱动中的platform
- linux驱动中的platform
- 【转】Linux驱动中的platform
- linux驱动中的platform总线(转)
- Linux驱动中的platform总线分析
- linux的platform驱动
- linux驱动-platform详解
- linux Platform设备驱动
- 对netdev_priv的分析
- 我的第一篇博客
- 旋转数组的最小数字
- 硬件设备内存空间被映射的过程函数分析
- linux通过结构体struct resource描述一个具体的硬件
- linux驱动中的platform
- linux虚拟机添加额外硬盘方法
- 加载页面时同时触发两个ajax请求,数据显示的顺序不一致
- 团体程序设计天梯赛-练习集-L2-013. 红色警报(dfs)
- 用proc文件管理分析内核的数据
- 利用strace ltrace或truss跟踪程序的系统调用
- proc文件系统用于内核调试
- ubuntu influxDb + grafana 监控系统
- linux启动到字符界面