Linux设备驱动之platform总线.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux设备驱动之platform总线.doc

LINUX设备驱动之platform总线 -------------------------------------------------------------- 分析linux内核源码,版本号为2.6.32.3 ------------------------------------------------------------- 阅读本文之前,如果你对设备驱动模型还不了解,请先阅读本站设备驱动模型相关文章。 Platform总线是kernel中的一种虚拟总线,2.6版本很多驱动都用它来实现。 一.Platform初始化 系统启动时初始化时创建了platform_bus设备和platform_bus_type总线: 内核初始化函数 /* * Ok, the machine is now initialized. None of the devices * have been touched yet, but the CPU subsystem is up and * running, and memory and process management works. * * Now we can finally start doing some real work.. */ static void __init do_basic_setup(void) { cpuset_init_smp(); usermodehelper_init(); init_tmpfs(); driver_init(); //go in. init_irq_proc(); do_ctors(); do_initcalls(); } /** * driver_init - initialize driver model. * * Call the driver model init functions to initialize their * subsystems. Called early from init/main.c. */ void __init driver_init(void) { /* These are the core pieces */ devtmpfs_init(); devices_init(); buses_init(); classes_init(); firmware_init(); hypervisor_init(); /* These are also core pieces, but must come after the * core core pieces. */ platform_bus_init(); //hackson,goin. system_bus_init(); cpu_dev_init(); memory_dev_init(); } 我们看看platform_bus_init()函数: int __init platform_bus_init(void) { int error; early_platform_cleanup(); error = device_register(platform_bus); if (error) return error; error = bus_register(platform_bus_type); if (error) device_unregister(platform_bus); return error; } device_register(platform_bus)中的platform_bus如下: struct device platform_bus = { .init_name = platform, }; 改函数把设备名为platform 的设备platform_bus注册到系统中,其他的platform的设备都会以它为parent。它在sysfs中目录下.即 /sys/devices/platform。 接着bus_register(platform_bus_type)注册了platform_bus_type总线,看一下改总线的定义: struct bus_type platform_bus_type = { .name = platform, .dev_attrs = platform_dev_attr

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档