使用环境

<!-- 必须 告知插件运行的环境,帮助开发者定位问题 -->

  • 操作系统版本:win10
  • 操作系统平台(x86/x64):x64
  • VsCode 版本:1.69
  • EIDE 插件版本:3.9
  • C/C++ 插件版本:
  • 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):IAR8.50
  • 编译器版本(非编译问题可忽略):

描述问题

`[ INFO ] run tasks before build ...

iar prebuild [failed]

"c:/ti/xdctools_3_62_00_08_core/xs" --xdcpath="c:/ti/simplelink_cc13x2_26x2_sdk_4_40_04_04/kernel/tirtos/packages" iar.tools.configuro -c "C:\IAR8.50\arm" --cc "${COMPILER_PATH}" --device "CC2642R1F" --compileOptions ${COMPILER_ARGS_ROOT_QUOTED} --linkOptions ${LINKER_ARGS_QUOTED} --profile release --projFile "e:\TTC_2642R1_multi_role/multi_role.ewp" -o configPkg c:/ti/simplelink_cc13x2_26x2_sdk_4_40_04_04/examples/rtos/CC26X2R1_LAUNCHXL/ble5stack/multi_role/Tools/ble_${CONFIG_NAME}.xscfg

Using RTSC configuration file: c:/ti/simplelink_cc13x2_26x2_sdk_4_40_04_04/examples/rtos/CC26X2R1_LAUNCHXL/ble5stack/multi_role/Tools/ble_${CONFIG_NAME}.xscfg...

js: "C:/ti/simplelink_cc13x2_26x2_sdk_4_40_04_04/kernel/tirtos/packages/iar/tools/configuro/Main.xs", line 366: Error: iar.tools.configuro: The compiler options '${COMPILER_ARGS_ROOT_QUOTED}' specify an architecture which is not supported.
"C:/ti/simplelink_cc13x2_26x2_sdk_4_40_04_04/kernel/tirtos/packages/iar/tools/configuro/Main.xs", line 75

ERROR Run Tasks Failed !, Stop Build !

ERROR build failed !, elapsed time 0:0:1`

感觉编译还没有完善好。期待大佬回复。

屏幕截图

<!--使用一些截图能够更好地展现问题 -->
在IAR中可以正常编译

期望现象

<!--您期望应该产生的,但实际上却没有发生的结果-->

另外,构建器选项,无法使用。
加载 Web 视图时出错: Error: Could not register service workers: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state..

    导入官方demo,还出现了导入失败的情况。
    项目导入失败 !: ENOENT: no such file or directory, open '$SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR$/kernel/tirtos/builds/cc13x2_cc26x2/release/iar/tirtos_builds_cc13x2_cc26x2_release.ewp'



    • 正在文件夹 uart 中执行任务: "unify_builder -p f:\ti_test\uart\build\Debug\builder.params"

    [ INFO ] run tasks before build ...

    iar prebuild [failed]

    iarbuild.exe ${SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/kernel/tirtos/builds/cc13x2_cc26x2/release/iar/tirtos_builds_cc13x2_cc26x2_release.ewp Debug -log all

    'iarbuild.exe' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。

    ERROR Run Tasks Failed !, Stop Build !

    ERROR build failed !, elapsed time 0:0:0

    • 终端进程“cmd.exe /C "unify_builder -p f:\ti_test\uart\build\Debug\builder.params"”已终止,退出代码: 1。
    • 终端将被任务重用,按任意键关闭。

    xue1995

    问题就是出在你的 iar 项目的 pre-build 任务

    插件会导入 Iar 的 pre-build 任务, 但这些任务本来都是在 iar 的进程中运行的,

    插件虽然能完整导入任务的命令行,但无法复刻完整的运行环境,有些环境变量都没有,因此你的 pre-build 任务失败很正常

    像 iarbuild.exe 这种路径找不到是最常见的环境变量缺失问题


    在发布前,我已经试过了一些项目,包括 ti 的 cc2650 sdk 中的 demo

    对于这个问题,有两种解决方法:

    • 重新编写能在 系统shell 中运行的 pre-build 任务,使 eide 能够正常执行 pre-build task

    • 在 iar 中运行一次 pre-build task 之后,在 eide 中禁用 pre-build task,然后再 编译;
      因为一般 pre-build task 用来生成文件,执行一次后,就不需要了


    加载 Web 视图时出错: Error: Could not register service workers: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state..

    是 vscode 错误,一般跟你最近的错误操作有关,重启一下电脑试试,或者重装 vscode

      admin 上述问题,我都解决差不多了
      目前还剩一个。
      COMPILER_ARGS_ROOT_QUOTED 这个环境变量找不到,只有ble5协议栈的例程,才用到。

      uart例程,只需要把IAR加入环境变量(工具,能否自行补充?),然后,修改链接器附件选项,把重复的参数删除,即可完美编译

      但是呢,对于带协议栈的demo,欲编译会使用xs--iar.tools.configuro,然后导入编译参数,${COMPILER_ARGS_ROOT_QUOTED},,,在EIDE中为${ArgsFile:ARGS_FILE_PATH},我将其替换,编译失败,无法找到。

      大佬,顺便支持下OpenOCD--erase
      not support 'Erase Chip' for 'OpenOCD' flasher

        目前,采用方案二,编译参数,实在导入不到环境变量
        在 iar 中运行一次 pre-build task 之后,在 eide 中禁用 pre-build task,然后再 编译;
        因为一般 pre-build task 用来生成文件,执行一次后,就不需要了

          xue1995

          这个 xs 工具就是为 iar 项目而准备的,${COMPILER_ARGS_ROOT_QUOTED} 应该是指 iar 内部动态生成的编译参数,

          即使你将这些参数全部弄齐也没意义,因为 --projFile "xxx\xx.ewp" 说明它还在依赖旧的 iar 项目来生成配置文件,

          而 eide 的导入功能旨在于复制一个项目的所有信息,转换成一个新的 eide 项目,与旧项目失去关联

          如果有 pre-build 过程且不能重新写出等价的命令,就只能用第二种方法,像这种严重依赖 iar 的项目最好还是用 iar 去搞,或者你可以去看看 IAR 官方的插件 IAR Build, 它用的直接加载 eww, ewp 项目文件的方法,效果会更好,相当于在 VSCode 上直接打开 IAR 工程,着重于利用VSCode的编辑功能

            xue1995

            因为没有找到 openocd 的全片擦除命令,所以不支持

              admin IAR Build,不支持IAR9.20以下版本。对于TI-CC26xx,在IAR9系以上无法编译。

              admin 如果EIDE中${ArgsFile:ARGS_FILE_PATH},能放到环境变量中,应该可行的。

              在EIDE中,将【包含目录--链接目录--预处理器定义】作为环境变量

                admin 这个看见啦,那能否将【包含目录--链接目录--预处理器定义】作为环境变量?这样能直接导出给其他程序使用

                Write a Reply...