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.

[参考译文] CCS/TMS320F2.8035万:引导应用程序后CAN Rx中断不会出现

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/585395/ccs-tms320f28035-can-rx-interrupt-not-coming-after-bootloading-the-application

部件号:TMS320F2.8035万

工具/软件:Code Composer Studio

您好,

我目前正在为TMS320f2.8035万开发CAN bootloader。

CAN引导加载程序代码位于闪存扇区A,我的应用程序正在通过CAN引导加载程序引导加载到闪存扇区B。

但在引导加载后,CAN消息通过代码传输,但没有生成CAN Rx中断。

当我直接调试应用程序并通过JTAG运行时,而不是引导加载同一应用程序,然后生成CAN Rx中断。

我有点不明白为什么Rx中断在应用程序被引导加载后会关闭?  

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

    Siddharth,

    您是否说相同的代码可以从RAM ( 通过JTAG连接器加载/调试时)工作,而不能从闪存(通过bootloader编程后)工作? 如果是,当您通过JTAG在闪存中对其进行编程时,它是否正常工作?

    您的邮件是否确实已在接收邮箱中接收? 您能否检查 它是否设置了相应的RMP位? 如果是,则调试相当简单。 您只需遵循"中断链",直至内核中的INTM位。 请参阅我的app.note SPRA876A中的示例。

    非常重要:对eCAN控制寄存器的所有读/写操作都需要为32位。 请记住这个。

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

    我想说,当我通过JTAG从CCS进行调试时,相同的代码可以从相同的闪存扇区B工作。

    下面是我在bootloader代码跳到bootloader的应用程序代码后对CAN和PIE外设寄存器的观察结果:-

    1) PIECTRL寄存器(存储上次获取的中断地址)在代码跳转到应用程序时显示CAN中断地址位置(0xDCB),即使我没有发送CAN消息。

    2) RMP寄存器最初是空的,但当我发送一些CAN消息时,它被更改了,但没有被清除,因为中断例程没有被执行。

    因此根据观察结果,我遇到的问题是CAN中断最初由于某些源而被启用,即使应用程序没有收到CAN消息。奇怪的是,为什么它只在应用程序启动时发生,而不是在通过JTAG调试到时发生 相同的闪存扇区B.

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

    因此,同一.out文件在通过CCS+JTAG刷新时工作正常,但在通过引导加载程序在闪存中编程时不工作?

     

    CAN bootloader代码是否使用中断? 如果是这样,则可能使CAN模块处于不再接受任何中断的状态。 请检查SPRA876A中的中断示例。 它清楚地显示了生成中断所涉及的所有位/寄存器。 您应该能够跟踪有问题的位(在收到的消息设置RMP但不触发中断的情况下)。