[mw_shl_code=applescript,true]u16 iapbuf[512];
//appxaddr:应用程序的起始地址
//appbuf:应用程序CODE.
//appsize:应用程序大小(字节).
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)//2556
{
u16 t;
u16 i=0;
u16 temp;
u32 fwaddr=appxaddr;//当前写入的地址
u8 *dfu=appbuf;
for(t=0;t<appsize;t+=2)
{
temp=(u16)dfu[1]<<8;
temp+=(u16)dfu[0];
dfu+=2;//偏移2个字节
iapbuf[i++]=temp;
if(i==512)
{
i=0;
STMFLASH_Write(fwaddr,iapbuf,512);
fwaddr+=1024;//偏移1024 16=2*8.所以要乘以2.
}
}
if(i)STMFLASH_Write(fwaddr,iapbuf,i);//将最后的一些内容字节写进去.
}
[/mw_shl_code]
当appxaddr:应用程序的起始地址数值超过 0x08040000时,不工作,啥原因?
小的时候没问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我 的 MCU是 F103RE,我的Bootloaderc从0x08010000开始写,写到0x08040000就写不了。
请原子大侠赐教。
谢谢!
RE有512KB FLASH,够用才对。
有战舰板?可以在我们战舰板上试试。
将芯片flash换为512k, 可以将程序完整下载到flash里
但始终不能正常运行,是不是内存不够??
我的BIN大小为307kb.
将mini版小的源程序(不带EMWIN的),可以成功下载并正常运行。
但如果将扩展程序中“EMWIN实验1 STemWin无操作系统移植”程序移植过去也无法正常运行。
战舰板借给朋友了,下周试一试。
一周热门 更多>