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

请教:Failed to fit all segments into specified ranges………问题如下,帮忙啊。。。

Z-STACK协议栈  IAR编译环境

#define MAX_ADDRMAP_ITEM    300//

typedef struct
{
    uint8 NetAddr[2];
    uint8 MeterAddr[6];
}AddrMap_t;

AddrMap_t AddrMap[MAX_ADDRMAP_ITEM];

void Meter_JoinAddrMap(uint16 routerAddr, const uint8 *phyAddr)
{
    //对结构体数组赋值
}

问题:
1.若在Meter_JoinAddrMap()函数中不给结构体数组赋值,编译连接不报错;
2.若在Meter_JoinAddrMap()函数中给结构体数组赋值,连接报错,如下:
LinkingError[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment XDATA_N. Unable to place 2 block(s) (0xc02 byte(s) total) in 0x998 byte(s) of memory. The problem occurred while processing the segment  
placement command "-P(XDATA)XDATA_N=_XDATA_START-_XDATA_END", where at the moment of placement the available memory ranges were "XDATA:1568-1eff"Error while running Linker3.若将MAX_ADDRMAP_ITEM定义为22(或22以下),在Meter_JoinAddrMap()函数中给结构体数组赋值,正常;

ziwen xu:

回复 WZ:

可是结构体数组在定义、不赋值的情况下没有问题。。。这时不是已经分配好空间了吗?

WZ:

回复 ziwen xu:

关键是看你在后面有没有用到这个数组。有可能IAR在优化编译的时候已经去掉了这个数组。

ziwen xu:

回复 WZ:

结构体数组,总的字节大小 >=184 就有报错,这时我该怎么办?我现在至少需要300*8个字节的大小?请教。。。。

Peter_Zheng:

回复 ziwen xu:

结构体本身并不会被作为数据而开辟内存,真正作为数据而在内存中存储的是这种结构体所定义的变量。

ziwen xu:

回复 Peter_Zheng:

对对。。我现在的系统中,定义的结构体数组(或者普通数组,刚才试了,一样的额),在不赋值的情况下,大小大于184BYTE没有关系,不报错,但是在程序中赋值后,就报错。。

也就是说我现在系统中,只要想给定义的数组赋值,就必须将定义的数组大小设置为小于184 byte??

但是我现在的项目中需要  300*8  byte,该怎么处理这个问题,希望能指点。。。。

ziwen xu:

回复 Peter_Zheng:

就是定义的结构体数组变量。。

typedef struct{    uint8 NetAddr[2];       uint8 MeterAddr[6];    }AddrMap_t;

AddrMap_t AddrMap[300];

300 -> 22(或者更小,22*8)之后,给这个数组变量赋值就没有问题。。但是我现在至少要300个

ziwen xu:

回复 Peter_Zheng:

cc2530.

 152 270 bytes of CODE  memory      32 bytes of DATA  memory (+ 72 absolute )   7 929 bytes of XDATA memory     192 bytes of IDATA memory       8 bits  of BIT   memory     169 bytes of CONST memory

Errors: noneWarnings: none

这是sample工程中map文件中的memory情况,保证不报错,数组使用的最大情况(也就是上面说的22,换成23就会报错)。。

ziwen xu:

回复 WZ:

能不能再请教你个问题:

CC2530的flash是256KB,SRAM是8K,CODE、DATA、XDATA、IDATA、BIT、CONST哪些是存储在flash?哪些是存储在SRAM?

赞(0)
未经允许不得转载:TI中文支持网 » 请教:Failed to fit all segments into specified ranges………问题如下,帮忙啊。。。
分享到: 更多 (0)