This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

解决最新版本IAR for 8051 8.30 编译协议栈Z-Stack有错误

Guru 58556 points
Other Parts Discussed in Thread: CC2540, Z-STACK, CC2541

Hi All,

最近收到很多工程师的反应,使用最新版本IAR for 8051 8.30以上版本,编译协议栈-Stack工程时会出现以下错误,

Error[e46]: Undefined external "?V1" referred in AF ( C:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\SampleApp\CC2530DB\DemoEB\Obj\AF.r51 ) 

目前解决这个问题的办法,

1:Change number of virtual registers to 8

2:替换C:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\ZMain\TI2530DB下的chipcon_cstartup.s51文件

http://www.deyisupport.com/cfs-file.ashx/__key/communityserver-discussions-components-files/104/8814.chipcon_5F00_cstartup.rar

  • 谢谢VV给出的解决办法......前几天刚好碰到这问题

  • CC2540 BLE 的1.4.1亦可用此方法解决编译出错问题!

  • 完美解决了,错误~!

  • 谢谢,不过求这个怎么破,协议栈是2.3的,怎么更新到最新的协议栈,除了ti的官网有没有别的链接,网盘分享啥的

  • 官网就可以下载的 http://www.ti.com.cn/tool/cn/z-stack

  •  非常感谢,终于解决头痛的问题了。

  • hi :

    按照上面的做法,我在使用IAR软件编译CC2541的BLE协议1.4.0版本的时候,发现还是会出现错误。

    以下是我的问题具体分析:

    1.我自己写了4个文件,分别是Hud_application.c/Hud_application.h/Hal_hud.c/Hal_hud.h

    这四个文件当中,Hal_hud.c当中会调用Hal_i2c.c中的函数,如HalI2CInit().而Hud_application.c中会调用Hal_hud.c中的函数。

    2.我需要在simpleBLEPeripheral.c中调用Hud_application.c中的函数,例如我在SimpleBLEPeripheral_ProcessEvent()函数中调用。

    那么问题来了:

    在我写好上面第一步的时候,编译和链接都没问题。

    但是在我写好上面第二步的时候,就出现了如下截图中的问题:

    我有个问题感到很奇怪,既然这里面的链接错误是提示说hal_i2c.c中的函数没有定义,那么在我上面第一步的时候,也是有调用这里面的函数的呀,为什么第一步的时候没有提示?反而在第二步的时候,不是直接调用hal_i2c.c中的函数的时候,它却提示了?

    请TI的工程师大大们帮忙看看该问题,不胜感激!!

    PS:我使用的是TI BLE协议栈BLE-CC254X-1.4.0里面的SimpleBLEPeripheral工程。

  • TI那些工程师没时间跟你整这些问题

  • 附件为啥下不了啊?谢谢!

  • 请问 number of virtual registers 是在哪里修改的?

    就是说找不到这个选项,麻烦了,小白

  • VV的图片给出了

    右击工程文件 选择options-->general options -->target 下有的

  • 工程师您好,我在TI官网下载的Z-Stack Home 1.2.2.42930,IAR也是下载的V9.1最新版本,但是按照上面的修改方法修改之后还是出现以下情况:

    Error[e46]: Undefined external "?V10" referred in AddrMgr ( D:\快盘\Desktop\Z-Stack Home 1.2.2.42930\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib )
    Error[e46]: Undefined external "?V11" referred in AddrMgr ( D:\快盘\Desktop\Z-Stack Home 1.2.2.42930\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib )
    Error[e46]: Undefined external "?V12" referred in AddrMgr ( D:\快盘\Desktop\Z-Stack Home 1.2.2.42930\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib )
    Error[e46]: Undefined external "?V13" referred in AddrMgr ( D:\快盘\Desktop\Z-Stack Home 1.2.2.42930\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib )
    Error[e46]: Undefined external "?V14" referred in AddrMgr ( D:\快盘\Desktop\Z-Stack Home 1.2.2.42930\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib )
    Error[e46]: Undefined external "?V15" referred in APS ( D:\快盘\Desktop\Z-Stack Home 1.2.2.42930\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib )

    求解决方案

  • 请问,我这边9.1提示

    Fatal Error[LMS001]: License check failed. Use the IAR License Manager to resolve the problem.
    No license found. [LicenseCheck:2.14.2.842, RMS:8.5.2.0015, Feature:8051.EW.COMPILER, Version:1.03]
    Error while running C/C++ Compiler

    怎么解决呢?

  • 你下载的是未破解版的IAR啊?安装的时候可以选免费版或者试用版的license

  • 我注册个免费版的 license 试试。

  • 那个   .s51文件,不要使用网站上下载的,用Z-Stack Home程序压缩包里直接解压出来的去替换相应路径下的文件就可以了。

  • 我也遇到了这个问题、请问Z-Stack Home程序压缩包里的哪个文件替换?

  • 您好,我也在学习zstack-home 1.2.2,您能给我一个iar8051 9.1吗,986458764@qq.com,非常非常的感谢!

  • 我也遇到了这个问题咋解决的?

  • 问题解决了吗

  • 完美解决,谢谢,分享,哈哈

  • 就是替换帖子开头说的那个  .s51文件啊,帖子开头楼主给出的   。s51文件编译不通过,得用压缩包里解压出来的替换才行。



  • VV大神:
        上面提到的两个方法都试过了,依旧不行。这该如何处理? 

  • hal_lcd.c 中 #define HAL_IO_SET_PREP(port, pin, val)   st( P##port##_##pin## = val; )  IAR10.10.1 回报警告,把它改为#define HAL_IO_SET_PREP(port, pin, val)   st( P##port##_##pin = val; ) ( pin后面的##去掉就行了),不是所有编译器都支持这种写法

  • 感谢,问题解决了
x 出现错误。请重试或与管理员联系。