C 程序初始化闪存并检测其已初始化

问题描述 投票:0回答:1

我想将外部闪存中的一些值保存到微控制器中。每次运行程序时,这些值通常都会增加。我想将它们初始化为0。 在写入该内存之前,我需要确保它已初始化。 我想通过在内存中选择一个固定位置来指示它是否已初始化来做到这一点。在程序开始时,检查之前是否已初始化,如果没有,则进行初始化,然后进行读写。

有更好的方法吗?

工作正在进行中。我会尝试这个,如果可能的话寻找更好的方法

c stm32 microcontroller low-level flash-memory
1个回答
0
投票

将 flash 初始化为 0(并且频繁修改 flash 内容)如果以后想修改的话一般会出现问题,因为通常 micros 中的 flash 控制器只能从 1 -> 0 写入,而“擦除”状态就是全 1。

每次都可以对闪存进行读-擦除-写操作,但这也存在一些问题,因为通常闪存控制器一次只能擦除整个页面。因此,您需要在整个页面上读取并写回您关心的所有内容...如果这是可以接受的,那么它应该可以工作。只需确保您已正确偏移应用程序代码,这样您就不会意外删除它。

某些闪存控制器不支持在从闪存运行时修改闪存,并且在修改闪存内容时要求您在 RAM 之外执行。这可能是另一个需要考虑的复杂因素。

我想不出任何好的替代方案,除非您愿意在片外使用外部 EEPROM。

© www.soinside.com 2019 - 2024. All rights reserved.