【第一篇】如何高效利用多功能调试器上的EEPROM

news/2025/3/12 21:21:11/文章来源:https://www.cnblogs.com/zhouyingke/p/18764698

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表示某一个文件的结束标志 */

assets/【第一篇】如何高效利用多功能调试器上的EEPROM/file-20250311112410818.jpg

2. 创建文件

(1)判断剩余空间是否足够(索引区)
(2)空间足够,写入文件名、文件时间、文件大小等值,然后遍历地址区,寻找起始地址区索引值
(3)在地址区继续遍历寻找可用地址区索引,直到最后一个地址区,写入结束标志
(4)按照地址索引在数据区写入文件数据

assets/【第一篇】如何高效利用多功能调试器上的EEPROM/file-20250311112515521.jpg

3. 删除文件

(1)遍历目录区,找到文件信息所处位置
(2)读取文件目录区的地址索引值,通过该索引读取到下一个索引值,同时对上一个索引值做清除操作(在地址区时才进行),写入0xEE,直到在地址区找到0xFF的文件结束标志,此时同时对结束标志清除,写入0xEE
(3)清除文件信息位置,写入0xFF

assets/【第一篇】如何高效利用多功能调试器上的EEPROM/file-20250311113024806.jpg

4. 读取文件

(1)遍历目录区,找到文件信息所处位置
(2)按照索引读取数据区的数据,直到找到文件结束标志

assets/【第一篇】如何高效利用多功能调试器上的EEPROM/file-20250311112934158.jpg

5. 修改文件

(1)在文件末尾追加数据1.通过追加数据大小更新地址索引
(2)覆写文件1.计算新文件大小,更新地址区。若新文件更大,只需增加索引,但新文件更小,则需先对原文件多出新文件的索引做清除操作2.覆写文件
(3)其他写入操作对其他写入操作不做考虑,主要由于EEPROM本身的写入速度就很慢,对诸如文件中的插入写操作还需先暂存相应数据,然后在写入要插入的数据,最后还要回复原始数据,操作起来较为繁琐,所以除文件末尾追加数据与覆写文件外,其他写入操作不做考虑,下方的代码采用覆写操作

assets/【第一篇】如何高效利用多功能调试器上的EEPROM/file-20250311112847175.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FANformer:融合傅里叶分析网络的大语言模型基础架构

近期大语言模型(LLM)的基准测试结果引发了对现有架构扩展性的思考。尽管OpenAI推出的GPT-4.5被定位为其最强大的聊天模型,但在多项关键基准测试上的表现却不及某些规模较小的模型。DeepSeek-V3在AIME 2024评测中达到了39.2%的Pass@1准确率,在SWE-bench Verified上获得42%的准…

基于Qt的信号量的使用

下面是用两个线程,一个是生产者不断地产生数据,另一个则不断消耗数据。这个例子可以很好的演示生产者/消费者模型。由于C++在C++20之后才提供信号量类型,所以这里的测试环境是Qt5.9和VS2019。 Misc.h文件:#pragma once#include <qsemaphore.h> #include <qthread.…

linux 中awk命令删除指定字段中特定字符串前边所有内容

001、删除第9个字段gene_id前边的所有内容[b20223040323@admin2 test]$ ls a.txt [b20223040323@admin2 test]$ cat a.txt ## 测试数据 NC_089035.1 Gnomon transcript 7328 15219 . + . transcript_id "rna-XM_015766610.3&quo…

.NET Core 中如何实现缓存的预热?

在构建高性能的 .NET Core 应用时,缓存是提升系统响应速度、减轻数据库压力的利器。然而,缓存并非一蹴而就,它也需要“热身”才能发挥最佳性能。这就是缓存预热的意义所在。 一、什么是缓存预热? 缓存预热,顾名思义,就是在系统启动或缓存失效后,主动将热点数据加载到缓存…

EtherNet/IP转PROFINET网关模块促成罗克韦尔PLC与变频器协议互通

一、案例背景在某新能源汽车电池生产线上,需要将采用EtherNet/IP协议的电池检测设备与采用ProfiNet协议的生产线控制系统进行集成,以实现对电池生产过程的全面监控和数据采集。 二、硬件设备西门子S7-1500 PLC 新能源电池容量测试仪:支持标准的EtherNet/IP协议 捷米特捷米特…

Modbus转PROFINET网关模块让Modbus上位机与电机高效通讯

某汽车零部件制造企业的生产线,其自动化设备来自不同品牌和供应商,如汽车生产线的总控制系统采用Modbus TCP协议,它是整个生产线的主站,而部分生产设备如汇川的伺服电机和欧姆龙的仪表等采用Profinet协议,作为从站,这时候需要Modbus TCP协议设备与Profinet协议设备进行通…

No.52 ES6---Promise对象

一、Promise对象 1.1基本概念Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件----更合理和更强大。 它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise 对象。 所谓 promise,简单说就是一个容器,里面保存着某个未来才会结…

类型转换+变量+常量+作用域

类型转换+变量+常量+作用域强制转换 (类型)变量名 高-->低 自动转化 低-->高 注意点不能对布尔值进行转换 不能把对象类型转换为不相干的类型 在把高容量转换到低容量的时候,强制转换 转换的时候可能存在内存溢出,或者精度问题变量变量作用域常量

ITSM流程落地经验之变更管理

本文来自腾讯蓝鲸智云社区用户: CanWay大多数组织中都实施了变更管理,但是效果参差不齐,尤其在变更管理的核心环节,部分组织因缺乏有效的把控,使得变更管理的效果不尽人意,甚至可能面临失控的风险。为此,我们有必要深入探讨并详细分析变更管理中的关键活动,并通过实例加…

国货国用信创在教育领域的应用

信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。在教育领域,国货国用信创的应用正逐渐改变着传统的教育模式,为教育的现代化发展注入新的活力。随着科技的飞速发展,教育领域也面临着数字化转型的迫切需求。信创产…

信创概念十大龙头股的风险与机遇深度剖析

信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。近年来,随着国家政策的大力支持和科技发展的需求,信创概念逐渐兴起,相关企业迎来了前所未有的发展机遇。在信创概念板块中,有十大龙头股备受关注,它们在行业中具…

易基因:中农大曾祥芳团队WGBS+ChIP-seq揭示蛋氨酸在母胎免疫耐受和子宫内膜容受中的表观调控机制|Cell Rep

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 母胎免疫耐受是指母体免疫系统对胎儿抗原的耐受,避免对胎儿产生免疫排斥反应。子宫内膜容受性是指子宫内膜接受胚胎着床的能力。子宫内膜容受性和母胎免疫耐受是成功妊娠的两个关键过程。然而,营养所涉及的分…