TI z-stack 在IAR环境下的错误处理

来源:互联网 发布:js书籍推荐 编辑:程序博客网 时间:2024/05/02 02:38

1. 代码段设置过小

    Make 的link error message示例:

>>Error[e16]: Segment XDATA_ID (size: 0x1c3 align: 0) is too long for segment definition. At least 0xb8 more bytes needed. >>The problem occurred while processing the segment  placement command >>"-Z(CODE)BIT_ID,BDATA_ID,DATA_ID,IDATA_ID,IXDATA_ID,PDATA_ID,XDATA_ID=_CODE_START-_CODE_END",

>>where at the moment of  placement the available memory ranges were "CODE:27f5-28ff"
>>Reserved ranges relevant to this placement:
>>CODE:0-85            INTVEC
>>CODE:86-165          CSTART
>>CODE:166-10a0        RCODE
>>CODE:10a1-18b8       NEAR_CODE
>>CODE:18b9-27f4       BANK_RELAYS
>>CODE:27f5-28ff       XDATA_ID
>>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_AN

   我们可以看到, 这里提示是说0x1c3 is too long for segment definition,观察一下XDATA_ID这个段,地址区间为27f5~28ff。总共长度

只有0x10A的长度,所以偏移量0x1c3必然是超出预设置的数据段的范围咯。

   在z-stack工程里面的tool目录下有一个.xcl文件, 打开它ctrl+F一下CODE_END这个词,会找到这样一句话

>>"-Z(CODE)BIT_ID,BDATA_ID,DATA_ID,IDATA_ID,IXDATA_ID,PDATA_ID,XDATA_ID=_CODE_START-_CODE_END"

   就是error信息中提示的那条正在执行的命令。继续Ctrl+F D_CODE_END这个词, 找到这个东西的定义处。

   你会发现他定义为0x28FF,这跟error message是吻合的。根据提示,我们至少在需要让XDATA段有0x1c3的长度,所以我们可以将此变量

   的值设定为 大于 0x27f5+0x1c3 = 0x29b8的数值。为了有较充足的空间,我设置成0x3500,再make,问题解决。

 

原创粉丝点击