ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux EEPROM调试

Linux EEPROM调试

目录

目录

前言

DTS配置的参考

AT24C256 EEPROM的DTS配置参考

AT24C02 EEPROM的DTS配置参考

内核配置的参考

AT24C256 EEPROM的内核配置参考

AT24C02 EEPROM的内核配置参考

验证测试的参考

AT24C256 EEPROM的验证测试参考

AT24C02 EEPROM的验证测试参考

总结


前言

EEPROM(Electrically Eraseble Programmable rend only memory,电可擦可编程只读存储器)是一种非易失性存储芯片。

它们具有以下核心功能与特点:

1. 数据持久性。

  • 断电后数据不丢失,适用于需要长期保存配置信息的场景;
  • 通过电子擦除和编程实现数据更新,无需物理移除芯片。

2. 可重复擦写。

  • 支持数万次擦写操作,适用于频繁修改数据的应用(如硬件配置存储等);
  • 擦除时仅需特定电压,无需紫外线照射(区别于EPROM)。

3. 应用场景。

  • 硬件配置存储:用于接口卡、即插即用设备的参数保存;
  • 安全防护:作为”硬件锁“防止软件非法拷贝;
  • 物联网设备:作为通信模块的配置信息或设置。

4. 技术特性。

  • 支持按字节读写,灵活性较高;
  • 现代EEPROM通常无需额外高压(Vpp),简化设计。

5. 与其它存储介质的区别。

相比NOR/NAND FLASH,EEPROM更适合小容量、频繁更新的场景;与RAM相比,具有非易失性优势,但速度较慢。

下面以AT24Cxx系列的EEPROM为例。


DTS配置的参考

AT24C256 EEPROM的DTS配置参考

AT24C256是一款广泛使用的串行EEPROM芯片,具有256K位存储容量,它使用I2C协议进行通信,适用于多种控制器系统。这种非易失性存储器在断电后依然能够保持数据不丢失,常被用于存储配置信息、日志数据或代码引导程序等。

i2c0_gpio: i2c@0 { compatible = "i2c-gpio"; #address-cells = <1>; #size-cells = <0>; scl-gpios = <&gpioc 22 GPIO_ACTIVE_HIGH>; sda-gpios = <&gpioc 23 GPIO_ACTIVE_HIGH>; i2c-gpio,delay-us = <2>; /* ~100 kHz */ at24c256@50 { compatible = "atmel,24c256"; reg = <0x50>; pagesize = <64>; }; };

AT24C02 EEPROM的DTS配置参考

AT24C02是一款2K位的串行EEPROM芯片,内部含有256个8位字节,有一个16字节的页写缓冲器,主要用于存储设备配置信息、系统参数等需长期保存且断电不丢失的数据场景。

i2c0_gpio: i2c@0 { compatible = "i2c-gpio"; #address-cells = <1>; #size-cells = <0>; scl-gpios = <&gpc 22 GPIO_ACTIVE_HIGH>; sda-gpios = <&gpc 23 GPIO_ACTIVE_HIGH>; i2c-gpio,delay-us = <2>; /* ~100 kHz */ 24c02@50 { compatible = "atmel,24c02"; reg = <0x50>; pagesize = <16>; }; };

内核配置的参考

AT24C256 EEPROM的内核配置参考

CONFIG_EEPROM_AT24=y

AT24C02 EEPROM的内核配置参考

CONFIG_EEPROM_AT24=y

验证测试的参考

AT24C256 EEPROM的验证测试参考

1. 烧录固件后,正常开机,命令行终端可以输入:dmesg,正常打印如下:

# dmesg | grep "at24" at24 0-0050: 32768 byte 24c256 EEPROM, writable, 16 bytes/write

2. 对其进行写操作,如下:

# i2ctransfer -f -y 0 w7@0x50 0x20 0x00 0x11 0x22 0x33 0x44 0x55

3. 对其进行读操作,如下:

# i2ctransfer -fay 0 w2@0x50 0x20 0x00 r5@0x50 0x11 0x22 0x33 0x44 0x55

AT24C02 EEPROM的验证测试参考

1. 烧录固件后,正常开机,命令行终端可以输入:dmesg,正常打印如下:

# dmesg | grep "at24" at24 0-0050: 256 byte 24c02 EEPROM, writable, 16 bytes/write

2. 对其进行写操作,如下:

# i2ctransfer -f -y 0 w2@0x50 0x00 0x11

3. 对其进行读操作,如下:

# i2ctransfer -fay 0 w1@0x50 0x00 r1@0x50 0x11

总结

EEPROM使用电场来擦除和写入存储器单元,因此可以反复写入数据。EEPROM通常用于存储小量数据,并且可以通过SPI或I2C接口进行读写。相对于EEPROM,Flash具有更高的存储密度和更快的写入速度。Flash内部被分为多个扇区,每个扇区都可以单独擦除和写入。Flash通常用于存储固件和大量数据,并且可以通过SPI、SDIO或NAND等接口进行读写。


返回列表