您好 Katie、
非常感谢您的帮助! 我今天可以尝试一下,很高兴地报告,您的建议解决了我的问题,即在进行所需的更改后,如果使用大块 FRAM2内存,原来无法使用 printf()。 我的 RAM 使用量现在小于2kB、RAM 空间也高达4kB、因此320个字节(用于 printf)不会成为问题。
此外、您可能还记得我对应用程序的简要说明[请参阅 此主题中的上一篇文章]、该应用程序使用 FRAM2存储器来存储传感器数据(在16位数据样本的各种数组之间进行拆分、其中数组具有多达4096个元素、每个数组的最大值为8kB)。 因为、对于计算、我基本上只有 RAM 可供使用(由于我最近了解的__data20例程)我想我计划做的是编写自定义数据处理例程(例如离散傅立叶变换) 使用 RAM 在求和循环中为每个傅里叶系数获取 FRAM2值[根据需要反复]、然后将计算结果存储在位于 FRAM2中的新索引数组中。
选择 MSP430FR5994是因为它具有低功耗且具有256KB FRAM (也因为可能会使用该器件的矢量数学加速器来实现 FFT 等)。 256KB 的大小足以存储大约75KB 的传感器数据阵列以及计算结果所需的额外空间(假设在最坏的情况下、结果的大小与原始数据相同)。
如果我理解我正确的阅读内容(包括您关于将.cio 和.sysmem 放入新的第三个 FRAM 段的注释-请参阅 printf 解决方案的选项2)、 应该可以将任何阵列从 FRAM2复制到另一个 FRAM 段、然后通过传统的存储器访问(并可能利用矢量数学加速器)来执行更高效的数据处理例程。 对于我拥有的器件和应用的当前状态、仍有28KB 的 FRAM 可供使用、它们应该有足够的空间依次处理每个传感器数据阵列(即、将28KB 与8KB 或16KB = 8KB * 2的数据和结果进行比较)。
您是否愿意为其中一种方法或两种方法提供任何建议(列出注意事项或详细说明优缺点)? 我目前处于僵局、可以用蛮力法进行编码(多次从 FRAM2获取并计算)、也可以尝试用新的 FRAM 数据段做一些更巧妙的事情(可能使用矢量数学加速器)。
此致、
-Tom