您好!
我需要一些帮助来修改 lnk_msp430fr5994.cmd 文件、以便能够将 FRAM2用于 persistent 变量。
但所描述的解决方案并不是更灵活的解决方案。 我想实施 Katie Pier 描述的解决方案1 、"修改链接器文件中控制 MPU 设置的一些区域、使其适应读取/写入区域的增长/收缩"
谢谢!
LC
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我需要一些帮助来修改 lnk_msp430fr5994.cmd 文件、以便能够将 FRAM2用于 persistent 变量。
但所描述的解决方案并不是更灵活的解决方案。 我想实施 Katie Pier 描述的解决方案1 、"修改链接器文件中控制 MPU 设置的一些区域、使其适应读取/写入区域的增长/收缩"
谢谢!
LC
请检查这是否可以提供一些帮助:
感谢您的回答。 不幸的是、我仍然迷路了。
我看不出可以采用哪种策略、因为 我的 代码(.text) 太大以至于无法放入 FRAM 中 、所以我不能简单地使用 FRAM2仅用于 TI.persistent、.TI.persistent 和 .text 需要共享 FRAM2。 OR/和、我需要找到一种方法 在 FRAM 和 FRAM2之间拆分 TI.persistent。
我建议你将高端 FRAM2细分为一个新的内存段、并将 TI.persistent 字段。 然后使用 CCS MPU 编辑器使这个较高部分为 RW (读取/写入)。 这不是非常动态的、但它允许您根据 MPU 的需要对齐它。
这里讨论的是 NOINIT、但原理是相同的:
1)不,它不是非常动态,但它非常简单(和容易得到正确)。 一个动态/复杂度更高的解决方案可以在用于自动配置 MPU 的连接器/C-库合作机制内工作。 几个月前,我整理了一下,并得出结论,我只会尝试,如果我是非常低的记忆。
2)通常我建议不要将.cio 和.sysmem 移动到高(>64KB)的内存,主要是因为我不知道有什么依赖性。 (我认为.cio 用于 stdio 半主机,特别是 printf()。 我不知道是谁使用.sysmem。) 说着,我就朝厨房走去。
3) 3) MPU 要求1K (0x400)对齐;低位不会存储在任何位置。 我建议您将 FRAM3的基地址设置为与 MPU 编辑器所需的地址(0x25C00)相匹配。 实际上、您(可能)将0x390字节的代码存储在 MPU 段3中、这是 RW 而非 RX。