使用的芯片是STM32F103C6T6,10K的RAM。使用的是原子哥的IAPmini板子的历程进行的修改,#define USART_REC_LEN 18*1024 ,编译的时候依旧报错说RAM不足。..OBJSTMFLASH.axf: Error: L6220E: Execution region RW_IRAM1 size (24576 bytes) exceeds limit (10240 bytes). Region contains 360 bytes of padding and 0 bytes of veneers (total 360 bytes of linker generated content).
现在的RI-data即使是C8T6也会报错,想请问下原子哥IAP里面是开个什么数组以致于有这么大的ZI-data,有什么办法优化,不胜感激
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
需要自己做个上位机实现分包发送的,
上位机我已经写成按照1K发送了,更新固件程序我改成如下iap_write_appbin(FLASH_APP1_ADDR+count*1024,USART_RX_BUF,applenth);
count++;
iap里面我改成如下
u16 iapbuf[512];
//appxaddr:ó|óÃ3ìDòμÄÆeê¼μØÖ·
//appbuf:ó|óÃ3ìDòCODE.
//appsize:ó|óÃ3ìDò′óD¡(×Ö½ú).
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
u16 t;
u16 i=0;
u16 temp;
u32 fwaddr=appxaddr;//μ±Ç°D′èëμÄμØÖ·
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+=2048;//Æ«òÆ2048 16=2*8.ËùòÔòa3ËòÔ2.
}
}
if(i)STMFLASH_Write(fwaddr,iapbuf,i);//½«×îoóμÄò»D©ÄúèY×Ö½úD′½øè¥.
}
现在的情况之后APP无法正常工作(APP程序本身单独运行是可以的),发送的二进制文件我看了下没错误的,是不是我烧写flash的位置错误了。
一周热门 更多>