工具/软件:TI C/C++编译器
大家好、
是否可以在 MSP430FR 器件的 FRAM 中放置堆栈? 几年前发布了另一个主题(e2e.ti.com/support/microcontrollers/msp430/f/166/t/542727)、但从未真正解决过。 该主题中的最后一个帖子似乎暗示他们已成功使其正常工作、但我无法重新创建它。
我已经尝试了将链接器文件中的 RAM 设置更改为 FRAM 的明显解决方案(即 .stack:{}>FRAM),但这会导致程序卡在 _c_int00_noinit_noargs_noexit 函数中。 调用_system_pre_init、然后 在返回时立即再次输入_c_int00_noinit_noargs_noexit。
根据我的理解、似乎正在发生的情况是、尽管链接器发生更改、堆栈仍在0x2400处初始化到 RAM 中。 不过、堆栈指针设置为 FRAM 的顶部(FR2111为0xFF80 n)、但该地址处的值仅为0xFFFF、因此我假设代码在某个点读取堆栈指针处的地址、跳转到0xFFFF、 这正是复位矢量所在的位置、因此会跳回到_c_init00_noinit_noargs_noexit。 然后、这将重复、这将解释为什么代码没有到达 main。
(请注意、我几天前在 Reddit MSP430论坛上发布了此帖子、但这里的声音要安静一些、所以还没有答案)
谢谢