if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{
printf("%x\n",(*(vu32*)(0X20001000+4))); //获取(*(vu32*)(0X20001000+4))里面的信息值
iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);//更新FLASH代码
LCD_ShowString(60,210,200,16,16,"Copy APP Successed!!");
printf("固件更新完成!\r\n");
}else
{
LCD_ShowString(60,210,200,16,16,"Illegal FLASH APP! ");
printf("非FLASH应用程序!\r\n");
}
我通过串口打印出(*(vu32*)(0X20001000+4))里面的数据是0X0800523f这个应该是个地址信息吧,
那FLASH用户代码的起始地址不是0X08005000吗即使(0X08005000+4) 最开始的4个字节为程序起始地址 ,但是怎么串口打印出的数据为0X0800523f呢?那这个的偏移地址怎么到了23f 原子哥能不能帮我解答一下啊.地址23f以前的这些是用来做什么的啊。
|