基于I2C子系统的I2C驱动编写

 

       最近一直被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以来的总线、设备、驱动这样一个模型。具体的实现以后再乱写写吧!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值