当前位置: 首页 > news >正文

杰发科技AC7801——Flash模拟EEP内存分布情况

简介

本文记录了在使用AutoChips芯片Flash模拟EEP过程中的一些理解

核心代码如下

#include <stdlib.h>
#include "ac780x_sweeprom.h"
#include "ac780x_debugout.h"#define SWEEPROM_SIZE (2048UL) /* Ssoftware eeprom size(Byte) */
#define TEST_WORDS 10uint32_t g_testA[TEST_WORDS] = {0}; /* Buffer for software eeprom read and write */
uint32_t g_testReadA[TEST_WORDS] = {0};void SWEEPROMDemoTest()
{uint32_t i;uint32_t tmpCircle = 0; // 注意16位只能计算到65536后从0开始,如需更大数字需要32位EFLASH_UnlockCtrl(); // 每次重启都需要初始化/* initialize eeprom size 1KB, locate in the 62th page in eflash */SWEEPROM_Init(SWEEPROM_SIZE, 60);SWEEPROM_Erase();for (i = 0; i < TEST_WORDS; i++){g_testA[i] = i + tmpCircle;}tmpCircle++;SWEEPROM_Write(0, (uint16_t *)&g_testA[0], TEST_WORDS*2);SWEEPROM_Read(0, (uint16_t *)g_testReadA, TEST_WORDS*2);for (i = 0; i < TEST_WORDS; i++){printf("%d ", g_testReadA[i]);}printf("\r\n");
}int main(void)
{InitDebug();InitDelay();SWEEPROMDemoTest();while (1);
}

使用ATClink查看内存

通过计算发现在65K的地方,这个数据和我们计算的60页对不上。

再测试其他页,从50页开始,发现数据还是没有变化

提出疑问

再看看上面的65K数据,65k/2=32页,想起来之前从32页写过数据,因此再改成32页。观察结果发现最后写的数据没有变化。

根据打印的结果来看,应该在202最后一个数字,结果不对

最后一个值应该是CA

怀疑是数据没有擦除,于是擦除全片数据,然后再进行读写。

每次看地址都要把开始地址往后挪一点有点麻烦,于是从第10页开始写。然后看内存。

正确结果

最终发现在5000的地址,也就是在刚好20K的地方开始写数据。

符合我们的页数设置,第10页,每页2K,即第20480的地址就是第10页的起始地址

SWEEPROM_SIZE的关系

页数的地址搞清楚了,和SWEEPROM_SIZE是否有关系呢?

此时修改SWEEPROM_SIZE大小来看看有何变化

SWEEPROM_SIZE设置为4096,发现没有变化,看来存储的起始位置和SWEEPROM_SIZE没有关联

测试不同页设置的结果

试一下是否都是按照这个格式来擦写

从第56页的位置开始写

结果显示正常

从第60页开始写,按照计算应该在

结果正确

注意位数——16bit和32bit

在使用16位进行存储时候,正常存储10个数,在使用32位时候,发现位数不对。

发现多出来几个数据

SWEEPROM_SIZE的限制

经过测试,从第60页开始写,大小为2048时候是正常的,如果换成4096读写失败,debug内部表现为HardFault

根据公式计算,发现4096=512X8,即8页。而60页到63页总共只有4页,因此从60页开始初始化,使用4096会报错。

相关文章:

杰发科技AC7801——Flash模拟EEP内存分布情况

简介 本文记录了在使用AutoChips芯片Flash模拟EEP过程中的一些理解 核心代码如下 #include <stdlib.h> #include "ac780x_sweeprom.h" #include "ac780x_debugout.h"#define SWEEPROM_SIZE (2048UL) /* Ssoftware eeprom size(Byte) */ #define TE…...

【前端知识】Node——http模块url模块的常用操作

一、创建简易Server const http require(http); const URL require(url);const HTTP_PORT 8088;const server http.createServer((req, res) > {// req&#xff1a;request请求对象&#xff0c;包含请求相关的信息&#xff1b;// res&#xff1a;response响应对象&…...

平衡二叉树 (简单易懂)

目录 一、概念 二、性质 三、插入操作 四、旋转操作 五、删除操作 六、代码实现 七、复杂度 一、概念 平衡二叉树&#xff08;Balanced Binary Tree&#xff09;是一种特殊的二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;它在插入和…...

Vue.observable 是什么

Observable 翻译过来我们可以理解成可观察的 Vue.js2.6 新增 Vue.observable&#xff0c;让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象 。 返回的对象可以直接用于渲染函数和计算属性内&#xff0c;并且会在发生变更时触发相应的更新。也可以作为最小化…...

【五年创作纪念日】

机缘 我成为创作者的过程并不复杂&#xff0c;可以说是一个自然的发展。我是一名软件工程师&#xff0c;日常的工作主要是编程和解决问题。在工作的过程中&#xff0c;我发现有很多时候我需要查找一些特定的技术问题或者寻找一些最佳实践来解决我遇到的问题。在这个过程中&…...

数据库基础入门 — SQL排序与分页

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…...

WordPress站点屏蔽过滤垃圾评论教程(Akismet反垃圾评论插件)

前段时间我的WordPress站点经常收到垃圾评论的轰炸&#xff0c;严重时一天会收到几十条垃圾评论。我这个小破站一没啥流量&#xff0c;二又不盈利&#xff0c;实在是不太理解为啥有人要这么执着地浪费资源在上面。 Akismet反垃圾评论插件 其实用了 Akismet 反垃圾评论插件后&a…...

Modbus-RTU协议讲解与实战

1、背景 工作需要,需要使用Modbus-RTU实现RS485通信,于是简单学习并实践了一下。 2、参考资料 一文看懂Modbus协议 3、协议说明 3.1、协议类型 当前设备采用Modbus-RTU协议,采用CRC-16_Modbus校验算法,数据链路层使用用标准串口协议,物理层采用RS485进行数据传输。 …...

数据结构 查找基本概念

敬请期待。。。 1. 适用于折半查找的表的存储方式及元素排列要求为&#xff08;顺序方式存储&#xff0c;元素有序 &#xff09;。 2. 有一个按元素值排好序的顺序表(长度大于2)&#xff0c;分别用顺序查找和折半查找与给定值相等的元素&#xff0c;比较次数分别是s和b&am…...

『Linux升级路』基础开发工具——gcc/g++篇

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;Linux &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、快速认识gcc/g 二、预处理 &#x1f4d2;1.1头文件展开 &#x1f4d2;1…...

面试:RocketMQ相关问题

文章目录 什么是 RocketMQ&#xff0c;有哪些使用场景&#xff1f;RocketMQ 由哪些⻆色组成&#xff0c;每个⻆色作用和特点是什么&#xff1f;RocketMQ 中的 Topic 和 JMS 的 queue 有什么区别&#xff1f;RocketMQ 消费模式有几种&#xff1f;RocketMQ 的 Consumer 是如何消费…...

2304. 网格中的最小路径代价 : 从「图论最短路」过渡到「O(1) 空间的原地模拟」

题目描述 这是 LeetCode 上的 「2304. 网格中的最小路径代价」 &#xff0c;难度为 「中等」。 Tag : 「最短路」、「图」、「模拟」、「序列 DP」、「动态规划」 给你一个下标从 0 开始的整数矩阵 grid&#xff0c;矩阵大小为 m x n&#xff0c;由从 0 到 的不同整数组成。 你…...

【机器学习】算法性能评估常用指标总结

考虑一个二分问题&#xff0c;即将实例分成正类&#xff08;positive&#xff09;或负类&#xff08;negative&#xff09;。对一个二分问题来说&#xff0c;会出现四种情况。如果一个实例是正类并且也被 预测成正类&#xff0c;即为真正类&#xff08;True positive&#xff0…...

前端 JavaScript 与 HTML 怎么实现交互?

前端的交互性是通过JavaScript与HTML结合实现的。JavaScript作为一种脚本语言&#xff0c;可以嵌入HTML中&#xff0c;通过对DOM&#xff08;文档对象模型&#xff09;的操作&#xff0c;实现与用户的交互。以下将详细介绍前端JavaScript与HTML如何实现交互&#xff0c;包括事件…...

命令执行总结

之前做了一大堆的题目 都没有进行总结 现在来总结一下命令执行 我遇到的内容 这里我打算按照过滤进行总结 依据我做过的题目 过滤system 下面是一些常见的命令执行内容 system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec() 反引号 同shell_exec() …...

机器学习——词向量模型(CBOW代码实现-未开始)

本来是不打算做这个CBOW代码案例的&#xff0c;想快马加鞭看看前馈神经网络 毕竟书都买好了 可是…可是…我看书的时候&#xff0c;感觉有点儿困难&#xff0c;哭的很大声… 感觉自己脑细胞可能无法这么快接受 要不&#xff0c;还是退而求个稍微难度没那么大的事&#xff0c;想…...

智慧海岛/海域方案:助力海洋空间智慧化、可视化管理

随着我国海洋经济的快速发展&#xff0c;海域海岛的安防技术也获得了进步。传统的安防监控模式已经满足不了海域海岛的远程监管需求。伴随着人工智能、边缘计算、大数据、通信传输技术、视频技术、物联网等信息化技术的发展&#xff0c;海岛海域在监管手段上&#xff0c;也迎来…...

Bin、Hex、ELF、AXF的区别

1.Bin Bin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code&#xff0c;内部没有地址标记。Bin是直接的内存映象表示&#xff0c;二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件&…...

IDEA安装教程

文章目录 1 下载IntelliJ IDEA2 安装3 IDEA配置4 创建项目 1 下载IntelliJ IDEA ​ 官方网站上下载最新版本的IntelliJ IDEA。官方网站提供了两个版本&#xff1a;Community版和Ultimate版。 Community版是免费的&#xff0c;适用于个人和非商业用途。Ultimate版则需要付费购…...

DRF-项目-(1):构建纯净版的drf项目,不再使用django的后台管理,django的认证,django的session等功能,作为一个纯接口项目

项目的目录结构&#xff1a; -HeartFailure |-- apps |--user |--HeartFailure |-- static |--manage.py 一、django项目相关的 1、命令行中创建django项目 #1、切换到指定的虚拟环境中 workon my_drf#2、该虚拟环境已经安装好django和rest_framework了 django-admin startp…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

解析“道作为序位生成器”的核心原理

解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制&#xff0c;重点解析"道作为序位生成器"的核心原理与实现框架&#xff1a; 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...