有个很简单的方法 点target option魔术棒 选target选项卡里Memory Model改成Large就可以了 |
转自网络: 首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。 其次,data 空间可以达到256,见顶楼的第三例,data空间使用了197.4而决无错误。这是因为目前市面上大多数的MCU都提供了256的data空间。 那么我的错误出现在哪里呢? 这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的: Program Size: data=126.3 xdata=582 code=12091 就是不可信的。实际上我的data空间已经远不止126.3了。 最后找到,我在多处定义了一个char buf[33];的字符串,而没有使用它。 结论就出来了: 1、Keil的错误报告不完整。 2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。 |