bootloader下面简称iap 用户程序简称app 本人自己写的bootloader的代码,跳转和复位都有.app用 的iar开发的,生成的hex文件,解析里面的数据传输到mcu的首地址0x08002000.数据2头校验都是通过的,说明数据应该是没有错的,且都写进了flash; 但是升级之后 不能正常运行.是不是app程序的iar环境哪里需要特殊设置吗? 期待大神解答,不胜感激!
1、在"OPTION"的"target"中作如下改动
2、在"system_stm32f1xx.c"中,改变中断向量表的偏移
//#define VECT_TAB_OFFSET 0x0 //原来的数值
#define VECT_TAB_OFFSET 0x4000 //改动后的数值
// 偏移量在下面指令中被执行
#ifdef VECT_TAB_SRAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
评分
查看全部评分
评分
查看全部评分
就是要把0x0800000,改成0x08002000。
评分
查看全部评分
设置了
在app的main里面
在app的main里面加了
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
在linker里面也配置了0x8002000
肯定的是升级的程序都写好了
但是app在把中断向量该回来,代码地址该回来的时候,都好的
评分
查看全部评分
那你把bootloader中关于到app跳转部分的代码贴出来看看吧
评分
查看全部评分
EXPORT JumpAppEntry [WEAK]
LDR R1, =APP_ADDRESS
LDR R0, [R1, #4]
BX R0
NOP
ENDP
给你一个代码看看.不能跳到0x8002000地址的,这是SP地址.要偏移4个字节.
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分