杰发科技AC7801——Flash模拟EEP内存(2)

2024-08-26 23:36

本文主要是介绍杰发科技AC7801——Flash模拟EEP内存(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 默认配置在1000个地址存储1000个数据

配置如下

计算地址

查看地址内容,等到打印完成

计算符合,从0-999共计1000

2. 修改配置在65536地址存储65536个数据

配置还是这个

因为传进去的地址是uint16_t,因此最大值是65536,写65536个数据在65536个地址里面

写到5200左右会每7s写一个数据,读的话还是很快

按照公式计算,512*10是10页,即会写到0x14000+0x5000

然而实际上是写到0x14747就结束了,大概1863个,还不到1页

3. 问题分析

我们重启一下,看下写到哪里开始慢起来,还是5270这个地方

大概在写到3000时候暂停(直接连接atclinktool会暂停读写数据)

写到了0x17190

减去14000,共计12688个地址

一个数据占用2个字节,加一个地址位2字节。相当于写一个数据需要4个字节空间。

也就是说最多写了3172个数据。

3127个数据,写的是

确实和我们结束时候的数据一样,但是跟地址似乎对应不上

起始是因为为了区别地址和数据,在数据上加了0x99导致

我们再来一次测试,直接写4096个数据

0x99是153和数据对上了

写到了0x1098,又对上了

4. 分析,写慢的原因

因为初始化的页数过多,因此我们只初始化一页测试看看结果,初始化一页,写4097个数据

结果显示到第650左右写的数据开始变慢,大约200ms左右写一次

看到从13800开始写了数据,

2048个地址,正好是1页,并且地址是倒着写的

并且是从03e开始写,也就是从地址62开始写

测试一下正好写完一页的,512多2个数据的,发现在510写完后会变慢。

考虑到EEP在当页起始需要去掉2个数据位置,正好写完一页开始变慢。

因此,上面的分析来看,写慢的原因找到了。

5. 交换写,备份区

我们看到上面有个备份区,看下这个是什么

测试512个数据,即第二个数据应该会放在前一页

发现前一页也因为有2个字节占用,重新从14000开始写,最后一个地址蟹道乐14000当页,而14000这个地址是之前被000地址占用了

为了方便看结果,单独写了两个地址的数据。

这里把地址0也给个特定值,发现在写完之后被覆盖了

因此如果要写1024个字节地址的话,最好就多初始化一页,初始化为512*2,即使用2页

最高写到400

备份区写到402

初始化的区域写到401,地址0的6666被覆盖掉

测试一下最高能到多少不会被覆盖

我们测试2页,也就是512*2=1024个,再少一个1023应该就OK了

因为后面加了2个固定数据,因此1023-2=1021,循环写1021个,0地址没有被覆盖

实际上最后一个8888没写上

回头看上面的计算少算了一个校验位,应该是-2才对

因此改为1024-2-2=1020,参考前面的少了个8888的位置,1020肯定是对的。

看到和计算的一样,备份区没有开始写,并且数据完整。

这篇关于杰发科技AC7801——Flash模拟EEP内存(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110007

相关文章

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,