主题中讨论的其他器件:MSP430F149、
我正在将代码从旧 的 MSP430F149迁移到新的 MSP430FR5964。 由于这款较新的处理器具有更多的 IO 和更多的 RAM、因此第一个存储器"存储"(0000-FFFF)中的代码空间更小。 到目前 为止、我已设法通过将代码(.text)放置在第一个"存储区"(FRAM)中、并将常量(.const)放置在第二个"存储区"(0x10000-0x1FFFF)(FRAM2)中来缓解这种情况。
然后代码不再适合第一个段、所以我觉得很简单:我将常量放置在 FRAM 中、将代码放置在 FRAM2中。 然后我的程序停止工作。
因此、我尝试了另一种方法来尝试隔离和了解 Group 链接器指令的问题、例如:
GROUP 0x10000: { .framework { "Constants.obj"(.text) "TActor.obj"(.text) ... } }
这适用于某些模块、而不适用于其他模块。
我已经能够识别一个案例、在这个案例中、对一个对象方法的调用工作两次、并且第三次它似乎跳转到地址0xFFFFFFF。 该处理器使用(看起来) VMA 中断标志重新启动。 这还不是很清楚到底发生了什么...
我的理解是、代码与位置无关、至少在(TI)编译器文档中有相关说明。 当然、我负责将 ISR 放在第一个内存段中。
是否有将代码从较低的内存段迁移到较高内存段的指南? 这不是一个傻瓜吗? 是否有任何编译器设置(代码(大)和数据(受限)存储器模型除外)应该处理? 感谢您的任何帮助...