问题标签 [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.
c - pic32写入flash c编程
我是 C 和 PIC 编程的新手。我被要求修复现有代码,因为它不能有效地工作。我进行了更改并提出了自己的算法,但是,由于我只有一些面向对象的经验,我认为我缺少一些基本的东西。这是我的代码:
所以这段代码填充了一些数组,然后将它们一起放入 config[] 中,然后将其写入闪存中。这是 .h 文件的一部分:
我最大的担忧之一是这里的 PageSize。它定义为 4096 (PIC32MX460F512L)。我不确定我是否应该一次写入 4096 字节长的数据。请尝试在这里帮助我,我已经为此苦苦挣扎了很长一段时间,但我找不到我犯的那个愚蠢的错误。
提前致谢
filesystems - 在 NAND 中将 jffs2 用于内核和 initramFS 的优势
在我们的系统中,我们使用 jffs2 将内核和 initramfs 写入 NAND 内存。我们希望尽快使用更强大的 ECC。但是新的 ECC 格式需要整个 OOB 区域,并且不适用于 JFFS2。
我还不确定,为什么我们需要使用 JFFS2。AFAIK 内核和 initramfs 在启动时被复制到 RAM 中,并从 RAM 中运行。它们不会经常更改(可能一年中更新几次)。
filesystems - 独立系统上用于 NAND 闪存的 YAFFS2(Direct) 文件系统
我需要将 YAFFS2 闪存文件系统移植到基于 ARM Cortex A9 处理器的独立系统。环境是单线程的。闪存是 Micron 的 8Gb NAND 闪存。任何人都可以建议有用的材料或请解释有关YAFFS2 直接移植所涉及的步骤吗?我已经阅读了 www.yaffs.net 中提供的 YAFFS Direct 用户指南。我只是嵌入式编程的初学者。提前致谢。
linux - 谁初始化flash?
我正在学习 ARM 处理器上的 Linux 启动过程,发现 U-boot 是从闪存启动,然后 u-boot 代码初始化 RAM 以设置执行环境,如堆栈设置和全部并重新定位自身。
现在我的问题是谁初始化闪存以便 u-boot 代码可以执行?
从 NOR 闪存或 NAND 闪存启动它有什么区别吗?
从 NOR 闪存启动是否比从 NAND 闪存启动更快?
c - 在 C 语言中在闪存上存储可以变化的查找表
我希望这不是一个反复出现的问题,但我似乎没有找到任何关于我正在尝试做的事情。我将在微处理器的闪存上存储一个小数据结构(大小约为 40 字节)作为查找表。该设备可以与 PC 连接,因此最终用户可以配置此表(无需对微控制器进行编程)以满足其特定系统的需要。将它存储在一个数组中对我来说很有意义,并且我可以方便地在代码中访问这些数据,但是我需要一些方法来强制这个数组指向一个特定的内存位置。(要存储表的闪存部分不是真正的闪存,而是 EEPROM,由我配置和分区)。关于我如何去做的任何想法?(使用kinetis K60DX256 micro,存储数据结构经验不多)谢谢
c - 与嵌入式闪存分区之间的 IP 堆栈接口
我有一个 TCP/IP 堆栈,需要在引导分区和应用程序分区之间共享。堆栈在引导代码中初始化,引导和应用程序都使用堆栈。两个分区都驻留在同一个闪存模块中,但位于不同的闪存部分中,因此它们不会相互擦除。为了共享堆栈,我创建了一个常量函数结构,该结构放置在闪存中的指定内存位置。我正在使用的编译器是飞思卡尔的 Embedded PowerPC 工具。在我的引导代码中,它看起来像这样:
以太网.h
以太网.c
然后链接器将此目标文件放置在 0x1ffc0(闪存),并且在我的映射文件中一切看起来都很好。引用此位置的链接器符号是 _ENET_STRUCT_。在我的应用程序中,我这样做:
应用程序.c
我认为 enet 会像在引导代码中一样放置在 .rodata 中,但它实际上是放在 .sdata 中。不用担心,当我将 sdata 部分从 ROM 复制到 RAM 时,enet 指向 0x1ffc0。调试器甚至显示正确的位置。但是随后程序集显示它正在尝试分支到甚至不在闪存或 RAM 中的某个地方。关于这里发生的事情,我最好的猜测是编译器不知道 enet 指向哪里,因为它依赖链接器来获取该地址。
这实际上是有效的,尽管我不喜欢有一个明确的地址值:
那么,在分区之间创建接口的正确方法是什么?
boot - 从 TMS320 数字媒体处理器中的自定义引导加载程序跳转到 App
我正在为 TMS320DM6437 开发引导加载程序。这个想法是创建 2 个独立的固件,一个将更新另一个。在固件 1 中,我将下载固件 2 文件并将其写入指定地址的 NOR 闪存。两个固件都以 ais 格式存储在 NOR 闪存中。现在我在 Flash 中有两个应用程序。一个是我的自定义引导加载程序,第二个是我的主要项目。我想知道如何从第一个程序跳转到位于指定地址的第二个程序。我还期望有关可能帮助我创建自定义引导加载程序的文档的信息
有什么建议吗?
c - 串行闪存仿真作为 EEPROM
我正在现有板上开发一个应用程序。该应用程序需要频繁的数据(仅 10 字节)存储,所以我想将外部闪存仿真作为 EEPROM,因为我的板没有 EEPROM。我们有外部 spi 闪存。任何人都可以在此仿真中帮助我,或者请向我建议任何其他方法来完全满足我的应用程序要求。
c - 计算 C 文件代码部分的大小
参考this:
通过C代码计算FLASH利用率
我决定检查实际组装说明的计算。
所以我的脚本计算汇编指令,位于功能启用代码的汇编列表文件中。
例如
这给了我一些计数 x,我可以从中计算出代码的大小。
为了交叉检查结果,我决定检查nm
功能代码的目标文件,但 nm 给出了整个函数的大小,而不是单个语句的大小。
所以我在单独的文件中复制了该功能的代码部分,制作了它的功能,包括必要的头文件和声明的变量来编译这个文件(通过照顾本地人将保持本地人,全局人将保持全局)。所以新文件看起来像这样:
现在该函数checkSize
仅包含功能启用代码,因此在编译后,如果我nm
是 obj 文件,我应该能够获得与程序集计数几乎相同的结果(除了函数设置使用的一些额外大小)。但事实并非如此,我收到了巨大的差异。(汇编指令为 1335 字节,nm
obj 文件为 1458 字节)。
为了进一步澄清,我创建了带有函数的文件的程序集,checkSize
并与原始程序集文件进行了比较。我知道由于添加了checkSize
功能,所以会有一些额外的东西,但是功能启用代码的指令预期是相同的(具有相同的编译器优化和其他选项)。
但他们不一样。
现在的问题是,为什么大函数内的特征代码的汇编指令存在如此差异,以及当我将其移动到仅包含特征代码的另一个文件时。
在这两种情况下,有什么可以预测额外尺寸的吗?
mysql - MySQL - 如何在闪存上定位数据库
我是带有闪存的 MySQL 新手
我想更改 MySQL 数据库的位置并将其放在闪存而不是本地机器上
怎么做?请有任何帮助