登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
【第一篇】如何优雅使用多功能调试器上的EEPROM ...
【第一篇】如何优雅使用多功能调试器上的EEPROM
[ 复制链接 ]
阎怀慕
2025-6-11 15:08:58
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
EEPROM
EEPROM是一种带电可擦的可编程只读存储器,相较于FLASH来说,EEPROM的寿命更长,写入数据之前不需要先进行擦写操作。目前市面上常见的eeprom的型号多为at24cxx,其中有02,04,08,16,32等等。
在多功能调试器上加入EEPROM的目的:主要是起一个学习作用,因为在多功能调试器硬件上其实已经有一颗EMMC了,需要保存什么配置或者日志都可以通过这颗EMMC进行,且速度更快。之所以加入EEPROM,是因为之前在网上看过一遍通过文件系统操作EEPROM的文章,当然这里的文件系统并非真正意义上的文件系统,只是通过索引加内容的方式来访问EEPROM。
当然这种方式在我看来更适用于容量稍微大一点的EEPROM,且更适用于自己学习使用,真正到项目里边感觉这种方式访问的效率与价值都不如通过其他方式来访问的高。容量小了自然不用说,比如at24c02,总的容量为:2 * 1024 / 8 = 256 (byte),如果还使用这种文件系统,那除了文件系统的索引区,剩下实际能用于存储数据的数据区将大大缩减,这样反而得不偿失了,反而通过在mcu内使用一个结构体保存相应的访问地址来访问EEPROM内的数据更加高效。
EEPROM文件系统
多功能调试器使用了两片EEPROM,型号为at24c512。这里不使用一片at24c1024的原因单纯是两片at24c512的价格更便宜。
文件系统思路
整体来说就是将EEPROM的内存空间分为两片区域:索引区 + 数据区。
索引区分为目录区 + 地址区,目录区主要用于保存文件名、文件创建时间、文件大小以及地址区索引(用于保存指向地址区的第一个地址),地址区用于保存需要访问的数据区索引(为了实现这个操作,意味着数据区的数据块大小需要对应上地址区可存储的索引值的上限,比如说,有1KB的数据区,在使用时将每个数据块分16 byte,则整个数据区有64个块,则在地址区需要能保存0 - 63 的索引值,就当前情况而言,每个索引需要用至少6位,因为最大值为63,但是为了方便操作,每个索引占一个字节,则需要64字节的空间保存索引值)不难看出分块越大,需要的地址区越小,反之亦然。虽然分块越大可以得到更小的地址区占用,但是这样会带来一个空间利用率低的问题。所以在使用时需要合理分配。
目录区,文件名占用大小 + 文件时间占用大小 + 文件大小存储占用大小 + 地址区索引占用大小,比如32(文件名占用大小) + 14(时间用BCD码保存) + 2(最大保存 2^16 byte) + 1(0 - 63) = 49 byte。
在使用时通过文件名去遍历目录区,寻找匹配的文件。
文件系统伪代码
1. 文件系统初始化
(1)对整个目录区进行初始化操作,赋值0xFF
(2)对整个地址区进行初始化操作,赋值0xEE /* 0xEE表示当前地址区可用,0xFF表示某一个文件的结束标志 */
复制代码
2. 创建文件
(1)判断剩余空间是否足够(索引区)
(2)空间足够,写入文件名、文件时间、文件大小等值,然后遍历地址区,寻找起始地址区索引值
(3)在地址区继续遍历寻找可用地址区索引,直到最后一个地址区,写入结束标志
(4)按照地址索引在数据区写入文件数据
复制代码
3. 删除文件
(1)遍历目录区,找到文件信息所处位置
(2)读取文件目录区的地址索引值,通过该索引读取到下一个索引值,同时对上一个索引值做清除操作(在地址区时才进行),写入0xEE,直到在地址区找到0xFF的文件结束标志,此时同时对结束标志清除,写入0xEE
(3)清除文件信息位置,写入0xFF
复制代码
4. 读取文件
(1)遍历目录区,找到文件信息所处位置
(2)按照索引读取数据区的数据,直到找到文件结束标志
复制代码
5. 修改文件
(1)在文件末尾追加数据
1.通过追加数据大小更新地址索引
(2)覆写文件
1.计算新文件大小,更新地址区。若新文件更大,只需增加索引,但新文件更小,则需先对原文件多出新文件的索引做清除操作
2.覆写文件
(3)其他写入操作
对其他写入操作不做考虑,主要由于EEPROM本身的写入速度就很慢,对诸如文件中的插入写操作还需先暂存相应数据,然后在写入要插入的数据,最后还要回复原始数据,操作起来较为繁琐,所以除文件末尾追加数据与覆写文件外,其他写入操作不做考虑,下方的代码采用覆写操作
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
一篇
如何
优雅
使用
多功能
相关帖子
昆明黄金店推荐:如何甄选“价值平权”的黄金消费专家?
记录 Windows系统开启hyper-v ,部分端口被保留,导致端口不能使用而报错的问题
2026年成都品牌主,如何选择AI优化搜索(AI GEO)合作伙伴,附压箱底选购技巧
Claude Code 使用 Skills
企业数字化转型如何破局?看这三大招
如何使用DashVector的多向量检索
Java Optional 完全指南:优雅处理 null 的利器
VonaJS是如何做到文件级别精确HMR(热更新)的?
追踪链路--使用iptables/ipvs来记录后端pod真实ip
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
昆明黄金店推荐:如何甄选“价值平权”的黄金消费专家?
0
237
靳夏萱
2025-12-14
安全
记录 Windows系统开启hyper-v ,部分端口被保留,导致端口不能使用而报错的问题
0
203
溜椎干
2025-12-15
科技
2026年成都品牌主,如何选择AI优化搜索(AI GEO)合作伙伴,附压箱底选购技巧
0
960
百谖夷
2025-12-15
安全
Claude Code 使用 Skills
1
221
王妍芳
2025-12-16
安全
企业数字化转型如何破局?看这三大招
0
76
滑清怡
2025-12-16
业界
如何使用DashVector的多向量检索
0
250
别萧玉
2025-12-16
业界
Java Optional 完全指南:优雅处理 null 的利器
0
962
古修蟑
2025-12-17
业界
VonaJS是如何做到文件级别精确HMR(热更新)的?
0
402
济曝喊
2025-12-17
业界
追踪链路--使用iptables/ipvs来记录后端pod真实ip
0
782
硫辨姥
2025-12-17
回复
(4)
煞赶峙
2025-10-25 19:04:55
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
鼓励转贴优秀软件安全工具和文档!
轧岔
2025-11-27 20:12:52
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
勉欤铅
6 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
琶轮
2 小时前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
阎怀慕
2 小时前
关注
0
粉丝关注
27
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
650
Apipost分支功能:为API开发打造专属的成本
321
OpenCVSharp:学习人脸检测例子
548
JSAPIThree 加载单体三维模型学习笔记:Sim
121
读捍卫隐私09匿名指南
69
工作中常用函数详解与示例-PostgreSQL(其他
588
很顶!零成本克隆你的声音,这款B站开源神
678
go语言/golang 自动升级配置
964
函数式编程与传统编程的对比——基于java
230
pgAdmin 后台命令执行漏洞复现及分析(CVE-
856
度假村亲子水上乐园设备哪家质量好?
285
上下文协议(MCP)Java SDK 指南
699
Mac办公效率翻倍?Charmstone教你玩转多任
774
深耕上海14年,专业防水补漏:如何为厂房、
826
【A】字符串
464
一个完全由大模型AI Coding开发而成的程序
700
【Ubuntu】Ubuntu+VScode+ESP-IDF 的环境搭
664
60 秒出高质量科研图!Gemini+DeepSeek 绘
782
追踪链路--使用iptables/ipvs来记录后端pod
163
【译】初探 Visual Studio 2026 全新的用户
324
建筑渗漏治理的标准化实践:基于上海芮生建