基于I2C子系统的I2C驱动编写
2010-10-29 20:52
274 查看
最近一直被I2C驱动所困扰,在上次编写普通at24c02(eeprom)的字符设备驱动后,一直没有什么进展,不知道为什么,我的中断已经注册了,但是我的中断例程就是没有被执行,这是怎么回事??
现在干脆写基于I2C子系统的e2prom的驱动程序
I2C子系统的三层结构:(1)I2C_CORE层(2)I2C总线驱动层(3)I2C设备驱动层
I2C核心层是Linux内核提供的,基本上不需要驱动工程师去修改,它是I2C总线驱动层与I2C设备驱动之间的桥梁,提供了I2C总线的注册、注销,I2C设备的注册、注销等方法。
I2C总线驱动需要实现的工作,(1)数据结构I2C_algorithm里的几个函数,包括:master_xfer()、functionality()等。
I2C_设备驱动层是具体是I2C设备,但是中间又有一个struct i2c_driver结构体是虚的,即没有和具体设备有联系,与具体设备对应的是:struct i2c_client结构体。可是i2c_driver结构十分重要的。它包括了几个重要的需要工程师根据具体i2c设备实现的函数:attach_adapter(),detach_client()等函数。
总结一下:struct I2C_adapter与struct i2c_algorithm这两个结构体是在I2C总线驱动中实现的。struct i2c_driver与struct i2c_client这两个结构体是在I2C设备驱动中实现的,最终完成时,应该是有两个驱动模块,一个是总线驱动模块,一个是设备驱动模块。这正好是Linux2.6以来的总线、设备、驱动这样一个模型。具体的实现以后再乱写写吧!!
现在干脆写基于I2C子系统的e2prom的驱动程序
I2C子系统的三层结构:(1)I2C_CORE层(2)I2C总线驱动层(3)I2C设备驱动层
I2C核心层是Linux内核提供的,基本上不需要驱动工程师去修改,它是I2C总线驱动层与I2C设备驱动之间的桥梁,提供了I2C总线的注册、注销,I2C设备的注册、注销等方法。
I2C总线驱动需要实现的工作,(1)数据结构I2C_algorithm里的几个函数,包括:master_xfer()、functionality()等。
I2C_设备驱动层是具体是I2C设备,但是中间又有一个struct i2c_driver结构体是虚的,即没有和具体设备有联系,与具体设备对应的是:struct i2c_client结构体。可是i2c_driver结构十分重要的。它包括了几个重要的需要工程师根据具体i2c设备实现的函数:attach_adapter(),detach_client()等函数。
总结一下:struct I2C_adapter与struct i2c_algorithm这两个结构体是在I2C总线驱动中实现的。struct i2c_driver与struct i2c_client这两个结构体是在I2C设备驱动中实现的,最终完成时,应该是有两个驱动模块,一个是总线驱动模块,一个是设备驱动模块。这正好是Linux2.6以来的总线、设备、驱动这样一个模型。具体的实现以后再乱写写吧!!
相关文章推荐
- S5PC100基于I2C子系统的lm75驱动流程图
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动的Makefile
- 编写i2c驱动-基于Linux3.10
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动的Makefile
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动
- 基于i2c子系统的驱动分析
- Linux驱动编程--基于I2C子系统的I2C驱动
- Linux驱动编程--基于I2C子系统的I2C驱动的Makefile
- Linux i2c子系统(四) _从i2c-s3c24xx.c看i2c控制器驱动的编写
- Linux驱动编程--基于I2C子系统的I2C驱动
- S5PC100基于I2C子系统的lm75驱动流程图
- 手把手教你写Linux设备驱动---input子系统(四)--电容屏驱动ft5x06编写(一)(基于友善之臂4412开发板)
- S5PC100基于I2C子系统的lm75驱动流程图
- Linux i2c子系统(四) _从i2c-s3c24xx.c看i2c控制器驱动的编写