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.

[参考译文] TMS320F28P650DH:找到非法陷阱的根源

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1620389/tms320f28p650dh-finding-root-of-illegal-trap

器件型号: TMS320F28P650DH

尊敬的专家:

我的客户发现非法操作问题。 他们的程序会卡住  

void Interrupt_illegalOperationHandler (void) 在电源测试期间、我们正在尝试找出哪个地址触发陷阱。
 
本指南 C28x 中断常见问题解答 建议添加一个返回来查看代码的来源。 我们是否只需查看 RPC 寄存器即可实现相同的目标?
 
RPC 接收到既不在 RAM 中也不在闪存中的地址 (0x2e202)。
image.png
 
这是否意味着 CPU 从 0x2E202 获取时会触发非法陷阱?
 
如果是、0x2E202 本身是来自程序的无效地址、则问题将是 CPU 分支到 0x2E202 的位置。 是否可以根据堆栈中的内容回溯该数据?
以下是栈中的数据 (SP=0x3B)
image.png
此致、
挂起
 
 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Hang、

    我明天会回复您。

    此致、

    Delaney

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

    您好 Hang、

    为奇数、我不认为 0x0002_E202 是存储器映射中的任何存储器元素。 您打开了 CCS 的持续刷新功能、对吧?

    为了查看堆栈、下表说明了在 Interrupt_illegalOperationHandler() 函数 被分支到之前的上下文保存过程中如何保存元素。  

    如果我正确理解此表、则返回地址应为 0xB9378、这是闪存组 1 中的地址。 您能否检查是否有任何程序存储器分配在该位置?

    另外、您是否尝试过添加 return 语句?

    此致、

    Delaney