问题标签 [flash-memory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1047 浏览

linux - 如何通过文件名获取 NAND 中的真实文件偏移量?

使用 linux,我可以使用对 NAND 的原始访问或通过文件系统访问文件。那么,当我需要知道我的文件在 NAND 中的真正位置时,我应该怎么做?我找不到任何提供此功能的实用程序。此外,我无法检测到任何这种可能性,除了用大量“printk”破解内核(我猜这不是好方法)。有人可以启发我吗?(我正在使用 YAFFS2 和 JFFS2 文件系统)

0 投票
1 回答
902 浏览

embedded - 微控制器和闪存芯片编程开发与仿真

我刚开始学习微控制器编程,似乎入门有很多困难,尤其是模拟部分。

这是我需要编写的一个应用程序:我需要在闪存芯片中存储几个波形文件,并使用 Cortex-M0 从闪存中读取音乐,并组合播放它们,或者运行一些基本信号对它们进行处理。

我正在寻找一个支持端到端模拟的 IDE。我查看了 CoIDE(因为如果我在谷歌上搜索免费的 Cortex IDE,那是第一个出现的),在确定 Cortex 之前,我还查看了 MPLAB,但我没有看到其中任何一个支持闪存芯片模拟。我似乎能够正确模拟芯片,但我没有看到构建虚拟闪存芯片的方法。

我错过了什么吗?非常感谢。

0 投票
1 回答
32793 浏览

c - 在 mtd 块设备上写入

我正在尝试使用 MTD 块设备在 NAND 闪存上写入,但我并不了解所有内容。

正如我在这里读到的

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

但是我想使用简单write的 C 语言直接将字节写入分区,但我不明白它是如何工作的(我读到我首先必须擦除要写入的扇区)。

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

0 投票
1 回答
81 浏览

motorola - Razr i:将外部存储器用作 RAM

所以我读过一些关于在 Android 上将外部存储器作为实际闪存的内容,但不确定在 Razr i 上这样做。我对黑客和技术不太熟悉,所以我需要你的帮助。我如何知道设备是否具有此功能?

我不会用它来存储数据。所以我正在考虑购买一个 32GB 的 microSD 来加快速度,同时使用更多的应用程序。这值得么?我可以将它用作 RAM 吗?

0 投票
3 回答
3665 浏览

arduino - Arduino Mega vs Uno

我们正在编写门铃识别系统,并决定使用 Arduino 来处理大部分电路。我不确定的一件事是Arduino UnoArduino Mega的程序容量。我知道 Uno 只有大约 32 KB 的闪存,但我们的程序预计会在 1000 行代码内完成(我假设这会超过 32 KB 的阈值)。

我们没有太多时间来完成这个项目,所以我们不想花很多时间弄清楚如何多路复用或向 Uno 添加内存,如果它无法处理我们需要的开箱即用的内容.

将EEPROM添加到 Uno会有多困难(和耗时) ?坚持使用Mega会更好吗?

此外,首先使用 PC(带有 DAQ 板或其他东西)或Raspberry Pi而不是 Arduino 会更容易吗?

我们正在设计的系统用于读取指纹扫描仪的输入并将独特的铃声输出到扬声器。我们需要的是该系统在物理上紧凑,以便它可以取代家庭中的实际门铃系统(希望 Arduino 可以帮助实现)。

代码预计大约 1000 行的原因是因为我们可以在其中实现移动应用程序通信、锁定/解锁门等。我假设 32 KB(来自 Uno)是不够的,基于我的一些 C 程序(在千行范围内)的大小通常在 100 KB 左右。

基本上,我们需要它可以扩展到程序可以大于我们预计的大小甚至小于它的程度。如果一个就足够了,我们不希望最终不得不购买多块板。

0 投票
0 回答
1888 浏览

microcontroller - 如何在STM32L系列微控制器上覆盖闪存

我正在尝试在已写入的闪存之上编写一个已知模式(即 0xFFFFFFFF 或 0x00000000),以使原始文件系统的部分无效。但它在 STM32L 系列上对我不起作用,就像在 STM32F 系列上一样。

我习惯了 STM32F 系列微控制器,其中闪存被擦除为 0xFFFFFFFF 并用 0 写入。你可以写任何你想擦除记忆的东西,即

你可以在任何东西上写 0x00000000 (全零)

我现在用的是STM32L家族(低功耗),闪存完全不一样。它被擦除为 0x00000000,并用 1 写入。但是,我不知道如何可靠地编写所有的。例如,如果我擦除,我可以这样做

但如果我尝试

请注意,最终答案中有一个B。这不是全部。事实上,如果我将字节 0x00 到 0xFF 写入一个新擦除的内存页,然后在整个内存页上写入 0xFFFFFFFFFF,我会得到非常错误的结果:

这是我正在使用的伪代码(FlashWrite 是 STM std periph 库的包装器)。我尝试编写 8 次写入的模式,每次移位 <<1,这实际上给了我想要的(全部),但我不确定这是否可靠。

0 投票
2 回答
539 浏览

logging - 在循环缓冲区中查找最旧的条目,考虑整数溢出

我想将一系列日志条目存储在闪存设备的循环缓冲区中。

闪存设备没有板载磨损均衡,所以我需要在我的日志代码中处理它。循环缓冲区将作为实现的一部分执行此操作,但我遇到了整数溢出问题。

我打算做的是将闪存区域划分为如下区域:

Index = 0xFF 表示“已擦除”。因此 ID 的范围可以从 0x00 到 0xFE(零到 254)。这意味着增量规则是:

当 flash 启动时,它看起来像这样(仅显示 ID):

我们选择第一个空块(索引为零)并写入我们的第一个日志条目:

这一直持续到没有条目被删除:

当我们选择编号最小的块时,将其擦除并用新数据覆盖:

但是当 8 位 ID 溢出时,坏事就发生了:

这意味着现在每个写入都使用第一个块,我们又回到了我想避免的“不均匀写入”场景。我想做的是找到最旧的块,在这种情况下是“FB”。

这是我目前拥有的代码(在 Python 中):

如何正确处理整数溢出情况?

0 投票
1 回答
465 浏览

linux-kernel - 使用旧内核更新 mtd 驱动程序

我正在使用 Spansion 64MB NOR 闪存(通过 mtd/cfi_cmdset_0002)并且面临与闪存擦除操作相关的问题。

我有 Linux Kernel 2.6.10 并通过比较 /drivers/mtd 的代码在 2.6.10 和 3.11.1 之间

对 /drivers/mtd/chips/cfi_cmdset_0002.c) 和其他 mtd 文件进行了一些修复,以及检查位切换、闪存擦除时延迟的变化以及为闪存操作启用和禁用 VPP。

我已经对驱动程序/mtd/chips 下的文件进行了更改,但是当检查 /mtd 文件的更改(如 mtdpart、mtdcore、cmdlinepart 等)时,我可以看到需要大量移植,并且似乎需要移植内核本身。有没有办法解决这个问题,因为我不想更改内核,但想用 2.6.10 本身尽可能地升级 mtd 驱动程序代码?

另外我想知道在哪里可以找到从 2.6.10 到 3.11.1 的 mtd 代码的更改日志(我找不到它,这些文件中的修订历史也没有更新以进行更改)

0 投票
1 回答
11701 浏览

backup - Can't back up SD card with dd, complains "Input/Output Error"

I have successfully backed up my SD card twice by issuing the following command

However, now it is giving me the following error:

Looking around the net, this seems to indicate a corrupted SD card. However, my raspi (which I runs off of this SD card) runs fine (ish) and Disk Utility claims that the sd card is not corrupted.

Is there another way I can find out why dd is complaining, if the card is corrupted, and if so, how to fix the SD card.

UPDATE:

I gave up trying to run dd on the SD card, but I did figure out what was corrupting my SD card, it was the updating of the Raspi firmware as specified on this site

0 投票
2 回答
2574 浏览

linux - ubi文件系统损坏的原因

我使用 ubi 文件系统和 mtd 子系统在 NAND 闪存上工作。它工作正常。

但现在我发现以下错误:

UBI 错误:ubi_io_read:从 PEB 2701:8192 读取 516096 字节时出现错误 -74,读取 516096 字节

end_request:I/O 错误,开发 mtdblock5,扇区 49160

我上面提到的那些错误的原因是什么?如何从这些错误中恢复?