CY7C68013 内存溢出问题
最近在开发CY68013 USB芯片的时候,开发环境(keil C51),开始的时候都编译正常,但是在我增加了一些变量和操作后,出现了很多的报错,提示内存溢出
*** ERROR L107: ADDRESS SPACE OVERFLOW
之前的内存占用情况
Program Size: data=84.5 xdata=4791 code=5083
改完之后的内存占用情况
Program Size: data=84.5 xdata=4791 code=5117
相差并不大啊,通过模拟DEBUG来进行调试一下吧?
但是也同样出现了内存溢出的报错
通过网上的查询,好多网友说是Keil不是完整版的,所以只能编译小于2KB的程序,也就是被限制住了。但是我的明明已经**好了。
继续进行查询,发现有的人说keil C51 ,可能是***与keil版本不匹配导致出现了假**情况,其实实际上还是受限的。按照这个思路又下载了通用版本的***,有prof的选项。
通过**确实,模拟debug能用了,但是问题还是没有被排除掉,这次感觉决不是*****的问题了。
还是从自己的芯片出发,分析一下芯片本身的内存结构和keil的配置吧。
我使用的CY7C68013A
这上面写的很清楚 4KB的端点RAM,0.5K的DATARAM,16K Prgm/DATA RAM
注:CY7C68013 不带A的RAM版本只有8K,一定要注意。
从上面我的编译信息可以看出,我的内存肯定是够用的,所以应该是keil的配置出问题了,芯片和程序之间的RAM没有指定好,按照这个进行查找。
最后发现了问题,我们的工程采用了示例工程,默认情况下,code memory 和Xdata memory
的size给的很小,无法使用cy7c68013A提供的全部RAM空间,根据工程对空间进行重新分配。
注:code和data之和不能超过16k,前0x0080的地址usb芯片预留。
另一个注意的是BL51Locate选项卡中把Use Memory Layout from Target Dialog选项打勾
这个时候发现编译通过了。