IAR编译zigbee出现问题Undefined external "?V1" referred in AF

Error[e46]: Undefined external "?V1" referred in AF C:\Texas Instruments\Z-Stack Lighting 1.0.2\Projects\zstack\ZLL\SampleApp\CC253x\RouterEB-Pro\ 
Obj\AF.r51 )


解决问题如下:
原来这个是IAR版本的问题引起的,参考这个 http://supp.iar.com/Support/?Note=98110
按照参考里面说的解决方法,将workaround.s51 文件加到工程里(我是加到了C:\Texas Instruments\Z-Stack Lighting 1.0.2\Projects\zstack\ZMain\TI2530DB目录下,注意要在工程里该目录右击“add file ... ”),然后再次rebuild后,原来的问题没有了,但是出现了第二个问题,

“Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition. At least 0xe more bytes needed. The problem occurred while processing the segment placement command  
"-Z(IDATA)ISTACK+_IDATA_STACK_SIZE#08-_IDATA0_END", where at the moment of placement the available memory ranges were "IDATA:4e-ff" 

于是又查到 http://e2e.ti.com/support/low_power_rf/f/538/p/303921/1061753.aspx
根据以上列出的这个帖子里面的 Luis Johnson (就是贴出了一大个图的那个)给出的解决方法,将numbers of virtual registers 由16 改为8个,再次rebuild,就OK了,没有报错。



workaround.s51文件内容如下:
;----------------------------------------------------------------;
; Virtual registers                                              ;
; =================                                              ;
; Below is some segment needed for the IAR ICC C/EC++ compiler   ;
;                                                                ;
; BREG  : A segment for 8 bit registers for use by the compiler. ;
;         ?B0 is the first register.                             ;
; VREG  : Segment that holds up to 32 virtual registers for      ;
;         use by the compiler. ?V0 is the first register.        ;
; PSP   : Segment containing the PDATA stack pointer (?PSP)      ;
; XSP   : Segment containing the XDATA stack pointer (?XSP)      ;
;                                                                ;
;----------------------------------------------------------------;
;----------------------------------------------------------------;

        PROGRAM VIRTUAL_REGISTERS
        PUBLIC  ?B0
        PUBLIC  ?V0
        PUBLIC  ?V1
        PUBLIC  ?V2
        PUBLIC  ?V3
        PUBLIC  ?V4
        PUBLIC  ?V5
        PUBLIC  ?V6
        PUBLIC  ?V7
        PUBLIC  ?V8
        PUBLIC  ?V9
        PUBLIC  ?V10
        PUBLIC  ?V11
        PUBLIC  ?V12
        PUBLIC  ?V13
        PUBLIC  ?V14
        PUBLIC  ?V15
        PUBLIC  ?V16
        PUBLIC  ?V17
        PUBLIC  ?V18
        PUBLIC  ?V19
        PUBLIC  ?V20
        PUBLIC  ?V21
        PUBLIC  ?V22
        PUBLIC  ?V23
        PUBLIC  ?V24
        PUBLIC  ?V25
        PUBLIC  ?V26
        PUBLIC  ?V27
        PUBLIC  ?V28
        PUBLIC  ?V29
        PUBLIC  ?V30
        PUBLIC  ?V31
        PUBLIC  ?PSP
        PUBLIC  ?XSP
        RSEG    BREG:BIT:NOROOT
?B0:
        DS      8

        RSEG    VREG:DATA:NOROOT
?V0:
        DS      1
?V1:
        DS      1
?V2:
        DS      1
?V3:
        DS      1
?V4:
        DS      1
?V5:
        DS      1
?V6:
        DS      1
?V7:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V7
?V8:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V8
?V9:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V9
?V10:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V10
?V11:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V11
?V12:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V12
?V13:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V13
?V14:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V14
?V15:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V15
?V16:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V16
?V17:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V17
?V18:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V18
?V19:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V19
?V20:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V20
?V21:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V21
?V22:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V22
?V23:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V23
?V24:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V24
?V25:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V25
?V26:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V26
?V27:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V27
?V28:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V28
?V29:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V29
?V30:
        DS      1

        RSEG    VREG:DATA:NOROOT
        REQUIRE ?V30
?V31:
        DS      1

        RSEG    PSP:DATA:NOROOT
        EXTERN  ?RESET_PSP
        REQUIRE ?RESET_PSP
?PSP:
        DS      1

        RSEG    XSP:DATA:NOROOT
        EXTERN  ?RESET_XSP
        REQUIRE ?RESET_XSP
?XSP:
        DS      2

        ENDMOD ; VIRTUAL_REGISTERS

        END

        
 
 
第二个问题如下:
Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition. At least 0xe more bytes needed. The problem occurred while processing the segment placement command  
"-Z(IDATA)ISTACK+_IDATA_STACK_SIZE#08-_IDATA_END", where at the moment of placement the available memory ranges were "IDATA:4e-ff" 
   Reserved ranges relevant to this placement: 
   IDATA:8-1f           VREG 
   IDATA:21-40          VREG 
   IDATA:41-42          XSP 
   IDATA:43-43          DATA_I 
   IDATA:44-4b          DATA_Z 
   IDATA:4c-4d          IDATA_Z 
   IDATA:4e-ff          ISTACK 
   BIT:0-7              BREG 
   BIT:80-97            SFR_AN 
   BIT:a0-af            SFR_AN 
   BIT:b8-c7            SFR_AN 
Error while running Linker 
 
Total number of errors: 1 
Total number of warnings: 0 I had the exact same problem and I just change the number of virtual registers from 16 to 8
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值