【IAR-10.30.1】最新版本IAR常见编译问题总结

本文汇总了使用IAR 10.30.1编译旧版Zigbee工程时遇到的Error[e16]、Error[e46]和Error[e16]有关内存段的问题,提供了详细的解决步骤,包括调整RAM_CODE_FLASH大小,添加workaround.s51文件以及修改VREG设置。适用于解决IAR与旧Z-Stack版本兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

近期,老师经常使用旧版本协议栈布置作业,但是我使用的是最新版本的IAR,导致打开工程的时候,编译的时候总有莫名奇妙的版本兼容问题。

所以本篇博客总结一些IAR编译旧版本工程报错以及解决方案。

有不对的地方还请指正,感激不尽。

系统环境

  • Win10 1909
  • IAR 10.30.1
  • Z-Stack
  • VScode

1.Error[e16]: Segment RAM_CODE_FLASH

Error[e16]: Segment RAM_CODE_FLASH (size: 0x27 align: 0) is too long for segment definition. At least 0x4 more bytes needed. The problem occurred while processing the segment placement command  
"-Z(CODE)RAM_CODE_FLASH=_RAM_CODE_FLASH_START-_RAM_CODE_FLASH_END", where at the moment of placement the available memory ranges were "CODE:39edd-39eff" 

根据报错,RAM_CODE_FLASH需要再扩大至少4个字节。

所以打开Tool里面的fw82530.xcl文件,将RAM_CODE_FLASH_END的值再增大至少0x04.

在fw82530.xcl的第226行左右

-D_RAM_CODE_XDATA_START=0x01EDD
-D_RAM_CODE_XDATA_END=(_RAM_CODE_XDATA_START+0x22)
-Z(XDATA)RAM_CODE_XDATA=_RAM_CODE_XDATA_START-_RAM_CODE_XDATA_END
//
-D_RAM_CODE_FLASH_START=0x39EDD
-D_RAM_CODE_FLASH_END=(_RAM_CODE_FLASH_START+0x26)//这里原本是+0x22

修改之后,点击rebuild。应该不会再有这个错误。但是一般来说,可能还会遇到下面的错误。

2.Error[e46]: Undefined external “?V1” referred in AF

这个问题可以参考 这个连接 。里面解决了这个问题。

不过,还是简单翻译一下:

需要添加一个workaround.s51 文件加到工程里。注意,这个文件的后缀名就是.s51,不是.c或者其他。请务必保存为正确的后缀名。

我是加到了E:\StudyMaterial2019\URAT\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\ZMain\TI2530DB目录下,注意要在工程里该目录右击“add file … ”,添加你新建的这个文件进去。

然后再次rebuild后,原来的问题没有了,

workaround.s51文件内容如下:

;----------------------------------------------------------------;
; Virtual registers						 ;
; =================						 ;
; Below is some segment needed for the IAR ICC C/EC++ compiler   
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值