TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2530编译遇到错误

Error[e16]: Segment XDATA_I (size: 0xd5 align: 0) is too long for segment definition. At least 0x38 more bytes needed. The problem  
occurred while processing the segment placement command "-Z(XDATA)XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END",  
where at the moment of placement the available memory ranges were "XDATA:1e63-1eff"   Reserved ranges relevant to this placement:   XDATA:1-300          XSTACK   XDATA:301-1eff       XDATA_Z   BIT:0-7              BREG   BIT:80-97            SFR_AN   BIT:a0-af            SFR_AN   BIT:b8-c7            SFR_AN   BIT:d8-df            SFR_AN   BIT:e8-ef            SFR_AN   BIT:f8-ff            SFR_ANError while running Linker

请问这个错误该怎么解决?我定义了一个白名单数组,当数组元素个数小于70没有问题,大于70就会报错。

YiKai Chen:

你的RAM用爆掉了,代表你最大只能設置到70组白名单

Alvin Chen:

CC2530 ram 本来不算大,你这是ram 不足,如果你不想改变这个白名单,建议参考下面的优化试试,不行的话只能去改白名单。
www.ti.com/…/swra635.pdf

user4711142:

回复 Alvin Chen:

1、我用的协议栈是2.3.0-1.4.0。跟这个是通用
2、请问3.0.2要用那个IAR版本?能否发一个链接

Alvin Chen:

回复 user4711142:

通用的,如果你用CC2530做Z-stack3.0的RAM会更受限。

  – All CC2538 projects have been built and tested with IAR EWARM 8.11.1

  – All CC2530 and CC2531 projects have been built and tested with IAR EW8051 10.10.1

https://www.iar.com/

user4711142:

回复 Alvin Chen:

有没有什么办法,去压缩占用内存。每个子函数中,大一点的变量用申请内存,用完之后释放,会不会好一点?

Alvin Chen:

回复 user4711142:

是个思路,但是我更推荐的是用一个强一些的mcu做coordinator 比如CC2538,或者CC2652R。

YiKai Chen:

回复 user4711142:

如果沒有在用串口,把串口相關的源碼都關閉應該可以擠出一些內存

user4711142:

回复 Alvin Chen:

老版本协议栈和代码均兼容么?

user4711142:

回复 YiKai Chen:

用到了串口

YiKai Chen:

回复 user4711142:

老版本协议栈和代码不能跑在CC2538跟CC2652R上

赞(0)
未经允许不得转载:TI中文支持网 » CC2530编译遇到错误
分享到: 更多 (0)