标签: flash-memory

考虑到闪存 MTBF,定期写入 ESP32 闪存多远才安全?

定期写入闪存的最佳实践是什么?考虑到我正在开发的硬件应该有 10 到 20 年的使用寿命,您的建议是什么?例如,我可以每 15 分钟写入一些状态变量吗Preferences

persistence flash-memory esp32

1
推荐指数
1
解决办法
2318
查看次数

在闪存中擦除比扇区大小(最小可擦除大小)更少的字节的最佳逻辑

我正在使用Spansion的16MB闪存.扇区大小为256KB.我正在使用闪存来读/写/删除30个字节的块(结构).我在IC的数据表中发现最小可擦除大小为256KB.删除特定块的一种方法是

  1. 将包含要删除的块的扇区读入临时数组.
  2. 删除该部门.
  3. 删除临时数组中的所需块
  4. 将临时数组写回Flash.

我想问一下,有没有更好的替代逻辑.

c embedded flash-memory

0
推荐指数
1
解决办法
870
查看次数

stm32f4中的写周期很少

我正在使用STM32F401VCT6U"发现"板,我需要为用户提供一种在运行时在内存中写入地址的方法.

我写了可以简化为以下功能的内容:

uint8_t Write(uint32_t address, uint8_t* values, uint8_t count) 
{
    uint8_t index;
    for (index = 0; index < count; ++index) {
        if (IS_FLASH_ADDRESS(address+index)) {
            /* flash write */
            FLASH_Unlock();
            if (FLASH_ProgramByte(address+index, values[index]) != FLASH_COMPLETE) {
                  return FLASH_ERROR;
            }
            FLASH_Lock();
        } else {
            /* ram write */
            ((uint8_t*)address)[index] = values[index]
        }
    }
    return NO_ERROR;
}
Run Code Online (Sandbox Code Playgroud)

在上面,address是基址,values是一个至少大小的缓冲区,count它包含要写入内存count的字节和要写入的字节数.

现在,我的问题如下:当address在flash中使用base调用上述函数时count=100,它在前几次正常工作,将传递的values缓冲区写入flash.然而,在那些前几次调用之后,我不能再写任何值了:我只能复位flash中的值中的位,例如,尝试将0xFF写入0x7F将在闪存中留下0x7F,而将0xFE写入0x7F将留下0x7E,并且任何值的0x00都将成功(但之后其他任何值都不会写入该地址).

我仍然可以通过改变基数来正常写入闪存中的其他地址address,但是再次只能写几次(两次或三次调用count=100).

此行为表明已达到闪存的最大写入次数,但我无法想象它会如此之快.在用尽之前,我预计至少有10,000次写入.那么我做错了什么?

stm32 flash-memory stm32f4discovery

0
推荐指数
1
解决办法
3690
查看次数

微控制器和外部闪存之间的连接

我在我的项目中使用stm32f2xx系列控制器.我想知道在没有对外部闪存进行任何读/写操作的情况下是否将外部闪存连接到微控制器.那可能吗?

如果是,请解释这样做的方法.

如果重要,控制器和外部闪存之间的通信是SPI.

提前致谢.

microcontroller flash-memory

0
推荐指数
1
解决办法
54
查看次数