Chinaunix首页 | 论坛 | 博客
  • 博客访问: 271604
  • 博文数量: 42
  • 博客积分: 485
  • 博客等级: 下士
  • 技术积分: 482
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-26 19:33
文章分类
文章存档

2017年(1)

2016年(4)

2015年(8)

2014年(3)

2013年(4)

2012年(3)

2011年(19)

我的朋友

分类: LINUX

2011-07-22 12:39:48

用platform可实现驱动和BSP资源的分离,做到资源易于统一管理和驱动易于跨平台移植
  a.系统初始化时,调用platform_add_device将设备添加到系统,其实这个函数的具体实现又调用了platform_device_register();
    ps:在mx28的BSP中,这个功能被封装在mx28_add_device()中,而mx28_add_device绕过了platform_add_device()最终直接调用platform_device_register()实现的。
  b.在驱动加载时,调用platform_driver_register注册驱动;
    以上两个步骤中,注册驱动时怎么关联到正确的device的呢?通过各自参数结构(platform_device和platform_driver)中的name匹配的,所以name要一致;
  c.在驱动加载时,驱动会调用probe函数,建议在这个函数中使用platform_get_resource去获取与设备相关的resource;
    这个resource指针是保存在platform_device的实例中的,随设备实例在初始化时一起注册到系统中的。
    ps:在mx28的BSP中,platform_device的实例是以数组表的形式统一定义的(在device.c中dev_lookup[]),然后在要注册device的地方调用 mxs_get_device()获取到相应实例,并将resource指针赋值到这个实例中,再进行platform_add_device(即mx28_add_device)。
阅读(2829) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~