嵌入式linux驱动-I2C笔记
来源:互联网 发布:mysql字段不区分大小写 编辑:程序博客网 时间:2024/05/22 08:11
一、开发环境
1、内核:Linux 2.6.22.6;
2、JZ2440v3
3、ubuntu 9.10
二、过程
参考drivers/i2c/chips/eeprom.c,drivers/i2c/chips/ds1374.c。
1.分配一个i2c_driver结构体
2.设置i2c_driver结构体
设置两个重要的成员
.attach_adapter=xxx_adapter //在函数xxx_adapter会调用 i2c_probe(adap,设备地址addr,发现这个设备后要调用的函数function)
.detach_client=xxx_client //卸载驱动后,如果之前发现能够支持的设备,则调用它来清理
3.注册上面分配的i2c_driver结构体变量。使用函数i2c_add_driver,在入口函数里注册。注册后,装载驱动时程序会调用xxx_adapter函数,xxx_adapter函数中会调用i2c_probe(adap,addr,function)函数,确认设备地址为addr是否有设备(通过是否会回发ACK信号确认),如果设备存在则执行function函数。卸载驱动时会调用xxx_client函数,在xxx_adapter中注册分配的东西要在这卸载释放。
4.构造i2c_client结构体,收发数据会用到。例子中这个i2c_client结构体的变量会在function函数中被设置。function函数还会进行字符设备驱动的操作,包括分配file_operations结构体变量,并设置.read=xxx_read,.write=xxx_write,分配设备号等。
i2c_client结构体重要成员
.address //设备地址
.adapter //指向适配器
.driver //指向i2c_driver结构体
使用:i2c-attach_client(i2c_client结构体变量)
5.编写xxx_read,xxx_write函数。
其中要用到i2c_msg结构体。这个结构体中可以用设置数据传输三要素:源地址、目的地址、长度,操作类型(读、写)等。设置好三要素还有读写,再调用i2c_transfer()函数,就可以完成对数据的读写了。
- 嵌入式linux驱动-I2C笔记
- 嵌入式Linux驱动笔记(十一)------i2c设备之mpu6050驱动
- linux i2c驱动笔记
- linux i2c驱动笔记
- linux i2c驱动笔记
- linux i2c驱动笔记
- linux I2C驱动学习笔记
- linux下i2c驱动笔记
- linux下i2c驱动笔记
- 嵌入式Linux驱动笔记(十)------通俗易懂式分析了解i2c框架
- linux I2C 设备驱动学习笔记
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 嵌入式Linux系统下I2C设备驱动程式的研发
- 嵌入式linux驱动-触摸屏笔记
- 嵌入式linux驱动-DMA笔记
- 嵌入式linux驱动-网络设备驱动笔记
- caffe源码学习中--src/caffe/solver.cpp
- 566. Reshape the Matrix
- json返回list,并接收。
- 第二章 批判性思维原则
- Python--numpy(np.loadtxt)
- 嵌入式linux驱动-I2C笔记
- JDBC
- poj3468-树状数组 一维 区间更新 区间查询
- 操作系统之进程那些事
- 常用linux命令
- 分层
- python编程快速上手 第8章 实践项目 自己写的答案
- Oracle中的清空表的语句
- 51nod 1021 石子归并(基础dp)