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选项打勾

 

这个时候发现编译通过了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值