最近有个项目,用AT32F413搭配CH390做网络,将SRAM改成64K 来使用。功能一切正常,直到测试到串口IAP升级时,竟然无法成功。没道理啊。底层boot直接用官方给的at32f413_usart_iap_demo里的,用官方的代码测试正常。然后调试的发现,每次到flash_sector_erase(IAP_UPGRADE_FLAG_ADDR);以后程序就跑飞了。
然后开始调试,直到我开始屏蔽代码,删减功能。当我屏蔽到LWIP功能后,发现code只有四十几K的时候,串口升级又可以了。
紧急查找资料,并未找到有同样情况的友友们。直到我发现有文档对调整SRAM的说明,就考虑是否这个有关,因为我的code占用了将近100K了。
灵机一动,将flash起始位置跳过前面64K,编译、运行、问题就这样解决了。虽然不知道原因,但是感觉是有道理的,而且页解决问题了。
不知道有没有大神遇到过这种问题,有更科学的方法。