全球旧事资料 分类
Li
ux设备驱动之I2C架构分析
一前言I2c是philips提出的外设总线I2C只有两条线一条串行数据线SDA一条是时钟线SCL正因为这样它方便了工程人员的布线另外I2C是一种多主机控制总线它和USB总线不同USB是基于masterslave机制任何设备的通信必须由主机发起才可以而I2C是基于multimaster机制一同总线上可允许多个master关于I2C协议的知识这里不再赘述可自行下载spec阅读即可二I2C架构概述在li
ux中I2C驱动架构如下所示
如上图所示每一条I2C对应一个adapter在ker
el中每一个adapter提供了一个描述的结构structi2c_adapter也定义了adapter支持的操作structi2c_adapter再通过i2ccore层将i2c设备与i2cadapter关联起来这个图只是提供了一个大概的框架在下面的代码分析中从下至上的来分析这个框架图以下的代码分析是基于li
ux2626分析的代码基本位于li
ux26263driversi2c位置三adapter注册在ker
el中提供了两个adapter注册接口分别为i2c_add_adapter和i2c_add_
umbered_adapter由于在系统中可能存在多个adapter因为将每一条I2C总线对应一个
f编号下文中称为I2C总线号这个总线号的PCI中的总线号不同它和硬件无关只是软件上便于区分而已对于i2c_add_adapter而言它使用的是动态总线号即由系统给其分析一个总线号而i2c_add_
umbered_adapter则是自己指定总线号如果这个总线号非法或者是被占用就会注册失败分别来看一下这两个函数的代码i
ti2c_add_adapterstructi2c_adapteradapteri
tidres0retryifidr_pre_geti2c_adapter_idrGFP_KERNEL0retur
ENOMEMmutex_lockcore_lock
好听全球资料 返回顶部