平台设备驱动

25 篇文章 1 订阅
   来自精通Linux设备驱动程序开发:平台设备驱动中的平台可看做一种伪总线,通常用于将集成进片上系统的轻量级设备和Linux设备模型连接在一起。平台由平台设备和平台设备驱动程序组成。

(来自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=862226&PostID=21247170

设备驱动中,平台设备作为一个虚拟的设备和总线可以大大简化设计难度。

内核在初始化过程中,首先初始化虚拟总线,其次将设备添加到虚拟总线上,最后注册设备驱动,它会扫描虚拟总线寻找与之匹配的设备(如果设备名相符,就进行探测,探测成功后进行绑定)

probe函数一般完成硬件设备使能, struct resource的获取以及虚拟地址的动态映射和具体类型设备的注册(因为平台设备只是一种虚拟的设备类型);remove函数与之相反。

只要和内核本身运行依赖性不大的外围设备 ( 换句话说只要不在内核运行所需的一个最小系统之内的设备 ), 相对独立的 , 拥有各自独自的资源 (addresses and IRQs) ,都可以用 platform_driver 实现。

 在开发过程中内核版本的不同对于平台设备驱动注册方式也有不同的表示方法。

如2.6.14.1中的注册和注销                          如2.6.26.1中的注册和注销 
static int __init s3c2410_rtc_init(void)       static int __init s3c2410_rtc_init(void) 
{                                              { 
   return driver_register(&s3c2410_rtcdrv);        return platform_driver_register(&s3c2410_rtcdrv);
}                                              } 
static void __exit s3c2410_rtc_exit(void)      static void __exit s3c2410_rtc_exit(void) 
{                                              { 
   driver_unregister(&s3c2410_rtcdrv);             platform_driver_unregister(&s3c2410_rtcdrv);
}                                              }
   如2.6.14.1中                                 如2.6.26.1中 
static struct device_driver s3c2410_rtcdrv={   static struct platform_driver s3c2410_rtcdrv = {
    .name = "s3c2410-rtc",                        .probe = s3c2410_rtc_probe,
    .owner = THIS_MODULE,                         .remove = s3c2410_rtc_remove,
    .bus = &platform_bus_type,                    .suspend = s3c2410_rtc_suspend,
    .probe = s3c2410_rtc_probe,                   .resume = s3c2410_rtc_resume,
    .remove = s3c2410_rtc_remove,                 .driver = { 
    .suspend = s3c2410_rtc_suspend,                  .name = "s3c2410-rtc",
    .resume = s3c2410_rtc_resume,                    .owner = THIS_MODULE,}
};                                              };



 

来自:http://yuxu9710108.blog.163.com/blog/static/23751534201111805633259/ 平台设备,平台驱动间及资源间的关系

平台设备:platform_device{}用于定义好该SOC芯片上所用的各个设备所需要占用的资源
然后platform_add_devices()初始化好之,注册其需要占用的资源。

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值