linux2 6设备相关的主要是 总线 设备 驱动.docxVIP

linux2 6设备相关的主要是 总线 设备 驱动.docx

  1. 1、本文档共4页,可阅读全部内容。
  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文档。上传文档
查看更多
linux2 6设备相关的主要是 总线 设备 驱动 linux2period;6设备相关的主要是colon;总线period;设备period;驱动 设备是具体的硬件,驱动是使设备工作的方法,总线就是连接设备和驱动桥梁。驱动通过总线来控制设备。总线包括usb、i2c等。而platform是一个抽象的总线。本文也将对platform进行初步的介绍。 platform包括两个重要的结构体:plateform_device和platform_driver platform_device:代表一个设备,其中包含这个设备的一些属性,一般是在平台相关的bsp文件中实现的. 其结构体如下: struct platform_device { const char * name; ?//设备名称 int id; ????????????//设备ID struct device dev; ?//包含设备相关信息 u32 num_resources; ?//设备所使用的资源数目 struct resource * resource; ???//设备所使用的资源 const struct platform_device_id *id_entry; struct pdev_archdata archdata; //注册、注销设备的函数 extern int platform_device_register(struct platform_device *); extern void platform_device_unregister(struct platform_device *); platform_driver:代表设备的驱动,包含了对这个设备操作的一些方法 其对应的结构体如下: struct platform_driver { int (*probe)(struct platform_device *); ?//驱动探测 int (*remove)(struct platform_device *); //驱动移除 void (*shutdown)(struct platform_device *); int (*suspend)(struct platform_device *, pm_message_t state);//驱动睡眠 int (*resume)(struct platform_device *); ?//驱动唤醒 struct device_driver driver; ????????????//包含设备名称 const struct platform_device_id *id_table; //驱动注册、注销函数 extern int platform_driver_register(struct platform_driver *); extern void platform_driver_unregister(struct platform_driver *); 设备(platform_devie)和驱动(platform_driver)是由总线通过“name”字符串来匹配的。也就是说 platform_device?中的“name”字段要和platform_driver?中的name字段一致。当一个驱动平台的device和driver都写好后,注册到内核中,并且他们的name一致。则在启动系统的时,就会匹配这个设备。当匹配成功后就会执行probe这个函数,来探测驱动(主要做初始化的工作,填充一些必要的结构体,生成一些资源,向内核注册一些设备等等,并制定这个驱动要完成的动作). 下面讲解下probe函数流程: 在有些驱动的probe函数中,会使用下列函数, platform_get_resource:获取设备所使用的来获取IO内存资源; platform_get_irq:获取设备所使用的IRQ中断资源; request_mem_region:向内核申请IO内存资源 request_irg:向内核申请中断号 其中相关资源都是在platform_devic结构体中的resource成员中定义。resoure结构体使用下面形式定义 static struct resource s3c_usb_resource[] = { [0] = { .start = S3C_PA_USBHOST, .e

文档评论(0)

软件开发 + 关注
官方认证
服务提供商

十余年的软件行业耕耘,可承接各类需求

认证主体深圳鼎云文化有限公司
IP属地广东
统一社会信用代码/组织机构代码
91440300MA5G24KH9F

1亿VIP精品文档

相关文档