工具/软件:Code Composer Studio
您好,
我目前正在为TMS320f2.8035万开发CAN bootloader。
CAN引导加载程序代码位于闪存扇区A,我的应用程序正在通过CAN引导加载程序引导加载到闪存扇区B。
但在引导加载后,CAN消息通过代码传输,但没有生成CAN Rx中断。
当我直接调试应用程序并通过JTAG运行时,而不是引导加载同一应用程序,然后生成CAN Rx中断。
我有点不明白为什么Rx中断在应用程序被引导加载后会关闭?
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.
工具/软件: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但不触发中断的情况下)。