问题标签 [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 回答
1957 浏览

c - pic32写入flash c编程

我是 C 和 PIC 编程的新手。我被要求修复现有代码,因为它不能有效地工作。我进行了更改并提出了自己的算法,但是,由于我只有一些面向对象的经验,我认为我缺少一些基本的东西。这是我的代码:

所以这段代码填充了一些数组,然后将它们一起放入 config[] 中,然后将其写入闪存中。这是 .h 文件的一部分:

我最大的担忧之一是这里的 PageSize。它定义为 4096 (PIC32MX460F512L)。我不确定我是否应该一次写入 4096 字节长的数据。请尝试在这里帮助我,我已经为此苦苦挣扎了很长一段时间,但我找不到我犯的那个愚蠢的错误。

提前致谢

0 投票
1 回答
376 浏览

filesystems - 在 NAND 中将 jffs2 用于内核和 initramFS 的优势

在我们的系统中,我们使用 jffs2 将内核和 initramfs 写入 NAND 内存。我们希望尽快使用更强大的 ECC。但是新的 ECC 格式需要整个 OOB 区域,并且不适用于 JFFS2。

我还不确定,为什么我们需要使用 JFFS2。AFAIK 内核和 initramfs 在启动时被复制到 RAM 中,并从 RAM 中运行。它们不会经常更改(可能一年中更新几次)。

0 投票
0 回答
514 浏览

filesystems - 独立系统上用于 NAND 闪存的 YAFFS2(Direct) 文件系统

我需要将 YAFFS2 闪存文件系统移植到基于 ARM Cortex A9 处理器的独立系统。环境是单线程的。闪存是 Micron 的 8Gb NAND 闪存。任何人都可以建议有用的材料或请解释有关YAFFS2 直接移植所涉及的步骤吗?我已经阅读了 www.yaffs.net 中提供的 YAFFS Direct 用户指南。我只是嵌入式编程的初学者。提前致谢。

0 投票
1 回答
488 浏览

linux - 谁初始化flash?

我正在学习 ARM 处理器上的 Linux 启动过程,发现 U-boot 是从闪存启动,然后 u-boot 代码初始化 RAM 以设置执行环境,如堆栈设置和全部并重新定位自身。

现在我的问题是谁初始化闪存以便 u-boot 代码可以执行?

从 NOR 闪存或 NAND 闪存启动它有什么区别吗?

从 NOR 闪存启动是否比从 NAND 闪存启动更快?

0 投票
0 回答
456 浏览

c - 在 C 语言中在闪存上存储可以变化的查找表

我希望这不是一个反复出现的问题,但我似乎没有找到任何关于我正在尝试做的事情。我将在微处理器的闪存上存储一个小数据结构(大小约为 40 字节)作为查找表。该设备可以与 PC 连接,因此最终用户可以配置此表(无需对微控制器进行编程)以满足其特定系统的需要。将它存储在一个数组中对我来说很有意义,并且我可以方便地在代码中访问这些数据,但是我需要一些方法来强制这个数组指向一个特定的内存位置。(要存储表的闪存部分不是真正的闪存,而是 EEPROM,由我配置和分区)。关于我如何去做的任何想法?(使用kinetis K60DX256 micro,存储数据结构经验不多)谢谢

0 投票
0 回答
61 浏览

c - 与嵌入式闪存分区之间的 IP 堆栈接口

我有一个 TCP/IP 堆栈,需要在引导分区和应用程序分区之间共享。堆栈在引导代码中初始化,引导和应用程序都使用堆栈。两个分区都驻留在同一个闪存模块中,但位于不同的闪存部分中,因此它们不会相互擦除。为了共享堆栈,我创建了一个常量函数结构,该结构放置在闪存中的指定内存位置。我正在使用的编译器是飞思卡尔的 Embedded PowerPC 工具。在我的引导代码中,它看起来像这样:

以太网.h

以太网.c

然后链接器将此目标文件放置在 0x1ffc0(闪存),并且在我的映射文件中一切看起来都很好。引用此位置的链接器符号是 _ENET_STRUCT_。在我的应用程序中,我这样做:

应用程序.c

我认为 enet 会像在引导代码中一样放置在 .rodata 中,但它实际上是放在 .sdata 中。不用担心,当我将 sdata 部分从 ROM 复制到 RAM 时,enet 指向 0x1ffc0。调试器甚至显示正确的位置。但是随后程序集显示它正在尝试分支到甚至不在闪存或 RAM 中的某个地方。关于这里发生的事情,我最好的猜测是编译器不知道 enet 指向哪里,因为它依赖链接器来获取该地址。

这实际上是有效的,尽管我不喜欢有一个明确的地址值:

那么,在分区之间创建接口的正确方法是什么?

0 投票
1 回答
968 浏览

boot - 从 TMS320 数字媒体处理器中的自定义引导加载程序跳转到 App

我正在为 TMS320DM6437 开发引导加载程序。这个想法是创建 2 个独立的固件,一个将更新另一个。在固件 1 中,我将下载固件 2 文件并将其写入指定地址的 NOR 闪存。两个固件都以 ais 格式存储在 NOR 闪存中。现在我在 Flash 中有两个应用程序。一个是我的自定义引导加载程序,第二个是我的主要项目。我想知道如何从第一个程序跳转到位于指定地址的第二个程序。我还期望有关可能帮助我创建自定义引导加载程序的文档的信息

有什么建议吗?

0 投票
1 回答
810 浏览

c - 串行闪存仿真作为 EEPROM

我正在现有板上开发一个应用程序。该应用程序需要频繁的数据(仅 10 字节)存储,所以我想将外部闪存仿真作为 EEPROM,因为我的板没有 EEPROM。我们有外部 spi 闪存。任何人都可以在此仿真中帮助我,或者请向我建议任何其他方法来完全满足我的应用程序要求。

0 投票
2 回答
1051 浏览

c - 计算 C 文件代码部分的大小

参考this:
通过C代码计算FLASH利用率

我决定检查实际组装说明的计算。
所以我的脚本计算汇编指令,位于功能启用代码的汇编列表文件中。
例如

这给了我一些计数 x,我可以从中计算出代码的大小。

为了交叉检查结果,我决定检查nm功能代码的目标文件,但 nm 给出了整个函数的大小,而不是单个语句的大小。
所以我在单独的文件中复制了该功能的代码部分,制作了它的功能,包括必要的头文件和声明的变量来编译这个文件(通过照顾本地人将保持本地人,全局人将保持全局)。所以新文件看起来像这样:

现在该函数checkSize仅包含功能启用代码,因此在编译后,如果我nm是 obj 文件,我应该能够获得与程序集计数几乎相同的结果(除了函数设置使用的一些额外大小)。但事实并非如此,我收到了巨大的差异。(汇编指令为 1335 字节,nmobj 文件为 1458 字节)。
为了进一步澄清,我创建了带有函数的文件的程序集,checkSize并与原始程序集文件进行了比较。我知道由于添加了checkSize功能,所以会有一些额外的东西,但是功能启用代码的指令预期是相同的(具有相同的编译器优化和其他选项)。
但他们不一样。

现在的问题是,为什么大函数内的特征代码的汇编指令存在如此差异,以及当我将其移动到仅包含特征代码的另一个文件时。
在这两种情况下,有什么可以预测额外尺寸的吗?

0 投票
0 回答
99 浏览

mysql - MySQL - 如何在闪存上定位数据库

我是带有闪存的 MySQL 新手
我想更改 MySQL 数据库的位置并将其放在闪存而不是本地机器上
怎么做?请有任何帮助