APP .bin文件写入
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000) //判断是否为0X08XXXXXX.
{
iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代码
LCD_ShowString(30,210,200,16,16,"Copy APP Successed!!");
printf("固件更新完成!\r\n");
}
else
{
LCD_ShowString(30,210,200,16,16,"Illegal FLASH APP! ");
printf("非FLASH应用程序!\r\n");
}
原子的串口接受到的数据是从0x20001000开始保存的 -.> u8 USART_RX_BUF[USART_REC_LEN] attribute ((at(0X20001000)));
串口从0x20001000开始接受APP文件,
第一个4字节是MSP地址。栈区,一般栈顶,也就是MSP,在程序刚运行的时候,指向程序所占用内存的最高地址.比如附件里面的这个程序序,内存占用如下图:
APP 所占用内存:3