Linux设备模型之platform总线-

一:前言

Platform总线是kernel中最近加入的一种虚拟总线.在近版的2.6kernel中,很多驱动都用platform改写了.只有在分析完platform总线之后,才能继续深入下去分析.在分析完sysfs和设备驱动模型之后,这部份应该很简单了.闲言少叙.步入正题.GO.GO!以下的源代码分析是基于2.6.25的.

二:platform概貌

在分析源代码之前,先在内核代码中找一个platform架构的驱动程序.下面以i8042芯片的驱动为例进行分析.

在linux-2.6.25/drivers/input/serio/i8042.c的intel 8042的初始化入口中,有以下代码分段: static int __init i8042_init(void)

{

……

err = platform_driver_register(&i8042_driver);

if (err)

goto err_platform_exit;

i8042_platform_device = platform_device_alloc("i8042", -1);

if (!i8042_platform_device) {

err = -ENOMEM;

goto err_unregister_driver;

}

err = platform_device_add(i8042_platform_device);

if (err)

goto err_free_device;

……

}

我们在上面的程序片段中看到,驱动程序先注册了一个platform device.然后又添加了一个platform device.这里就涉及到了platform的两个最主要的操作,一个设备驱动注册,一个设备注册.

要了解platform总线的来龙去脉.得从它的初始化开始.

三:platform初始化

Platform总线的初始化是在linux-2.6.25/drivers/base/platform.c中的platform_bus_init()完成的,代码如下:

int __init platform_bus_init(void)

{

linux设备模型(8)_platform设备,Linux设备模型之platform总线相关推荐

  1. 【Linux开发】linux设备驱动归纳总结(九):1.platform总线的设备和驱动

    linux设备驱动归纳总结(九):1.platform总线的设备和驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  2. Linux设备驱动模型之platform总线

    1 平台设备和驱动初识 platform是一个虚拟的地址总线,相比pci,usb,它主要用于描述SOC上的片上资源,比如s3c2410上集成的控制器(lcd,watchdog,rtc等),platfo ...

  3. linux内核部件分析(十)——设备驱动模型之class,linux内核部件分析(十)——设备驱动模型之class...

    前面看过了设备驱动模型中的bus.device.driver,这三种都是有迹可循的.其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动.但本节要介绍的class ...

  4. linux平台设备驱动模型是什么意思,Linux设备驱动模型之我理解

    点击(此处)折叠或打开 /* my_bus.c   */ #include #include #include #include #include #include "my_bus.h&qu ...

  5. linux设备驱动程序架构的研究,Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)...

    Linux设备驱动程序学习(12) -Linux设备模型(底层原理简介) 以<LDD3>的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的.但是我个人认 ...

  6. Linux那些事儿 之 戏说USB(24)设备的生命线(七)

    算是进入了HCD的片儿区,这里的老大不是帮派头目也不是巡逻片儿警,而是几个结构.在HCD这个片儿区,这个山头儿,王中之王就是include/linux/usb/hcd.h里定义的struct usb_ ...

  7. Linux那些事儿 之 戏说USB(18)设备的生命线(一)

    首先当然是你将usb设备连接在hub的某个端口上,hub检测到有设备连接了进来,它会为设备分配一个struct usb_device结构的对象并初始化,并调用设备模型提供的接口将设备添加到usb总线的 ...

  8. linux虚拟网络设备--虚拟机网卡和linux bridge上tap设备的关系(七)

    1. 虚拟机进程 使用ps –ef |grepkvm可以看到虚拟机进程信息如下: /usr/libexec/qemu-kvm -nameinstance-0000001d -S -machine pc ...

  9. linux open函数_Linux驱动开发 / 字符设备驱动内幕 (1)

    哈喽,我是老吴,继续记录我的学习心得. 一.保持专注的几个技巧 将最重要的事放在早上做. 待在无干扰环境下,比如图书馆. 意识到刚坐下开始投入工作前,有点负面小情绪是特别正常的现象. 让"开 ...

最新文章

  1. Microsoft Dynamics CRM 2011 相关-摘自网络
  2. Asp.net控件之异同:HTML控件与Web服务器控件
  3. Python的random
  4. yum报错[Errno 256] No more mirrors to try.
  5. linux隐藏apache信息,Apache防盗链和隐藏版本信息-linux-centos运维
  6. SpringBoot 之环境搭建
  7. leetcode--Rotate List
  8. 网站icon收藏夹图标
  9. 集合类接口和类层次关系图
  10. 考研高等数学张宇30讲笔记——第六讲 中值定理
  11. 【论文解读 KDD 2018 | HEER】Easing Embedding Learning by Comprehensive Transcription of HIN
  12. linux 硬盘满了如何处理
  13. 微信小程序中wxml中用data-id传出的数据在js中的获取方法
  14. 使用 Matlab 解决数学建模问题
  15. 初次使用tshark小结
  16. 推一款基于原生的小程序(埋点)插件:ani-weapp
  17. 彻底掌握 Promise-原生Promise的实现(二) Promise的链式调用
  18. Java动物声音模拟器
  19. Word,Excel,PPT等Office文件Web浏览器在线预览
  20. 【较全面】LaTeX tcolorbox的使用(添加阴影,支持跨页,设置颜色,设置缩进,设置边距,设置线框类型,隐藏线框)

热门文章

  1. @Service注解的作用
  2. Android开发学习之TabView选项卡具体解释 -- 基于Android4.4
  3. 多线程实现的4中方法
  4. 給服务器增加swap空间缓解内存压力
  5. JS收集:遍历CHECKBOX
  6. flutter绘图基础之三阶贝塞尔曲线cubicTo
  7. Android ListView下拉与上拉刷新加载更多(一)
  8. docker安装文档
  9. python文件,字符串,二进制的读写
  10. DPDK Qos之报文处理流水线