我用的是STM32F407ZET6芯片,我通IAP升级的方式将APP的程序下载到芯片中,APP的程序里使用了ucos、LWip、FAT32这些东西,所以RAM用的比较多,运行了一段时间出现死机的情况。我怀疑是内存溢出造成的,我通过更改APP程序的Progect->Options->Target窗口中IRAM1的Size为0x30000(之前是0x20000)可以多坚持很长时间。但是最终还是死机了。请问各位大神这应该是什么原因造成的,有什么可以解决的方法吗?
另外,还有我还有几个问题想问一下:
1. 单片机程序,我们申请的变量,是谁负责分配的地址,是编译器吗?
2. IAP的形式,RAM是否需要分区,如果不需要,那么两段程序都从0x20000000开始,会不会有冲突,还是APP申请的变量地址会覆盖掉IAP程序的变量地址。
3.KEIL MDK 的 Progect->Options->Target窗口中IRAM1的Size是指定的RAM空间大小,修改他的值具体有什么用,是只是告诉编译器而已,程序运行中有没有用到这个值,因为我把这个值改大了,发生死机的时间推迟了。
以上还请大神们帮忙分析一下,谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>