查看: 5195|回复: 3

基于IAR的CC2430动态内存分配问题

[复制链接]
isimeng 发表于 2011-4-8 09:17:43 | 显示全部楼层 |阅读模式
终于解决了这个问题,请先看cc2430在IAR开发环境中配置文件的一段代码:
目录:
C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation version\8051\config
“lnk51ew_cc2430.xcl”---底层配置文件
//    IXDATA
//
-D_IXDATA_START=0xF000         // The internal xdata is 4k.
// The end limit is 4 bytes lower on CC2430/31 for rev. D, compared to rev. A, B and C  
// -D_IXDATA_END=0xFD57        // Revision A, B and C
-D_IXDATA_END=0xFD53           // Revison D (this setting is safe for all revisions)
//                                FD54 (FD58) to FEFF used for reg savings
//                                FF00 to FFFF mapped to IDATA
//
//
//    XDATA
//
// The internal XDATA is used as XDATA.
-D_XDATA_START=_IXDATA_START
-D_XDATA_END=_IXDATA_END

在这里,配置文件将cc2430的ram大小定义为4K,而实际上cc2430的ram大小有8K。正因为它的错误定义(真的错?还是的确需要这样定义,而我未发现定义为8K的潜在错误?),导致我在定义char buf[1500]后,提示ram不足。

重新将ram定义为8K的方法如下:
将-D_IXDATA_START=0xF000   这个起始地址变为 -D_IXDATA_START=0xE000,

测试了好几天,未发现异常,如有新情况必会告知。   
如果大家修改了,出现什么问题,希望一起讨论一下!!!!!!!!!!!
mooney13 发表于 2011-4-22 10:24:40 | 显示全部楼层
谢楼主分享,正愁这个问题呢。。。终于可以定义大数组了。另外,有时候用malloc申请内存会失败,不知什么原因,不知楼主是否也遇到过
wumj 发表于 2011-8-2 10:11:12 | 显示全部楼层
只定义了高端的4K内存,是因为应用程序使用了休眠模式(低端4K休眠模式下数据会丢失).定义为8K,只要程序不使用休眠模式,或使用了休眠模式,但低端4K内存在运行时没有用到,就不会有问题,否则,会丢失程序运行数据.
lizheng86312 发表于 2012-8-29 13:27:13 | 显示全部楼层
学到东西了。顶。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表