linux注册设备驱动的理解

platform_driver_register 和 platform_driver_register 区别是什么???

这个目前是简单蛋疼的问题


最近读driver/mtd/nand/s3c2410.c nand flash的驱动,里面使用的platform_driver_register(&s3c2410_nand_driver)来注册驱动程序,又参考Documentation/driver-model/platform.txt文档说 

platform_driver_register(struct platform_driver *drv)注册驱动程序时检查 
  drv->driver.name 字段是否跟 
platform_device_register(struct platform_device *pdev)注册的设备 pdev.name字段匹配,如果匹配则驱动和设备绑定在一起工作(不知道理解的对不对) 
  
可不可以这样理解:这个驱动模型分为两部分,platform_device和platform_driver, platform_device主要负责硬件资源的分配(比如nand flash的分区信息),而platform_driver在注册时寻找到对应的device,两者合作才能对硬件进行驱动。 
  
但是我试验在 driver/mtd/nand/目录下添加一个驱动文件(只调用了platform_driver_register,没有platform_device_register),按照我的理解没有调用platform_device_register进行设备注册,应该返回错误。但是编译成模块加载到内核中时却返回注册成功了 
struct my_nand_driver =  

   ..... 
}; 
  
static int __init my_nand_init(void) 

     int ret; 
     printk("my NAND Driver\n");  
  
     ret = platform_driver_register(&my_nand_driver); 
     printk("platform_driver_register returns:%d\n", ret);//这个地方返回0 
  
     return ret; 

  
static void __exit my_nand_exit(void) 

     platform_driver_unregister(&my_nand_driver); 

  
module_init(my_nand_init); 
module_exit(my_nand_exit); 
  
  
请问是我哪些地方理解的不对呢? 
  

如果我要在一个新的平台上开发nand flash驱动(内核中原来没有的,不是s3c2410这一类的), 那么包含platform_device_register的文件应该放在哪个目录下呢?




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值