linux从i2c读取变量,I2C子系统之__I2C_first_dynamic_bus_num变量的相关分析
__i2c_first_dynamic_bus_num定义的位置在/driver/i2c/i2c-boardinfo.c
#include
#include
。。。 。。。
int__i2c_first_dynamic_bus_num;
EXPORT_SYMBOL_GPL(__i2c_first_dynamic_bus_num);
。。。 。。。
int__init
i2c_register_board_info(intbusnum,
structi2c_board_infoconst*info, unsigned len)
{
... ...
if(busnum >= __i2c_first_dynamic_bus_num)
__i2c_first_dynamic_bus_num = busnum + 1;
... ...
}
此函数在machine_init()函数中被调用:
staticvoid__init smdk2440_machine_init(void)
{
。。。 。。。
i2c_register_board_info(0, tq2440_i2c_devs,
ARRAY_SIZE(tq2440_i2c_devs));
。。。 。。。
}首先__i2c_first_dynamic_bus_num变量被定义成一个全局变量,所以初始化的时候自动被赋值为0。
此处busnum由machine_init()函数传递,同样也为0。所以在i2c_register_board_info()函数中的if语句肯定会被执行:
__i2c_first_dynamic_bus_num = busnum + 1;这导致__i2c_first_dynamic_bus_num的数值永远比busnum大1。
然后看i2c_register_adapter()函数中和__i2c_first_dynamic_bus_num相关的
代码部分:
staticinti2c_register_adapter(structi2c_adapter *adap)
{
。。。 。。。
if(adap->nr
i2c_scan_static_board_info(adap);
。。。 。。。
}其中的adap->nr赋值操作在s3c24xx_i2c_probe中完成:
staticints3c24xx_i2c_probe(structplatform_device *pdev)
{
。。。 。。。
i2c->adap.nr = pdata->bus_num;
。。。 。。。
}此处的pdata->bus_num未初始化,所以默认为0。
这使得i2c_register_adapter中的if条件成立,i2c_scan_static_board_info(adap)执行。
相关阅读:
linux从i2c读取变量,I2C子系统之__I2C_first_dynamic_bus_num变量的相关分析相关推荐
- linux串口读取mpu9250数据,模拟 I2C 读取 MPU9250 数据的测试笔记
硬件:STM32F103ZET6 + GY9250 软件:Keil MDK(v5.27)+ STM32CUBEMX(v5.2.1) 这里我在使用STM32CUBEMX最新版本(v5.5.0)生成Kei ...
- Linux 设备驱动篇之I2c设备驱动
******************************************************************************************** 装载声明:希望 ...
- STM32单片机硬件I2C读取AHT10温湿度传感器数据
STM32使用硬件IIC读取AHT10温湿度传感器的数据并显示在0.96寸OLED屏上. 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的. STM32使用硬件I2C读取SHTC3温 ...
- S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作。
这篇文档算上期末复习这段时间其实拖了有好久了,因为从一开始接触linux的i2c驱动体系我就各种凌乱,因为起初脑海中既没有整体框架也不熟悉相关体系下的结构,所以四处乱看,经常性的在看内核代码时看着看着 ...
- linux下IO口模拟I2C的一些总结
2019独角兽企业重金招聘Python工程师标准>>> 以前一直在用I2C接口,因为总是有线程的例子就一直没有去深入的了解,今天分析了一下在linux下通用GPIO模拟I2C的程序. ...
- vb6编写dll读取dat文件_【STM32Cube_15】使用硬件I2C读取温湿度传感器数据(SHT30)...
寻求更好的阅读体验,请移步Mculover666的个人博客: [STM32Cube_15]使用硬件I2C读取温湿度传感器数据(SHT30)www.mculover666.cn 本篇详细的记录了如何使 ...
- Linux i2c总线(2) - I2C核心层
1. I2C 核心层初始化 这一部分向系统注册了一个名为i2c的总线类型. static int __init i2c_init(void) {int retval;retval = bus_regi ...
- linux i2c 读写函数,Linux下读写芯片的I2C寄存器
要想在Linux下读写芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章<手把手教你写Linux I2C设备驱动>已经做了初 ...
- 启明云端分享|Linux系统下如何调试I2C设备
提示:Linux系统中,一些传感器通常挂载在I2C总线上,比如RTC和CSI等.我们在调试这些设备的时候,就需要了解Linux系统中操作I2C总线的方法.本文将详细介绍在Linux系统中如何调试I2C ...
最新文章
- 终端bash美化(FC)
- 数据科学家们,请补齐你的短板,如何提升R语言编程能力
- background 旋转_基于HTML5 Canvas 实现矢量工控风机叶轮旋转
- C语言通过链表指针删除链表节点的算法(附完整源码)
- 年度总结、下年计划不会做?教给你一个一招致胜的方法
- 日志汇总:logging、logger
- 实例化Model的三种方式
- JS:1.什么是JavaScript?
- 各类型土地利用图例_给排水系统各部件及图纸你还有多少不了解?
- python 正则表达式 前瞻_我应该如何在python中编写这个正则表达式(How should I write this regex in python)...
- 2-10 TreeView 控件
- Leetcode加一 (java、python3)
- SPSS基础教程:统计分析前的准备
- python计算iv值_Python计算IV值的示例讲解
- 锐捷交换机查看配置命令
- AR/VR研究框架——迎接AR元年
- DSP28335 eCAP 测频
- Calcite执行计划的四种展示格式
- 怎么把word里面的彩色图转化为灰度图,直接在word里面操作,无需转其他软件,超简单!(位图和矢量图都可以)
- 实现strstr()函数