EEPROM 设备树配置及介绍
eeprom 挂在 i2c3 总线上,使用 i2c 总线通讯
设备数配置:
i2c3 {
status = "okay";
eeprom@50{
compatible = "24c02";
reg = <0x50>;
pagesize = <1>;
read-only;
};
};
eeprom 设备树参数介绍:
compatible: 用作匹配对应的设备驱动,一般写 “<设备商编号>, <设备类型>” ,如果没有特定的厂商驱动,就选择通用的 <设备类型> 的驱动
reg: eeprom 在 I2C 总线上的地址
pagesize: 页写的字节长度,一个错误的值可能造成数据丢失,如果没有给定的值,一般设为 “1” 比较安全,只是写入速度慢一点
read-only: 只读模式
kernel 中驱动代码在于 drivers/misc/eeprom/
对应板子生成设备节点 /sys/bus/i2c/devices/3-0050 如下图:
其中eeprom即为驱动导出的bin属性,通过 #cat eeprom 即可访问设备读取数据。到此eeprom驱动加载完成,可通过使能eeprom 写保护 WP 引脚,打开 eeprom 写操作。
AT24C02的高4位是固定的,为1010b,低3位则由A0/A1/A2信号线的电平决定。按照我们此处的连接, A0/A1/A2 均为 0,所以EEPROM 的 7 位设备地址是: 1010 000b ,即 0x50。
由于 I2C 通讯时常常是地址跟读写方向连在一起构成一个 8 位数,且当 R/W 位为 0 时,表示写方向,所以加上 7 位地址,其值为“ 0xA0”,常称该值为 I2C 设备的“写地址”;当 R/W 位为 1 时,表示读方向,加上 7 位地址,其值为“ 0xA1”,常称该值为“读地址”。