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.

[参考译文] TMS320F28386D:如何在 CPU1中从引导加载程序跳转到应用程序

Guru**** 2454530 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1215164/tms320f28386d-how-to-jump-from-bootloader-to-application-in-cpu1

器件型号:TMS320F28386D

您好!

我想在 CPU1中实现引导加载程序和应用程序概念。 以下是闪存布局。

1) bootloader : begin => flash 0(0x80000),code => flash 4.

2)应用程序: begin => flash 13(0xBE000), code => flash 6.

我先将应用程序映像刷入 CPU1、然后调试 引导加载程序闪存映像。 在引导加载程序代码中、我要使用以下命令跳转到"应用程序"。

 _asm (" LCR #0xBE000");

但是、当我想在 CCS 中单步执行此指令时、我总是遇到非法指令陷阱。

在应用程序映像的映射文件中、我有以下项目:  

0009b424  00000008   f2838x_codestartbranch.obj (.text)

我还检查了地址0xBE000中的数据、即0x0049b424、似乎是正确的。  

我的实施方案有什么问题? 你有什么建议吗?

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

    如果跳转指令被更改为使用"LB"而不是"LCR"、 非法指令陷阱不会立即发生。

    __ asm (" LB #0xBE000");

    非法指令陷阱出现在下面突出显示的指令中。 在映射文件中、它是_args_main 的地址。

    0   0009abd8 _args_main  

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

    我已经找到了根本原因。 我更改了 CPU2的应用项目、GSRAM 未分配给 CPU1。