`
helloyesyes
  • 浏览: 1335280 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Linux驱动修炼之道-platform

阅读更多

努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/05/21/6436172.aspx

首先看一下我的系统中都有什么设备挂在了platform虚拟总线上:

platform的初始化:首先系统启动的时候会调用platform_bus_init来初始化这个虚拟总线,让后向虚拟总线注册即将挂载这条总线上的设备。platform_bus_type部分是内核为我们实现好的,我们只关系platform_device与platform_driver就行了。

记住总线也是一种设备,所以首先注册总线设备,然后注册总线。

把设备挂到platform总线上:

首先来看一个重要的数据结构:

设备的分配:

设备的注册:

获取资源:

/*dev:资源所属的设备,type:获取的资源类型,num:获取的资源数*/
这里详述platform_device与platform_driver是怎样匹配上的,这里跟踪函数的执行过程,首先是platform_driver_register:

这里来看__driver_attach这个函数,其中分别调用了driver_match_device,driver_probe_device函数。如果匹配成果调用probe函数,否则返回。

匹配的时候调用的bus的match函数。

找到platform_match:

最后一行可以看到通过pdev->name与drv->name进行匹配,也就是说是通过设备与驱动的名字进行匹配。匹配成功后调用驱动的probe函数。

由relly_probe函数可以看出,如果bus定义了probe函数,则调用bus的probe函数;如果bus,没有定义而driver定义了probe函数,则调用driver的probe函数。由上边的platform_bus_type可以看出bus并没有定义probe函数,所以调用driver的probe函数。

测试程序:

device.c

driver.c

测试效果:


分享到:
评论

相关推荐

    Linux常见驱动源码分析(kernel hacker修炼之道全集)--李万鹏

    Linux驱动修炼之道-platform.pdf Linux驱动修炼之道-LCD背光与gpio控制.pdf Linux驱动修炼之道-INPUT子系统(下).pdf Linux驱动修炼之道-INPUT子系统(上).pdf Linux驱动修炼之道-framebuffer(中).pdf ...

    jna-platform-5.10.0-API文档-中英对照版.zip

    赠送jar包:jna-platform-5.10.0.jar; 赠送原API文档:jna-platform-5.10.0-javadoc.jar; 赠送源代码:jna-platform-5.10.0-sources.jar; 赠送Maven依赖信息文件:jna-platform-5.10.0.pom; 包含翻译后的API文档...

    junit-platform-launcher-1.8.0-M1-API文档-中文版.zip

    赠送jar包:junit-platform-launcher-1.8.0-M1.jar; 赠送原API文档:junit-platform-launcher-1.8.0-M1-javadoc.jar; 赠送源代码:junit-platform-launcher-1.8.0-M1-sources.jar; 赠送Maven依赖信息文件:junit-...

    javacv-platform-1.3-bin.zip

    在本例中,我们关注的是`javacv-platform-1.3-bin.zip`这个压缩包,它包含了JavaCV 1.3版本的所有依赖包。 JavaCV的主要目标是简化Java和Android开发者在处理图像和视频时的工作。它通过提供Java接口来封装现有的...

    junit-platform-launcher-1.6.2.jar

    junit-platform-launcher-1.6.2.jarjunit-platform-launcher-1.6.2.jarjunit-platform-launcher-1.6.2.jar

    junit-platform-launcher-1.7.0.jar

    junit-platform-launcher-1.7.0.jarjunit-platform-launcher-1.7.0.jar

    jna-platform-4.1.0-API文档-中文版.zip

    赠送jar包:jna-platform-4.1.0.jar; 赠送原API文档:jna-platform-4.1.0-javadoc.jar; 赠送源代码:jna-platform-4.1.0-sources.jar; 赠送Maven依赖信息文件:jna-platform-4.1.0.pom; 包含翻译后的API文档:...

    jna-platform-4.3.0-API文档-中文版.zip

    赠送jar包:jna-platform-4.3.0.jar; 赠送原API文档:jna-platform-4.3.0-javadoc.jar; 赠送源代码:jna-platform-4.3.0-sources.jar; 赠送Maven依赖信息文件:jna-platform-4.3.0.pom; 包含翻译后的API文档:...

    get-platformio.py

    get-platformio.py get-platformio.py get-platformio.py get-platformio.py

    javacv-platform-1.5.4.zip

    `javacv-platform-1.5.4.zip`是一个压缩包,包含了JavaCV平台版本1.5.4所需的jar文件,这些文件对于在Java环境中开发涉及图像处理和计算机视觉的应用至关重要。 JavaCV的主要目标是简化Java开发者在计算机视觉领域...

    最新全套Jar: FFMPEG3.4.1+JavaCV1.4.1+OpenCV3.4.1-含windows&linux;平台链接库

    artoolkitplus-linux-armhf.jar artoolkitplus-linux-ppc64le.jar artoolkitplus-linux-x86.jar artoolkitplus-linux-x86_64.jar artoolkitplus-platform.jar artoolkitplus-windows-x86.jar artoolkitplus-windows-...

    junit-platform-commons-1.7.0.jar

    junit-platform-commons-1.7.0.jar

    JNA-5.7.0 jna-platform-5.7.0

    总的来说,JNA-5.7.0和jna-platform-5.7.0是Java开发中非常实用的工具,它们极大地降低了与本地系统交互的复杂性,使得Java开发者可以更加专注于业务逻辑,而不是底层的系统调用实现。通过学习和掌握JNA的使用,...

    javacv-platform-1.5.5-bin.zip

    标题中的"javacv-platform-1.5.5-bin.zip"指的是JavaCV平台的1.5.5版本的二进制文件包,这个压缩包包含了运行JavaCV所必需的JAR库和示例代码。 1. **JavaCV介绍** JavaCV是基于Java的计算机视觉开发包,由Tangram ...

    junit-platform-launcher-1.3.1.jar_platform的意思

    junit-platform-launcher-1.3.1.jar

    junit-platform-engine-1.8.2-API文档-中文版.zip

    赠送jar包:junit-platform-engine-1.8.2.jar; 赠送原API文档:junit-platform-engine-1.8.2-javadoc.jar; 赠送源代码:junit-platform-engine-1.8.2-sources.jar; 赠送Maven依赖信息文件:junit-platform-engine...

    junit-platform-engine-1.6.3.jar

    junit-platform-engine-1.6.3.jarjunit-platform-engine-1.6.3.jar

    junit-platform-launcher-1.8.0-M1-API文档-中英对照版.zip

    赠送jar包:junit-platform-launcher-1.8.0-M1.jar; 赠送原API文档:junit-platform-launcher-1.8.0-M1-javadoc.jar; 赠送源代码:junit-platform-launcher-1.8.0-M1-sources.jar; 赠送Maven依赖信息文件:junit-...

    junit-platform-commons-1.8.2-API文档-中英对照版.zip

    赠送jar包:junit-platform-commons-1.8.2.jar; 赠送原API文档:junit-platform-commons-1.8.2-javadoc.jar; 赠送源代码:junit-platform-commons-1.8.2-sources.jar; 赠送Maven依赖信息文件:junit-platform-...

Global site tag (gtag.js) - Google Analytics