微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 编译Zstack1.4.3里面的SampleApp出现的错误!

编译Zstack1.4.3里面的SampleApp出现的错误!

时间:10-02 整理:3721RD 点击:
我用7.30B版本的IAR编译Zstack1.4.3里面的SampleApp的时候,一直出现错误。

Error[e16]: Segment XDATA_Z (size: 0x15eb align: 0) is too long for segment definition. At least 0xa96 more bytes needed. The problem occurred while processing
the segment placement command "-Z(XDATA)XDATA_N,XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END", where at the moment of placement the available
memory ranges were "XDATA:f1ff-fd53"

1,在网上找过方法,按照这个改过也没有用
Error[e16]: Segment XDATA_Z (size: 0x1ea7 align: 0) is too long for segment definition. At least 0x2a7 more bytes
原因:在xcl文件里修改段大小,-D_IXDATA_END=0xFD53 // Revison D (this setting is safe for all revisions)还有可能是定义的大数组太多了,有时候某些函数中定义的数组有点大,在主函数中单独测试这个函数时不会报错

2, 也试过改过Option-General Option-Stack/Heap的XDATA,改成了0xFFF,也没有用。

3, 网上常见的方法我又看不懂要怎么做。。。。
其实这个问题并不是你的程序本身有问题,主要是因为你编写的程序太大了,超出了芯片本身的定义。今天在群里学习了一招,就是将数组定义到code里,我们看一下例子。我们定义一个5100个元素的数组,有以下两种方法:
mermaid提出的方法是:
typedef unsigned char const __code INT8U;
extern INT8U shuzi[5100];
文晶提出的方法是
INT8U code shuzi[5100];
这两种方法其实效果是一致的,定义完数组之后,调用的部分就是需要用指针来调用数组里面的数值了。


请问还有什么方法可以用?麻烦指导一下吧,谢谢。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top