![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
I2C
文章平均质量分 76
没钱的笨小孩
人生得意须尽欢......
展开
-
linux I2C 驱动之----i2c_driver的注册 .
在 linux I2C 驱动之----i2c_client 的注册中介绍了i2c_client的注册,现在再来说说i2c_driver的注册过程。 每一个驱动程序都有 module_init(xxxx_init) 这个语句,它代表系统启动的时候会自动执行 xxxx 这个函数,也就是说驱动的人口函数是由module_init来定义的。当然还有module_exit(XXXX),它代表转载 2013-10-16 20:23:47 · 444 阅读 · 0 评论 -
Linux的操作系统I2C驱动架构解说
最近因为工作需要涉及到了I2C总线。虽然我过去用过I2c,但看了 Linux kernel 后才发现,一个 layer 能被做到这样完善。 1.Linux的I2C驱动架 Linux中I2C总线的驱动分为两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其中总线驱动的职责,是为系统中每个I2C总线增加相应的读写方法。但是总线驱动本身并不会进行任何的通讯,它只是存在在那里,等待设备驱动调用转载 2013-10-16 21:27:37 · 372 阅读 · 0 评论 -
linux内核I2C子系统学习(三)
写设备驱动: 四部曲: 构建i2c_driver注册i2c_driver构建i2c_client ( 第一种方法:注册字符设备驱动、第二种方法:通过板文件的i2c_board_info填充,然后注册) 注销i2c_driver 具体如下: ● 构建i2c_driver static struct i2c_driver pca953x转载 2013-10-18 17:19:18 · 406 阅读 · 0 评论 -
Linux I2C驱动完全分析
其实老早就想写这个I2C的了,期间有各种各样的事情给耽误了。借着五一放假的时间把这个写出来,供同志们参考。以后会花一些时间深入研究下内核,虽然以前对内核也有所了解,但是还不系统。I2C的硬件结构并不复杂,一个适配器加几个设备而已。Linux下驱动的体系结构看着挺复杂,实际也是比较简单的。在本文中我还是使用实际的例子,结合硬件和软件两个方面来介绍。希望能给初学的同志们一些帮助,另外抛砖引玉,希望高手转载 2013-09-03 11:08:22 · 512 阅读 · 0 评论 -
I2C_BOARD_INFO{} / i2c_register_board_info() / i2c_match_id() / probe()
234 * struct i2c_board_info - template for device creation 235 * @type: chip type, to initialize i2c_client.name 236 * @flags: to initialize i2c_client.flags 237 * @addr: stored in i2c_client.a转载 2013-12-05 14:32:25 · 635 阅读 · 2 评论 -
linux设备模型之i2c子系统
I2c子系统将i2c控制器(i2c寄存器所在的那块电路)抽象出来,用adapter(适配器)这个结构来描述,可以说一个适配器就代表一条i2c总线,而挂接在i2c总线上的设备是用client这个结构体来表述,另外i2c_bus上的设备链表挂接的不单单是连接的这条i2c上的client,同样adapter也作为一个设备挂在其所在的i2c_bus,也就是说控制器和设备都作为i2c_bus上的设备连接在设转载 2013-12-05 14:29:52 · 431 阅读 · 0 评论 -
linux i2c设备驱动
一. i2c的结构体 1. i2c适配器 [cpp] view plaincopyprint? struct i2c_adapter { struct module *owner; //模块所有者 unsigned int id __deprecated; unsigned int class; //支持的类别(I2C_CL转载 2013-12-05 14:21:31 · 508 阅读 · 0 评论 -
内核下的I2C驱动--注册i2c_client的方法
1. 框架 1.1 硬件协议简介 1.2 驱动框架 1.3 bus-drv-dev模型及写程序 a. 设备的4种构建方法 a.1 定义一个i2c_board_info, 里面有:名字, 设备地址 然后i2c_register_board_info(busnum, ...) (把它们放入__i2c_board_list链表) list_add_tail(&de转载 2013-12-05 11:57:51 · 562 阅读 · 0 评论 -
device_create ()详解
在驱动程序中初始化入口函数中,向内核注册一个设备后,往往要注册一个类 例如 static int __init mydriver_init(void) //驱动程序的初始化 { …… MYDRIVER_Major = register_chrdev(0, DEVICE_NAME, &mydriver_fops); //向内核注册一个设备,返回值为注册的主设备号转载 2013-12-04 16:40:47 · 336 阅读 · 0 评论 -
I2C适配器
到底什么是I2C适配器? 看了篇讲LINUX I2C体系的书,说是主要的硬件有2个:一个client,一个adapter,I2C体系结构围绕她俩展开。 可是,到底什么是adapter?是I2C控制器么?如果是的话,I2C控制器不就几个寄存器么,还搞这么复杂作甚? 比如,单片机里的I2C控制器,好歹搞她两下她就干活了 不甚理解这儿的I2C adapter。 wmmy2008 发表于转载 2013-09-26 17:44:41 · 743 阅读 · 0 评论 -
i2c 知识点总结 (
0、 总线端:主要是mach-smdkc110.c和i2c_s3c2410.c两个文件:主要完成资源的注册,在s3c24xx_i2c_probe中创建adapter和client后总线端退出 设备端:主要是用户写的部分 通过i2c_add_driver匹配i2c_driver的id_table中的name和 client中的name后,进一步初始化client并调用i2c_driver的p转载 2013-09-26 19:58:52 · 417 阅读 · 0 评论 -
Linux I2C驱动完全分析(一)
博主按:其实老早就想写这个I2C的了,期间有各种各样的事情给耽误了。借着五一放假的时间把这个写出来,供同志们参考。以后会花一些时间深入研究下内核,虽然以前对内核也有所了解,但是还不系统。I2C的硬件结构并不复杂,一个适配器加几个设备而已。Linux下驱动的体系结构看着挺复杂,实际也是比较简单的。在本文中我还是使用实际的例子,结合硬件和软件两个方面来介绍。希望能给初学的同志们一些帮助,另外抛砖引玉,转载 2013-10-16 21:17:15 · 426 阅读 · 0 评论 -
/sys/bus/i2c/devices下的内容与i2c_board_info结构体
在目录/sys/bus/i2c/devices下能发现系统中的I2C设备,如下: view plaincopy to clipboardprint? # ls 0-0034 0-0030 0-0011 0-0058 # ls 0-0034 0-0030 0-0011 0-0058 这些设备就是系统中存在的设备。 这些设备是怎么来的? 在你对转载 2013-09-26 16:46:50 · 651 阅读 · 0 评论 -
platform_device
1.1 platform总线、设备与驱动 在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问题,转载 2013-09-24 16:07:14 · 395 阅读 · 0 评论 -
i2c总线上,适配器、设备驱动注册
1、总线适配器注册: 1)drivers/i2c/i2c-core.c int i2c_add_adapter(struct i2c_adapter *adapter) { int id, res = 0; retry: if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)转载 2013-09-26 19:00:52 · 501 阅读 · 0 评论 -
请问i2c_get_adapter(1)和i2c_get_adapter(2)有什么区别
各位大侠,请问i2c_get_adapter(1)和i2c_get_adapter(2)有什么区别?二者的含义是什么 回复于: 2013-06-09 09:44:45 获取adapter总线上的相应的I2C设备,参数是设备号 回复于: 2013-06-09 12:49:29 引用 1 楼 falloutmx 的回复: 获取adapter总线上的相应的I2转载 2013-09-26 17:23:40 · 936 阅读 · 0 评论 -
platform_driver_probe与platform_driver_register的区别
Platform Device and Drivers 从我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线 Platform bus使用最小结构来集成SOC processer上的各种外设,或者各种“legacy”之间的互联。 Platform device 典型的Pla转载 2013-09-24 16:03:05 · 591 阅读 · 0 评论 -
Linux I2C 设备注册
OMAP3630 I2C device驱动 在Linux内核中,I2C device驱动位于drivers/i2c/chips目录下,可以看到该目录下有很多相关的device驱动,这里以xxxx项目的mma7455为例介绍device驱动的注册过程,对应的device驱动程序为mma7455.c。 既然有device驱动,那么必定有相应的device,I2C的device是什么转载 2013-10-16 21:23:57 · 632 阅读 · 0 评论 -
Linux I2C驱动完全分析(二)
博主按:大热的天,刚刚负重从五道口走到石板房,大约4公里吧。终于让我找了一个咖啡屋休息一下,继续写这篇驱动分析。单身的生活就是这样无聊啊。 不发牢骚了,活出个样儿来给自己看!千难万险脚下踩,啥也难不倒咱!继续整!~ 先说一下,本文中有个疑惑,一直没有搞懂,写在这里,望高人指点一二,不胜感激! #define I2C_M_NOSTART 0x4000 /* if I2C_FUNC_PRO转载 2013-10-16 21:18:18 · 425 阅读 · 0 评论 -
device_create
在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_cre转载 2013-12-04 16:39:36 · 360 阅读 · 0 评论