驱动程序操作法:i2c设备的驱动也可以通过普通的设备驱动实现,像往常的驱动一样实现,然后在应用层就可以像读取普通文件一样操作,无需再考虑读写时序。其实普通的设备驱动也可以用两种方法实现,

1)构建字符设备驱动,在open,read,write等函数中直接操作i2c总线的相关寄存器来读写i2c设备,但是这种方法因平台不同,设备不同都要重新写驱动

2)在设备驱动中调用i2c-core.c提供的i2c_transfer函数来实现和i2c设备的通信,这样只要对不同的设备写不同的驱动就行了。

第一种构建字符设备驱动的方式,类似单片机上没有i2c子系统,直接操作i2c io口;其实这种方式类似gpio模拟i2c,笔者之前做过gpio模拟i2c驱动。这里我们主要讲解第二种方式。

1.笔者当前采用的是君正的3.08内核,需要修改/kernel-3.08/arch/mips/xburst/soc-4775/board//trunk/core/core-misc.c文件

// add qn8007 fm信息
static struct i2c_board_info duotin_i2c_dev[] = {
    {
        I2C_BOARD_INFO("dt-qn8007", 0x2b),
    },
};

//static int __init core_board_init(void)  函数中添加 add       0:i2c bus0; 将duotin_i2c_dev添加到i2cbus0

i2c_register_board_info(0, duotin_i2c_dev, ARRAY_SIZE(duotin_i2c_dev));

2.在/kernel-3.08/drivers/i2c/chips/目录下添加qn8007.c设备驱动文件,并对应的修改Kconfig和Makefile文件

最新文章

  1. 数据库模型设计PowerDesigner
  2. 解决Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
  3. Android——requestWindowFeature
  4. VB.NET中网络编程的另一种方案----system.net中的HttpWebRequest类的使用
  5. 简单http代理服务器搭建
  6. Python_二叉树
  7. 在dcef3当中执行js代码并获得返回值
  8. luogu P1816 【忠诚】
  9. ubuntu解压命令(转)
  10. SpringBoot------Maven Clean报错
  11. Hive的安装和使用
  12. composer - No business network has been specified for this connection 解决方案
  13. opencv----模板匹配
  14. java面试第六天
  15. 封ip对爬虫的影响
  16. SuperSocket 介绍
  17. crontab 定时任务设置
  18. 实现拷贝函数(strcpy)
  19. floyd骚操作——传递闭包
  20. Java学习之SpringBoot整合SSM Demo

热门文章

  1. CentOS6配置静态IP
  2. 【UML】UML所扮演的角色(视频总结)
  3. 九度oj 题目1022:游船出租
  4. leetcode 347 priority,map的使用
  5. Spring-IOC源码解读2.1-BeanDefinition的Resource定位
  6. Tengine的concat模块与js、css合并
  7. ajax 分页(jquery分页插件pagination) 小例1
  8. P1111 修复公路 洛谷
  9. 详解 CSS 七种三栏布局技巧
  10. Java并发编程-Executor框架(转)