I2C设备初始化方式4--从用户空间初始化I2C设备

(本文的部分内容翻译自Documentation/i2c/instantiating-devices)


方式4:从用户空间初始化I2C设备

在一般情况下,内核应该知道哪些I2C设备被连接以及他们的地址是什么。

然而,在某些情况下,它没有,所以sysfs接口用作让用户提供信息。这接口是由2属性组成,在每一个I2C总线上创建的文件目录:new_device和delete_device。这两个文件只写而且为了完成初始化、分别删除一个I2C设备你必须写正确的参数,给他们以正确的实例。

文件new_device需要2个参数:I2C设备的名称和I2C器件的地址。

文件delete_device需要一个参数:I2C设备地址。由于没有两个设备可以定义在同一地址上,地址是足以唯一标识一个需要删除的设备。

 

例如:
#echo eeprom 0x50 > / sys/bus/i2c/devices/i2c-3/new_device

虽然这个接口只用于当内核中的设备声明不能生效时,有各种不同的情况下它是非常有用的:

 

* I2C驱动程序通常会检测设备(方法3),但总线的设备存在不适当的位组,  因此检测不会触发。

* I2C驱动程序通常会检测设备,但您的​​设备在一个未知的地址。

* I2C驱动程序通常会检测设备,但您的​​设备没有被检测到。 要么因为过于严格的检测程序,或者是因为您  设备不能正常支持,但你知道它是兼容的。

*你正在开发一个自己焊接在测试板上的I2C设备驱动程序。

 

此接口是I2C驱动工具FORCE_ *模块的一些参数的替代品。在i2c-core中执行胜过每个设备驱动单独执行,更改设置时你不必重新加载驱动程序,这样做更有效,也更有优势。还可以在设备加载或可用之前初始化的设备的驱动程序,你不需要知道驱动设备的需求是什么。


你可能感兴趣的:(嵌入式,内核驱动)