标签: flash-memory

ESP32:频繁存储数据的最佳方式?

我正在ESP32-DevKitC板上开发一个C++应用程序,我可以在其中感应加速度计的加速度。应用程序的目标是存储加速度计数据,直到存储空间已满,然后通过 WiFi 发送所有数据并重新开始。在可能的情况下,micro 也会进入深度睡眠模式。

我目前正在使用 ESP32 NVS 库,它有很好的文档记录并且非常易于使用。该负面的,这是该库使用的闪存,因此很多著作,最终会降低驱动器

我知道 Espressif 还提供了一些其他存储库(FAT、SPIFFS 等),但据我所知(如果我错了,请纠正我),它们都使用闪存驱动器。

有没有其他可能做我想做的事但不使用闪存?

声明

  • 使用闪存本身不是问题,而是降低了它的性能
  • 当微型进入深度睡眠模式时,存储必须非易失性的或至少不会被擦除
  • 我没有使用任何 Arduino 库。

memory storage flash-memory esp32

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

在Flash中为用户数据分配内存(STM32F4 HAL)

我正在尝试使用STM32F405的内部闪存来存储一堆用户可设置的字节,这些字节在重新启动后仍然存在.

我正在使用:

uint8_t userConfig[64] __attribute__((at(0x0800C000)));
Run Code Online (Sandbox Code Playgroud)

为我想要存储的数据分配内存.

当程序启动时,我检查第一个字节是否设置为0x42,如果没有,我使用以下方法设置:

HAL_FLASH_Unlock();
HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42);
HAL_FLASH_Lock();
Run Code Online (Sandbox Code Playgroud)

之后,我检查了价值userConfig[0],我看到0x42......太棒了!

然而,当我点击重置时,再次查看该位置,它0x42不再是......

知道我哪里错了吗?我也尝试过:

#pragma location = 0x0800C00
volatile const uint8_t userConfig[64]
Run Code Online (Sandbox Code Playgroud)

但我得到了相同的结果..

microcontroller stm32 flash-memory stm32f4discovery

12
推荐指数
1
解决办法
2万
查看次数

什么是嵌入式NAND驱动器的优秀文件系统?

我正在开发一个使用NAND闪存进行存储的嵌入式应用程序.现在看来,我们不会使用Linux或任何其他RTOS.应用程序必须处理意外断电.

我们一直在寻找不同的文件系统解决方案,包括YAFFS2,JFFS2,FAT + FTL以及HCC Embedded的解决方案.

我听说FAT + FTL是一个正常的选择,但我担心在出现意外断电和性能的情况下会丢失数据.如果有人能分享这方面的见解和经验,将不胜感激

filesystems embedded flash-memory

11
推荐指数
2
解决办法
5883
查看次数

写在mtd块设备上

我正在尝试使用MTD块设备在NAND闪存上写,但我不明白一切.

在这里读到

  • mtdblockN 是只读块设备N.
  • mtdN 是读/写字符设备N.
  • mtdNro 是只读字符设备N.

但是我想用writeC中的一个简单的方法直接将字节写入分区,我不明白它是如何工作的(我读过一些我首先必须删除我要写的扇区).

我应该使用哪种设备以及如何在此设备上书写?

c linux embedded flash-memory

10
推荐指数
1
解决办法
3万
查看次数

我什么时候使用xdata?

我是嵌入式系统编程的新手.我正在使用8051芯片组的设备.我在示例程序中注意到,在定义变量时,有时它们使用关键字xdata.像这样...

static unsigned char xdata PatternSize;

而其他时候省略了xdata关键字.

我的理解是xdata关键字指示编译器将该变量存储在外部闪存中.

在什么情况下我应该使用xdata在外部存储变量?访问这些变量需要更长时间,对吧?使用xdata存储的值在设备硬重置后不会保留吗?

另外,我理解static关键字意味着变量将在每次调用它所定义的函数时持续存在.是否必须一起使用static和xdata?

c embedded memory-management 8051 flash-memory

8
推荐指数
2
解决办法
2万
查看次数

使用HAL驱动程序在stm32上进行EEPROM仿真

我试图在stm32f0上模拟EEPROM.STM提供了一份应用说明.

在样本中main.c,

int main(void)
{
  /*!< At this stage the microcontroller clock setting is already configured, 
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f0xx.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f0xx.c file
     */  
   /* Unlock the Flash Program Erase controller */
  FLASH_Unlock();

  /* EEPROM Init */
  EE_Init();

/* --- Store successively many values of the three variables in the EEPROM ---*/ …
Run Code Online (Sandbox Code Playgroud)

stm32 flash-memory eeprom stm32f0

8
推荐指数
1
解决办法
2万
查看次数

如何在STM32F4,Cortex M4上写入/读取FLASH

我想写一个变量,例如一个数字为5的整数到FLASH,然后在电源消失后再次打开设备读取它.

我已经知道为了写东西我首先需要擦除页面然后写.

在手册中它说:

  1. 在Flash选项密钥寄存器(FLASH_OPTKEYR)中写入OPTKEY1 = 0x0819 2A3B
  2. 在Flash选项密钥寄存器(FLASH_OPTKEYR)中写入OPTKEY2 = 0x4C5D 6E7F

我该如何执行此任务?

扇区0的块地址从0x0800 0000到0x0800 3FFF,这是我想写的地方.

这里是手册的链接,第71页:STM32手册

c flash-memory mbed stm32f4

8
推荐指数
1
解决办法
2万
查看次数

Flash中的循环缓冲区

我需要将不同长度的项目存储在闪存芯片中的循环队列中.每个项目都有它的封装,所以我可以弄清楚它有多大以及下一个项目的开始位置.当缓冲区中有足够的项目时,它将换行到开头.

在闪存芯片中存储循环队列的好方法是什么?

我想存储成千上万件物品的可能性.所以从头开始读到缓冲区的末尾并不理想,因为搜索到最后需要时间.

此外,因为它是圆形的,我需要能够区分第一个项目和最后一个项目.

最后一个问题是它存储在闪存中,因此擦除每个块都非常耗时,并且每个块只能执行一定次数.

embedded queue circular-buffer flash-memory

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

无法用dd备份SD卡,抱怨"输入/输出错误"

我通过发出以下命令成功备份了我的SD卡两次

sudo dd if=/dev/sdb of=/home/user/Documents/raspi/images/raspi1.v2.iso bs=1M
Run Code Online (Sandbox Code Playgroud)

但是,现在它给了我以下错误:

dd: reading `/dev/sdb': Input/output error
3027+1 records in
3027+1 records out
3174977536 bytes (3.2 GB) copied, 200.723 s, 15.8 MB/s
Run Code Online (Sandbox Code Playgroud)

环顾网络,这似乎表明SD卡已损坏.但是,我的raspi(我用这张SD卡运行)运行良好(ish)和磁盘工具声称SD卡没有损坏.

有没有其他方法可以找出为什么dd抱怨,如果卡已损坏,如果是,如何修复SD卡.

更新:

我放弃了尝试dd在SD卡上运行,但我确实弄清楚了什么损坏了我的SD卡,这是在网站上指定的Raspi固件的更新

backup dd flash-memory

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

刷新数据库是什么意思?还有“闪光”

我想知道“flush”和“flash”是什么意思以及它们之间的区别。

database memory byte flush flash-memory

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