news 2026/4/15 14:52:59

Linux EEPROM调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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等接口进行读写。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 14:57:13

视觉盛宴:鸿蒙Canvas/Animation与Flutter CustomPaint的深度协同

前言&#xff1a;当“声明式UI”遇上“Skia引擎” 在鸿蒙Flutter的混合开发中&#xff0c;我们经常会遇到一种尴尬的局面&#xff1a;原生侧&#xff08;ArkUI&#xff09;画了一个漂亮的图表&#xff0c;Flutter侧&#xff08;Widget&#xff09;也画了一个&#xff0c;但两者…

作者头像 李华
网站建设 2026/4/12 8:22:09

钉钉机器人网关接入LobeChat对外服务能力

钉钉机器人网关接入LobeChat对外服务能力 在企业办公场景中&#xff0c;AI助手的落地常常面临一个尴尬局面&#xff1a;技术团队搭建了强大的本地大模型系统&#xff0c;但普通员工却因为要切换平台、学习新工具而望而却步。与此同时&#xff0c;几乎每个员工每天都在使用的钉钉…

作者头像 李华
网站建设 2026/4/15 5:29:55

20. 指数函数和对数函数

1.指数函数 2.对数函数 1.指数函数 1).指数函数简介a.定义: 底数固定, 指数为变量的函数b.一般形式2).指数函数的核心性质3).指数函数定理2.对数函数 1).对数函数简介a.定义: 指数函数的逆运算b.一般形式2).对数函数的性质3).对数函数定理

作者头像 李华
网站建设 2026/4/15 12:48:27

15. 纹理尺寸是4的倍数

1. 纹理尺寸是4的倍数1. 纹理尺寸是4的倍数 1).内存对齐计算机(CPU/GPU)读取内存时不是逐字节读取, 而是按固定"对齐块"(比如4字节、16 字节、64 字节)批量读取 —— 这是硬件层面的优化, 能大幅提升访问效率Unity在导入非4倍数纹理时, 即使现代GPU支持非对齐读取, 也…

作者头像 李华
网站建设 2026/4/5 0:44:13

串的练习--------统计汉字

题目&#xff1a;统计汉字-2030 代码&#xff1a; /*汉字统计 HDOJ https://acm.hdu.edu.cn/showproblem.php?pid2030*/ #include<iostream> using namespace std; int main() {char s[100000] { 0 };int n;cin >> n;getchar();//消除换行符while (n--) {fgets…

作者头像 李华
网站建设 2026/4/7 15:21:35

LobeChat快手内容推送策略

LobeChat在快手内容推送中的实践与演进 在短视频平台竞争日益激烈的今天&#xff0c;用户注意力成为最稀缺的资源。如何让用户不仅“看到内容”&#xff0c;还能“主动发现内容”&#xff1f;这是像快手这样的平台面临的核心命题。传统推荐系统依赖隐式行为数据&#xff08;如完…

作者头像 李华