I2C

i2c_add_driver函数用法 

http://wuyidaxuezhb.blog.163.com/blog/static/185337391201211133547701/




Linux I2C驱动完全分析(一)

http://www.cnblogs.com/armlinux/archive/2011/04/30/2390827.html



i2c_driver

http://www.cnblogs.com/cute/archive/2011/08/30/2159326.html


问题:

http://topic.youkuaiyun.com/u/20101012/23/e9fcd067-f4b0-4b1d-a219-2bd7479fec7d.html


i2c_device_id 

struct i2c_device_id *id_table; 如果驱动可以支持好几个设备,那么这里面就要包含这些设备的ID


MODULE_DEVICE_TABLE (usb, skel_table);

MODULE_DEVICE_TABLE (pci, skel_table);

MODULE_DEVICE_TABLE (i2c, i2c_driver.id_table);
         该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pcimap中,当depmod结束之后,所有的PCI设备连同他们的模块名字都被该文件列出。当内核告知热插拔系统一个新的PCI设备被发现时,热插拔系统使用modules.pcimap文件来找寻恰当的驱动程序  

        MODULE_DEVICE_TABLE的第一个参数是设备的类型,如果是USB设备,那自然是usb(如果是PCI设备,那将是pci,这两个子系统用同一个宏来注册所支持的设备)。后面一个参数是设备表,这个设备表的最后一个元素是空的,用于标识结束。例:假如代码定义了USB_SKEL_VENDOR_ID是 0xfff0,USB_SKEL_PRODUCT_ID是0xfff0,也就是说,当有一个设备接到集线器时,usb子系统就会检查这个设备的 vendor ID和product ID,如果他们的值是0xfff0时,那么子系统就会调用这个模块作为设备的驱动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值