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.

[参考译文] MSP430F6736:MSP

Guru**** 2609285 points
Other Parts Discussed in Thread: MSP430F6736

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/656372/msp430f6736-msp

部件号:MSP430F6736

我发现每次msp430f6736 Rev A处理器从内存地址0x023ffa获取任何指令时,都会设置空内存中断标志。 设置标志后的奇怪结果不是3FFFh值(从空内存读取时)或JMP $(取回时)或PUC (从空外围空间提取时) 这是空内存空间访问的可能结果。 因此,我正在寻求帮助以找到解决问题的方法。

我刚刚附上了一个示例代码的快照,该示例代码演示了上述情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    这种现象似乎可能是由CPU的流水线方式引起的。 为了使CPU在每个时钟周期执行一个指令,它将在当前正在执行的地址上方获取指令。 因此,当地址0x023ffa处的指令正在执行时,CPU可能正在尝试获取地址0x2.4002万处的指令,该地址在F6736可用内存之外。 即使地址0x023ffc的RETA指令将阻止无效代码执行,这也可能触发VMAIFG。 我将与我们的系统团队核实这是否是可能的原因。

    解决这一问题的方法是通过更新.cmd文件,使FLASH2的长度为0x13FFA,防止代码指令执行闪存边缘附近的内容。 或者,如果内存空间很紧,则可以移动函数并将数据存储在地址0x23ff8和0x23ffa。

    此致,

    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Ryan,你提出的解决方案效果很好。 我已经调整了与上面显示的完全相同的链接程序文件。