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.

[参考译文] CC2530:链接 Lates IAR 8051版本的问题(周一发布)

Guru**** 2577385 points
Other Parts Discussed in Thread: Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/988297/cc2530-linking-issues-with-lates-iar-8051-version-released-this-monday

器件型号:CC2530
Thread 中讨论的其他器件:Z-stack

你好

我升级到了本月发布的 lates IAR Compiler for 8051、这是因为有信息表明他们解决了我在工具链方面遇到的几个问题。

结果是链接现在只会失败-目标目录和临时目录将在每个编译上完全删除、因此不应由先前编译中的文件丢失引起。

OSAL_Math.s51
.\trv\Components\osal\mcu\cc2530\OSAL_Math.s51(108) : Warning[410]: B is using fixed address 0xF0. Use external lab
el ?B instead if B is using another address
.\trv\Components\osal\mcu\cc2530\OSAL_Math.s51(185) : Warning[410]: B is using fixed address 0xF0. Use external lab
el ?B instead if B is using another address


...

Linking
Error[e46]: Undefined external "?B" referred in bdb_Reporting ( .\trv\TRVRelease\Obj\bdb_Reporting.r51 )
Error[e46]: Undefined external "?IE" referred in ?ALLOC_XSTACK8 ( C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\8051\LIB\CL
IB\cl-pli-blxd-1e16x01.r51 )
Error while running Linker


Total number of errors: 2
Total number of warnings: 5


 ERROR, Command failed: build

我还向 IAR 提交了一份报告、因此他们可能会确定解决方法。  我没有对此进行调查。

版本:


IAR 命令行构建实用程序 v8.3.4.6127
版权所有2002-2019 IAR Systems AB。

创建原始项目文件的备份。
删除配置 TRVRelease 的输出
正在更新生成树...

0个文件已删除。


IAR 命令行构建实用程序 v8.3.4.6127
版权所有2002-2019 IAR Systems AB。

# IAR C/C++编译器 V10.40.1.7397 for 8051 23/Mar/2021年19:56:17
#版权所有2004-2021 IAR Systems AB。
# PC 锁定许可证- IAR Embedded Workbench for 8051 10.40

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    后续:编译 ZNP 项目会在链接时产生相同的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尝试从 https://www.twblogs.net/a/5d4070d4bd9eee51fbf9991a 下载 TI Z-Stack 版本说明中匹配的 IAR 版本 以再次测试  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mario、

    如 YK 所述、您必须使用 Z-Stack 发行说明中的 IAR EW 8051版本来确保编译器/链接器兼容性。  我以前没有看到过这个错误、也不知道最近进行了哪些 IAR 更改、这些更改可能会导致此类行为。  希望 IAR 支持能为您提供有关其工具的更多信息。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据 IAR 支持、这个问题"与 B 寄存器和 IE 寄存器变得"可移动"相关。
    一级支持要求 IAR BackOffice 提供有关使用 B/?B 和 II/?IE 寄存器的迁移建议。 源代码中。"

    这是指发行说明“*支持更改 B 和 IE 寄存器的地址”。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您使用哪个 Z-Stack 版本? 在构建原始示例时、您是否看到此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这与 Z-Stack_3.0.2一同使用- ZED 和 ZNP 不会使用 IAR 10.40编译- IAR 10.30正常。

    IAR 说他们在10.40中修复了我在10.30中从 CLI 编译时遇到的问题(随机故障编译)、 并更新了文档以表明8051编译器不支持 Stack 使用情况报告、从而确认了10.30和更早版本提供的报告不可用、并且它们不会在演变中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Mario

    请参阅有关 IAR 10.40.1 https://netstorage.iar.com/FileStore/STANDARD/001/000/602/ew/doc/infocenter/readme.ENU.html 的发行说明
    它指出您需要更新链接器配置文件。  我希望这对我有所帮助、我还没有更新到10.40.1、因此我不能再提供更多帮助了。

    Kai

    版本10.40

    • 支持更改BIE寄存器的地址

      编译器生成会导致使用操作码的指令时
      B或的地址IE,它现在使用外部标签?B?IE而不是。 这些标签是
      然后由链接器通过指定命令行上标签的值来解析、
      -D?B=0xF0

      所有链接器配置文件均已更新、以包含这些定义。 如果你是
      从较早版本的 IAR Embedded Workbench 升级以适用于8051、您的项目将使用
      自定义链接器配置文件、您必须将定义添加到配置文件中
      避免链接错误。

      注意:汇编器不支持更改的地址。 如果器件具有
      B寄存器的非标准地址,替换为?B并记住添加EXTERN ?B
      注意:如果B寄存器位于不可按位寻址的地址上、运行时库将不再兼容、并且将无法正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    感谢您提供的有用反馈。

    我已将以下内容添加到我的 ZED 项目中的 xcl 文件中并成功链接:

    //
    //  Device specific symbol definitions
    //  ==================================
    -D?B=F0                       // B register location
    -D?IE=A8                      // Interrupt Enable register location
    -D?IP=A9                      // Interrupt Priority register location
    

    这些行可在"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\8051\config\devices\Texas Instruments\lnk51ew_cc2530F256.xcl"中找到