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.
我现在做了两个工程,一个boot一个app,我的boot已经通了,但是app工程用仿真器直接下载,断电从起无法运行,官方的做法是在code中关闭看门狗,但是我的需求是要从boot程序跳转到app程序,boot只是实现在线升级而已。我的app程序的启动部分该如何处理? 查资料看到有把app程序看成是boot的一个局部函数处理,即boot直接跳转到app的main(),但是我试过了,程序起不来。我想做两个单独的工程,只是可以通过boot下载app而已,那么在boot正确情况下,如何修改app的启动逻辑呢?
1 在F2837xD_sci_flash_kernels_cpu01例程中使用的是下面的方式,您可以参考一下
LCR _main 和 _ExitBoot:
2 您也可以使用下面的方式
static void (*APPEntry)(void);
APPEntry = (void (*)(void))(EntryAddr);
(*APPEntry)();
网络上也有一些分享,您可以参考一下
https://e2echina.ti.com/question_answer/microcontrollers/c2000/f/56/t/111336
blog.csdn.net/.../80755783
我使用了你的第二种跳转方式,跳转可以实现,就是跳转后直接进入非法中断里面了。 我的逻辑是这样的,boot在bank1,app在bank0,app的_c_int00函数在82000,boot的_c_int00函数在C0000地址,程序从C0000启动,如果不在线升级,则会跳转到82000,即会初始化app工程,开始运行。 _c_int00我在cmd是这样实现的:
boot : > APP_CINT00 PAGE = 0
{
-l rts2800_fpu32_eabi.lib<boot28.asm.obj>(.text)
}
APP_CINT00 地址就是82000,这样不对吗?
我现在是boot用的bitfield和coff输出,app用的drivelib库和eabi输出。
我在E2E上发了个帖子,您可以跟踪回复一下,谢谢
TMS320F28377S: TMS320F28377s enter to illegal isr when going to _c_int00 - C2000 microcontrollers forum...