初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2018-4-12
- 在线时间
- 10 小时
|
1金钱
if(USART_RX_CNT)
{
if(oldcount==USART_RX_CNT)//新周期内,没有收到任何数据,认为本次数据接收完成.
{
applenth=USART_RX_CNT;
oldcount=0;
USART_RX_CNT=0;
printf("用户程序接收完成!\r\n");
printf("代码长度:%dBytes\r\n",applenth);
printf("开始更新固件...\r\n");
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{
//iap_write_appbin((FLASH_APP1_ADDR+offset_addr),USART_RX_BUF,applenth);//更新FLASH代码
printf("固件更新完成!\r\n");
offset_addr+=applenth;//下一个地址
}
else
{
printf("非FLASH应用程序!\r\n");
}
}
else
oldcount=USART_RX_CNT;
delay_ms(10);
}
各位大神麻烦帮我看看,这是我移植原子的例程,我现在用的芯片容量比较小所以想把升级包分多次次发送,每次发送256个字节,之前的实验结果是一次性发完升级包可以正常跳转到APP也可以正常运行,分多次发送就会出现问题,第一个256发过去后显示成功,但是接下来的数据都不成功,都没有进这个条件if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)!之后都打印“非FLASH应用程序!”,希望那个有经验的大神和我分享下经验谢谢!
|
|