清远网站制作公司网站推广智选刺盾云下拉
序
在7840的sample代码里面有一个简单的Boot跳转APP的示例

PFlash地址从0开始
 
DFlash的地址从1000000开始

Boot解析
他的boot地址配置为0

Boot的代码主要是这几行,主要作用就是Flash的跳转
int main(void)
{SystemClock_Config();InitDebug();printf("demo start...\r\n");printf("BOOT\r\n");printf("Jump to APP\r\n");Go_To_App();printf("demo end...\r\n");while (1){;}
} 
地址的配置
#define     BOOT_START_ADD      0x00000000
#define     BOOT_SIZE           0x00030000#define     APP_START_ADD       0x00030000 
boot跳转APP的代码
static void Go_To_App(void)
{if (((*(__IO uint32_t *)APP_START_ADD) >= 0x1FFF0000) && ((*(__IO uint32_t *)APP_START_ADD) <= 0x2000EFFF)){DisableInterrupts                                               /* 关全局中断 */Jump_To_App = (Func)(*(__IO uint32_t *)(APP_START_ADD + 4));    /* 指向APP程序的Reset中断*/__set_MSP(*(__IO uint32_t*)APP_START_ADD);Jump_To_App();}printf("Jump to APP Fault\r\n");
}
 
只烧录Boot的测试

确实从0开始

APP解析
App主要代码
int main(void)
{DisableInterrupts;SCB->VTOR = APP_START_ADD;EnableInterrupts;SystemClock_Config();InitDebug();printf("demo start...\r\n");printf("APP\r\n");printf("demo end...\r\n");while (1){;}
} 
APP代码烧录之后打印结果,Zdemo start没找到在哪儿写的

可以看到App的代码地址配置从30000开始

修改APP起始地址
改到40000

修改地址之后需要全片擦除,否则之前地址还有APP的内容,看不出来效果。擦除之后重新烧录Boot代码。

Boot烧录完成发现无法跳转到APP

需要修改Boot的跳转地址

修改之后测试OK

查看内存数据
是按照40000之后的地址保存数据

