问题标签 [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.
assembly - 从 .asm 文件生成 .abs 文件
我有一个 Micropross SC2 设备作为模拟器。从文档中我们发现我们可以在设备的闪存上加载库(摩托罗拉格式的 .abs 文件)。我的问题是我从来没有听说过 .abs 文件(我的倒霉)。来自这个http://ece.utep.edu/courses/web3376/Assembly.html
我用汇编语言创建了一个小程序(.asm 文件),我正在使用 MASM32。我也构建了文件,我得到了 .obj 文件和 .exe 文件,但没有得到 .abs 文件。那么,我是否缺少生成 abs 文件的任何步骤?
caching - 将代码从闪存复制到内存后,我们必须刷新数据缓存的原因是什么?
在嵌入式系统中,引导加载程序用于初始化电路板并加载映像。通常,boot-loader 在第一阶段在 norflash 中运行,需要将自身(.txte+.date 代码)从 flash 复制到 ram,然后跳转到 ram 执行代码。
我的问题是:当将代码从闪存复制到 RAM 并启用缓存时,我们是否必须刷新数据缓存并使指令缓存无效?我发现 uboot 和其他 bootloader 执行了这个操作,但是如果我不这样做,系统仍然可以启动成功,为什么我们必须在将代码从 flash 复制到 ram 后刷新数据缓存?
c - 嵌入式 c 是否有现成的解决方案可以在串行闪存上使用外部字符串资源?
我正在开发一个 128K RAM 的 SoC,目前 UART 打印太多,所以我们必须通过从内存中提取来减少代码大小。
我们有一个工作的 128Mb SPI 串行闪存,我想在上面存储字符串。请注意闪存或我们的固件中没有文件系统。
与其自己编写所有内容,我想知道是否有任何有用的代码或标准或其他我们可以使用的材料?
包括:(以下任何内容都可能会有所帮助)
- 库生成
- 资源获取方法实现。
- SPI FLASH 读/写。(其实我已经写过了。)
我期待这样的事情:
FLASH上有一个“C315”项,对应“Hello world”。
我们将其读出,然后在运行时通过 UART 打印。最终结果是终端上的“Hello world”。
当然,任何让我大吃一惊的东西都是受欢迎的。:)
stm32 - Very few write cycles in stm32f4
I'm using a STM32F401VCT6U "discovery" board, and I need to provide a way for the user to write addresses in memory at runtime.
I wrote what can be simplified to the following function:
In the above, address
is the base address, values
is a buffer of size at least count
which contains the bytes to write to memory and count
the number of bytes to write.
Now, my problem is the following: when the above function is called with a base address
in flash and count=100
, it works normally the first few times, writing the passed values
buffer to flash. After those first few calls however, I cannot write just any value anymore: I can only reset bits in the values in flash, eg an attempt to write 0xFF to 0x7F will leave 0x7F in the flash, while writing 0xFE to 0x7F will leave 0x7E, and 0x00 to any value will be successful (but no other value will be writable to the address afterwards).
I can still write normally to other addresses in the flash by changing the base address
, but again only a few times (two or three calls with count=100
).
This behaviour suggests that the maximum write count of the flash has been reached, but I cannot imagine it can be so fast. I'd expect at the very least 10,000 writes before exhaustion. So what am I doing wrong?
c - 用 C 语言编写带有 STM32L1 系列的自定义引导加载程序
我正在用 C 语言为嵌入式卡 STM32L152RE 编写引导加载程序。在 USART 上发送消息时会调用此引导加载程序。它调用中断,并在收到消息时执行引导加载程序。然后,我必须用计算机在 USART 上发送的新 HEXA 代码刷新我的卡的内存并重置。
此时,我的引导加载程序能够响应中断并读取计算机发送的帧。
我只是不知道如何闪现我的记忆。我的库中有如下函数:FLASH_Unlock(void)、FLASH_ErasePage(uint32_t Page_Address) 和 FLASH_FastProgramWord(uint32_t Address, uint32_t Data)
我必须擦除闪存,但不是我的引导加载程序所在的部分。这就是为什么我像这样在链接器描述符中创建了一个新部分
我的记忆是这样排列的:MEMORY
我的问题是,当我用新程序擦除闪存时,如何保护我的引导加载程序不被擦除,以及如何使用从 USART 发送的 HEXA 代码正确地闪存我的闪存。
c++ - 如何使用 C++ 将字符存储在闪存 STM32F4 HAL 中?
所以我有一个缓冲区:
我可以使用以下方法将其写入闪存:
的定义HAL_FLASH_Program
是:
这完美无缺。现在有没有办法可以存储字符或整数?
c++ - 我如何知道我正在读取的内存地址在 C++ 中是否为空?
所以在嵌入式系统上,我正在读取一些整数并将其写入闪存。我可以用这个功能阅读它:
然后
我怎么知道是否buff[5]
是空的(上面有任何东西)?
现在在空的项目上我得到这样165 '¥'
或这样的东西255 'ÿ'
有没有办法找出来?
c - 在 STM32L1 上擦除我的 Flash
我的擦除功能遇到问题。我尝试擦除 Flash 的 15 个扇区,以便放置一个新的二进制文件。我不明白为什么,但我的功能冻结了,我无法擦除我需要的所有内存。
如果您想尝试一下,这是我的代码
和擦除功能
file - stat()/fstat() 函数最终是否打开或读取文件以获取属性?
在我的程序中,有一个函数可以经常调用stat()
以获取闪存中文件的属性。有时断电重启后文件的内容会丢失。我注意到stat()
finally 调用了 Linux 内核中的文件系统驱动程序。
我的问题是:Linux内核fs会打开或读取文件以获取文件属性吗?在 stat() 或 fstat() 期间断电是否可能损坏闪存中的文件?
linux - JFFS2 文件系统,存储使用与实际文件大小不一致
我用了一个spi-nor芯片,做了一个16M的分区作为JFFS2 fs。我发现了一个奇怪的东西,我应该使用 14M 存储,但是当我使用 df 检查时,它显示只使用了 7M:
在我将另一个 2M 文件复制到此分区后:
事实证明,只使用了 1M 以上的存储空间:
有没有人也发现了这个问题?
谢谢,