初级会员

- 积分
- 178
- 金钱
- 178
- 注册时间
- 2015-8-29
- 在线时间
- 17 小时
|
1金钱
刚开始,用原子的原程序,只要一下载大于41K的程序,就不行。现在大概知道原因了,是USART一次只能接受41K的字节。
所以我想把bin文件,拆成两个bin文件发,
if(key==WKUP_PRES) //WK_UP按键按下
{
if(dss==0 ) / /加了这句
{
if(applenth)
{
printf("开始更新固件...\r\n");
LCD_ShowString(60,210,200,16,16,"Copying APP2FLASH...");
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{
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! 12 ");
printf("非FLASH应用程序!\r\n");
}
}
else
{
printf("没有可以更新的固件!\r\n");
LCD_ShowString(60,210,200,16,16,"No APP!");
}
Len=applenth; //加了这句
dss=1; //加了这句
}
else if(dss==1) //加了后面这几句
{
printf("开始更新固件...\r\n");
iap_write_appbin(FLASH_APP1_ADDR+(u32)Len,USART_RX_BUF,applenth);//更新FLASH代码
LCD_ShowString(60,210,200,16,16,"Copy APP Successed!!dss");
printf("固件更新完成!dss\r\n");
dss=0;
}
clearflag=7;//标志更新了显示,并且设置7*300ms后清除显示
}
我把写入程序改成这样,原本小于41K的程序可以下进去,拆成2个.bin也可以下进去,但是原来大于41k的程序可以下进去,但是不可以运行。
求解释,这种方法行吗,有其他办法吗
|
最佳答案
查看完整内容[请看2#楼]
你是要在ram运行,还是在flash?前者不行.(除非换大ram的型号),后者可以,通过modbus协议,来一段段传输就可以了.
|