参考keil工程的程序跳转的demo代码,用eclipse编译2个demo工程,一个boot工程起始地址是0x0000,另一个APP工程的起始地址0x30000,想从boot工程跳转到APP工程,跳转方式如下:
typedef void (*pfunction)(void);
#define APP_START_ADDRESS 0x030000
void goToApp(void)
{
static pfunction JumpToApplication = NULL;
uint32_t JumpAddress = *(__IO uint32_t *)(APP_START_ADDRESS + 4*1024 + 4);
DisableInterrupts;
JumpToApplication = (pfunction)JumpAddress;
__set_MSP(*(__IO uint32_t *)APP_START_ADDRESS);
JumpToApplication();
}
上述代码是参考keil工程跳转方式,即APP为keil编译。如果APP是keil编译,设置起始地址是0x30000,可以从boot跳转到APP,但是APP是eclipse编译,设置flash起始地址是0x30000,发现无法从boot跳转到APP。 |