手上的项目,程序一直是基于开发板写的,用的是ZET6。程序写的差不多了,但是学长做好的板子用的是RCT6。最开始没有注意在Target中把device换掉。后来出现问题才发现。换掉之后编译出现如下问题。

根据报错信息和网上的一些帖子认为是芯片容量不够。
device换成大容量,在芯片编译通过后的.map文件中有如下信息

RCT6的ROM与RAM分别为256KB与48KB,如今RAM的大小为48.13KB超出了RCT6的RAM的最大空间所以报错。
众所周知,RAM是用来存储变量的。
最开始看网上的帖子,认为是变量的使用带来的问题,于是查找哪些文件里面RW Date与ZI Date占用的比较多,便去优化修改该文件。但是这样效率非常低下。
后来发现是文件管理的问题,原子哥的例程是基于大容量芯片来写的

在内存管理中有40k的ram被内存管理划去,留下的所剩无几,程序如果再稍微大一点,报错是必然的。
把这个40改小一点再编译问题解决。


博客讲述了在嵌入式开发过程中,由于初始未注意目标芯片型号,导致程序在小容量芯片上编译失败。问题源于RAM超出芯片最大限制。作者发现是内存管理配置不当,原本为大容量芯片设计的例程预留了过多RAM。通过调整内存分配,成功解决了编译问题。
5186

被折叠的 条评论
为什么被折叠?



