- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 HAL_FLASHEx_Erase
在 stm32f103c8 上。
根据数据表,闪存的耐用性仅为 10k 个周期。
我的数据是 16 字节,所以我想方法如何像带计数器的小块一样使用闪存
在我注意到它每次删除 1 页之前。
如果我删除前面有 16 字节数据的 1 页
即使没有写入页面中的所有其他字节也会丢失耐久周期吗?
这是我认为的方法
当它失去耐力时,它使用下一帧
帧 = 数据(16 字节)+ 计数器(2 字节)
页(每个 1k 字节)
数据
1
帧指针
2
帧 1、帧 2、帧 3 ...
3
帧 56、帧 57、帧 58 ...
最佳答案
实际上,如果需要更改现有值(例如您的框架指针),则需要删除整个页面。唯一的异常(exception)是如果删除后该值仍为初始值,即十六进制 FF FF FF FF...
所以典型的方法是只追加数据直到页面已满,并使用初始 FF FF 值来检测是否已使用插槽。在您的情况下,它可能看起来像这样(注意:我不明白计数器的用途):
#define TAG_UNUSED 0xffff
#define TAG_USED 0x1111
typedef struct {
uint16_t tag;
uint16_t counter;
uint8_t data[16];
} flash_slot;
#define FLASH_PAGE_SIZE 1024
#define NUM_FLASH_SLOTS (FLASH_PAGE_SIZE/sizeof(flash_slot))
#define FLASH_SLOTS ((volatile flash_slot*)0x800FC00)
void save_data(uint8_t* data) {
// find next free slot
int index;
for (index = 0; index < NUM_FLASH_SLOTS; index++) {
if (FLASH_SLOTS[index].tag == TAG_UNUSED)
break;
}
if (index == NUM_FLASH_SLOTS) {
// all slots are used; erase page
flash_erase_page(FLASH_SLOTS);
index = 0;
}
// prepare data to be written
flash_slot slot;
slot.tag = TAG_USED;
slot.counter = 0;
memcpy(slot.data, data, 16);
// write slot without erasing page (as it's still at FF FF)
flash_write_data(&FLASH_SLOTS[index], &slot, sizeof(slot));
}
关于embedded - stm32删除闪存即使没有写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66202936/
ASIDE:是的,这可以被认为是一个主观问题,但我希望从回答的统计数据中得出结论。 有各种各样的计算设备。它们的物理尺寸、计算能力和电力各不相同。我想知道嵌入式开发人员认为什么是使系统“嵌入式”的决定
当我听到这个时,我总是想到移动设备。但为什么硬件“嵌入”在那里?整个设备不就是硬件吗?为什么个人电脑没有嵌入式硬件系统? 最佳答案 在当今世界,嵌入式仅指具有以下一项或多项特征的系统: 单一用途(即,
我想测试嵌入式 PowerBI 所以我下载了 the sample app能够发布 pbix 文件并嵌入它。 所以我创建了最简单的 PowerBI 文件,可以使用 Azure SQL 制作,使用 Di
我需要问几个关于词嵌入的问题......可能是基本的。 当我们转换一个词的 one-hot 向量时,例如 king [0 0 0 1 0]嵌入向量 E = [0.2, 0.4, 0.2, 0.2] .
我想知道如何将 CEF 添加到我的 Yocto 项目中。此时,我还没有对项目进行任何修改。它由我们的电路板制造商提供。该板有一个ARM 9。 最佳答案 直接在 CEF 论坛上问这个问题是个好主意,可能
实体是否可以访问其 Embedded 对象的 Embedded?例如: @Embeddable public class Address { @Embedded protected A
我有一个类似于这个的 Morphia 架构: @Entity class BlogEntry { @Embedded List comments } @Embedded class B
我的 pom.xml 中有以下插件配置: com.day.jcr.vault maven-vault-plugi
直到现在,我仍然对 Openembedded-core 和 meta-openembedded 中的食谱感到困惑。很多时候,很难将食谱放在正确的目录中。它们真的很相似,但在食谱的内容上似乎如此不同。
我正在尝试使用此处找到的 Tensorflow 运行单词教程的矢量表示: http://www.tensorflow.org/tutorials/word2vec/index.md 第一个脚本 wor
谁能帮我解释一下 power BI premium 和 power BI Embedded 之间的区别? 最佳答案 Power BI Embedded 容量(也称为 SKU)是 billed hour
我在执行一个 MongoDB 请求时遇到了一些麻烦。我在 Node.js 上下文中使用 MongoDB 3.2 和 Mongoose。这是文档: { _id: ObjectId('12345'),
Xcode 常规选项卡中的“嵌入式二进制文件”和构建阶段选项卡中的“嵌入式框架”有什么区别? General 选项卡中的“Linked Frameworks”和 Build Phrases 选项卡中的
我正在尝试执行 maven install在 pom 上,显示的结果是: Grave: SEC5054: Certificate has expired 此结果会在测试执行开始后立即出现。 我一直在搜
我正在研究 ppc32 和 ppc64 架构来为我的编译器实现一个新的后端,但是我对一个函数的序言有疑问,我已经阅读了几个关于 PowerPC 的 IBM 文档,但是我读到的关于堆栈的信息很少.一个程
我大部分时间都在使用 Atmel Studio 等工具和 IDE 开发微 Controller ,并抽象出幕后发生的事情。 假设在这种情况下,我们直接从闪存执行代码,这在嵌入式系统中可能是这种情况。
我刚刚发现我在(Cortex M0)上编写代码的ARM不支持未对齐的内存访问。 现在,在我的代码中,我使用了很多打包结构,并且从未收到任何警告或硬故障,所以当Cortex不允许不对齐访问时,Corte
我正在研究 Uboot bootstrap 。我有一些关于 Bootloader 的功能和它要处理的应用程序的基本问题: Q1:据我所知,引导加载程序用于将应用程序下载到内存中。在互联网上,我还发现引
我想了解基本的RISC架构。经过一些研发,我想使用MIPS架构。但是,我没有获得有关带有MIPS处理器的嵌入式开发板的良好信息。 如果有人可以提出好的董事会建议,将会有很大的帮助。 问候, 拉姆吉 最
考虑我们正在为裸机 MCU 编写固件,即没有操作系统。有人告诉我不可能(非法?)将参数传递给中断处理函数? 我无法准确理解为什么会这样?这有什么问题? 附注。是否可以在某些 RTOS-es、嵌入式 L
我是一名优秀的程序员,十分优秀!