电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

手把手教你写LinuxI2C设备驱动

手把手教你写LinuxI2C设备驱动_第1页
1/6
手把手教你写LinuxI2C设备驱动_第2页
2/6
手把手教你写LinuxI2C设备驱动_第3页
3/6
1 手把手教你写Linux I2C 设备驱动 Linux I2C 驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C 设备,几乎都需要编写相应的I2C 驱动去配置和控制它,例如 RTC 实时时钟芯片、音视频采集芯片、音视频输出芯片、EEROM 芯片、AD/DA 转换芯片等等。 Linux I2C 驱动涉及的知识点还是挺多的,主要分为Linux I2C 的总线驱动(I2C BUS Driver)和设备驱动(I2C Clients Driver),本文主要关注如何快速地完成一个具体的I2C设备驱动(I2C Clients Driver)。关于 Linux I2C 驱动的整体架构、核心原理等可以在网上搜索其他相关文章学习。 本文主要参考了 Linux内核源码目录下的 ./Documentation/i2c/writing-clients 文档。以手头的一款视频采集芯片TVP5158 为驱动目标,编写Linux I2C 设备驱动。 1. i2c_driver 结构体对象 每一个 I2C 设备驱动,必须首先创造一个 i2c_driver 结构体对象,该结构体包含了 I2C设备探测和注销的一些基本方法和信息,示例如下: 1. static struct i2c_driver tvp5158_i2c_driver = { 2. .driver = { 3. .name = "tvp5158_i2c_driver", 4. }, 5. .attach_adapter = &tvp5158_attach_adapter, 6. .detach_client = &tvp5158_detach_client, 7. .command = NULL, 8. }; 其中,name 字段标识本驱动的名称(不要超过 31 个字符),attach_adapter 和detach_client 字段为函数指针,这两个函数在 I2C 设备注册的时候会自动调用,需要自己实现这两个函数,后面将详细讲述。 2. i2c_client 结构体对象 上面定义的i2c_driver 对象,抽象为一个 i2c 的驱动模型,提供对 i2C 设备的探测和注销方法,而 i2c_client 结构体则是代表着一个具体的i2c 设备,该结构体有一个 data 指针,可以指向任何私有的设备数据,在复杂点的驱动中可能会用到。示例如下: 1. struct tvp5158_obj{ 2. struct i2c_client client; 3. int users; // how many users using the driver 4. }; 5. 6. struct tvp5158_obj* g_tvp5158_obj; 2 其中,users 为示例,用户可以自己在tvp5158_obj 这个结构体里面添加感兴趣的字段,但是i2c_client 字段不可少。具体用法后面再详细讲。 3 . 设备注册及探测功能 这一步很关键,按照标准的要求来写,则 Linux 系统会自动调用相关的代码去探测你的I2C ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

手把手教你写LinuxI2C设备驱动

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部