linux platform驱动模型详解.pdfVIP

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

以s3c2440为例分析Linuxplatform驱动模型 一。概述 platform设备和驱动与 linux设备模型密切相关。platform在linux设备模型中,其实 就是一种虚拟总线没有对应的硬件结构。它的主要作用就是管理系统的外设资源,比如io 内存,中断信号线。现在大多数处理器芯片都是soc,如s3c2440,它包括处理器内核 (arm920t)和系统的外设(lcd接口,nandflash接口等)。linux在引入了platform 机制之后,内核假设所有的这些外设都挂载在 platform 虚拟总线上,以便进行统一管理。 二。platform总线 1.在系统中platform对应的文件drivers/base/platform.c,它不是作为一个模块注册到 内核的,关键的注册总线的函数由系统初始化部分,对应/init/main.c中的 do_basic_setup函数间接调用。这里可以看出platform非常重要,要在系统其他驱动加 载之前注册。下面分析platform总线注册函数 int__initplatform_bus_init(void) { interror; early_platform_cleanup(); error=device_register(platform_bus); //总线也是设备,所以也要进行设备的注册 if(error) returnerror; error=bus_register(platform_bus_type); //注册platform_bus_type总线到内核 if(error) device_unregister(platform_bus); returnerror; } 这个函数向内核注册了一种总线。他首先由/drivers/base/init.c中的driver_init函数调 用,driver_init函数由/init/main.c中的do_basic_setup函数调用,do_basic_setup这 个函数由kernel_init调用,所以platform总线是在内核初始化的时候就注册进了内核。 2.platform_bus_type总线结构与设备结构 (1)platform总线设备结构 structdeviceplatform_bus={ .init_name=platform, }; platform总线也是一种设备,这里初始化一个device结构,设备名称是platform, 因为没有指定父设备,所以注册后将会在/sys/device/下出现platform目录。 (2)platform总线结构 structbus_typeplatform_bus_type={ .name=platform, .dev_attrs=platform_dev_attrs, .match=platform_match, .uevent=platform_uevent, .pm=platform_dev_pm_ops, }; platform_dev_attrs设备属性 platform_matchmatch函数,这个函数在当属于platform的设备或者驱动注册 到内核时就会调用,完成设备与驱动的匹配工作。 platform_uevent热插拔操作函数 三。platform设备 1.platform_device结构 structplatform_device{ constchar*name; intid; structdevicedev; u32num_resources; structresource*resource; structplatform_device_id*id_entry; /*archspecificadditions*/ structpdev_archdataarchdat

文档评论(0)

仙人指路 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档