最近要求把APP的工程和BOOTloader的工程统一成IAR.
所以找了一个iar工程模板(官方历程),再把MDK的代码挪过去。
为了测试,BOOTLoader很简单,进来后直接跳转!
- typedef void (*pFunction)(void);
- pFunction Jump_To_Application;
- unsigned int JumpAddress;
- uint32_t app_startaddr = 0;
- void Jump2App(uint32_t app_start_address)
- {
- //检测用户代码是否从APPLICATION_ADDRESS被编程
- if (((*(__IO uint32_t*)app_start_address) & 0x2FFE0000 ) == 0x20000000)
- {
- JumpAddress = *(__IO uint32_t*) (app_start_address + 4); //跳转至用户程序
- Jump_To_Application = (pFunction) JumpAddress;
- __set_MSP(*(__IO uint32_t*) app_start_address); //初始化用户程序的堆栈指针
- Jump_To_Application(); //跳转至应用程序
- }
- }
就这么一个函数,mdk工程一点问题没有,放到IAR 就是不行,跳过去了APP起不来。
大家又遇到过类似的吗?
|