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

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,问题解决。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值