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.

[参考译文] CC1312R:空闲功能和可能的 SysConfig 问题

Guru**** 2550550 points
Other Parts Discussed in Thread: SYSCONFIG, CC1312R

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1054278/cc1312r-idle-function-and-possible-sysconfig-issue

器件型号:CC1312R
Thread 中讨论的其他器件:SysConfig

您好!

我将应用程序迁移到最新的 SDK simplelink_cc13xx_cc26xx_sdk_5_30_00_56

我将独立 SysConfig 与 IAR 搭配使用。 (不使用 CCS)。

SysConfig 设置为自定义板、我切换了器件。

我之前的应用在 app.cfg 中设置了自定义空闲函数。

Idle.addFunc("&myIdleFunc");

我将其改回、因为我想使用默认空闲函数来节省功耗。 我现在在链接器中得到此错误:

ERROR[Li005]:"myIdleFunc"没有定义[引用自 C:\ti\simplelink_cc13xx_cc26xx_sdk_5_30_00_56\source\ti\ti154stack\ccommon\boards\CC13X2_LAUNCHXL_configPkg\configPkg\config\cfg\app_prm4f.orm4f]

这是因为 SysConfig 仍在使用板级配置文件吗? 或者、我是否在尝试将 app.cfg 设置回默认值时错过了一些内容?

sysconfig

谢谢。

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

    为了澄清这一点,如果我补充:

    extern void myIdleFunc(void);

    void myIdleFunc(void)
    {
      
    }

    我的应用、它可以构建。 但我认为我不应该这样做。

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

    尊敬的 Andrew:

    为什么您认为 SysConfig 可能与您看到的内容有关、有特殊原因吗?

    因此、如果我理解正确、您已将.cfg 文件更改为以下内容:

    /* ================ Idle configuration ================ */
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    /*
     * The Idle module is used to specify a list of functions to be called when no
     * other tasks are running in the system.
     *
     * Functions added here will be run continuously within the idle task.
     *
     * Function signature:
     *     Void func(Void);
     */
    //Idle.addFunc("&myIdleFunc");
    Idle.addFunc('&Power_idleFunc');  /* Add the Power module's idle function */

    我是对的吗?

    如果我没有弄错、您看到的错误似乎是链接器错误。 您能否在 IAR 中检查项目的链接器选项? 可能那里正在发生一些事情。

    重建之前是否清洁了项目?

    BR、
    安德烈斯

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

    您好!

    感谢您的回复。 是的、空闲配置与您发布的配置相同。 其理念是、它与默认值相同、就像我没有更改任何内容一样。

    您能否确认这是默认设置、并且我不需要声明  myIdleFunc?

    我认为这个问题可能是 SysConfig、因为我在这个 SDK 迁移中做了一些新的事情、方法是选择"定制板"、然后更改器件。 最重要的是、错误来自中的文件:

    ti154stack\common\boards\CC13X2_LAUNCHXL

    我认为 SysConfig 可能错误地包含这些内容、因为我有一个定制板。 我不知道 TI  在拥有定制板时如何使用 CC13X2_LAUNCHXL 中的文件。  

    我可以通过声明 myIdleFunc 来克服该错误、但我很确定我没有习惯这么做、我担心的是、我不知怎么会破坏默认配置。

    我已经检查了链接器设置、看不到任何问题、是的、我总是清理文件。

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

    您好!

    我进一步深入探讨了这个问题。 在最新的 SDK 中、似乎有很多文件不在我之前的(4.3) SDK 中。

    这是 CC13X2_LAUNCHXL 的当前内容:

    这是之前的版本(4.3):

    SDK 现在有两个附加文件夹、它的 configPkg/cfg/app_prm4f.c 导致了以下行的问题:

    /*
     * ======== ti.sysbios.knl.Idle DECLARATIONS ========
     */
    
    /* --> myIdleFunc */
    extern xdc_Void myIdleFunc(xdc_Void);

    这是否意味 着现在必须声明 myIdleFunc(),而以前没有声明?

    谢谢、

    Andy

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

    尊敬的 Andrew:

    我认为、在将您的基本项目导入到 IAR 时、您可能无意中犯了错误。 您很可能在项目的 SDK 安装目录中选择了一个文件夹。

    我提到这一点是因为其中不应有任何 configPkg 文件夹。 这就是5.30 SDK 全新安装的外观。

    因此、IAR 可能正在寻找不存在的东西。

    我建议您后退一步、下载 SDK 的纯净副本。

    BR、
    安德烈斯

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

    您好!

    你是对的。 我使用 Windows 卸载了该程序,并且剩下的唯一文件夹是 configPkg 和 src。 我已删除并重新安装 SDK。

    现在、我的项目在 IAR 中非常中断、因为它在该位置查找文件。 我不知道发生了什么、但我认为您对 IAR 基本项目设置很正确。 我从示例收集器项目开始。 可能是因为我首先编译了原始工程以检查它是否正常工作、它在该位置保留了文件夹和文件。 可能是我必须再次启动、但根本不编译示例项目。 相反、复制我的所有项目部分、然后仅进行编译。

    我仍然认为、对于 CC1312R Launchpad、原始收集器示例设置可能是 SysConfig 问题、然后我从 SysConfig 中更改了该设置。 除此之外、我不知道哪里出了问题。

    [SU007]:无法打开命令文件"c:/ti/simplelink_cc13xx_cc26xx_sdk_5_30_00_56/source/ti/ti154stack/apps/../../../../source/ti/ti154stack/common/boards/CC13X2_LAUNCHXL/configPkg/compiler.opt.defs " C:\Users\Software3\Documents\cc1312r_868_SDK_5_30_v6\collector\release\Obj\Collector CC13X2\application\collector\link_controller\clc.o.rsp 1.

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

    您好!

    我已经重新开始了、但最后返回了相同的文件夹。 这与打开示例收集器项目或编译示例代码时的 IAR 有关。 我会再试一次、看看我是否能更好地了解正在发生的情况。 我有一些紧迫的截止日期、因此这不是一个好问题。  

    从 IAR 启动新收集器项目的正确方法是什么? 是:

    1) 1)浏览到示例文件夹并直接打开工作区。

    2)或使用信息中心并浏览至打开 template.eww 的示例

    其中一种方法可以轻松创建无限的文件夹循环、但我不记得是哪种方法。  

    从收集器示例中启动 IAR 项目的正确方法方面的任何帮助都很有用。 我以前一直设法完成这个流程、但这个新问题已经停止了我的进度。

    此外、SysConfig 无法从任何示例中打开 SysConfig 文件的永恒问题仍然存在。 在过去几年中、我已经多次发布过这方面的内容。

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

    我可以确认,如果我将以下内容添加到 SysConfig 示例文件中以便其打开,configPkg 文件夹会添加到 SDK 中,从而导致 myIdleFunc()问题。

    *@clipArgs --board "/ti/boards/CC1312R1_LAUNCHXL --rtos"tirtos"--product "simplelink_cc13xx_cc26xx_sdk@5.30.00.56
    *@版本{"tool":"1.10.0+2163"}

    看起来我不需要使用  --board"/ti/boards/CC1312R1_LAUNCHXL  

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

    configPkg 在全新 IAR 构建开始时生成。 我非常小心、创建了一个全新的项目和 SysConfig 文件、但根本没有指定电路板、我仍然会获得文件夹输出:

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

    尊敬的 Andrew:

    在 IAR 中打开示例的正确方法是浏览到示例文件夹并打开模板文件(即.eww 文件)。

    当您双击它时、IAR 将打开并询问您是否要将工作区保存在一个新文件夹中。

    当您单击"OK"时、默认情况下、您可能会看到 IAR 在 SDK 中选择了示例文件夹。 我认为您可能犯了错误。 您应该为工作区选择不同的文件夹。

    如果这样做、则不应在 SDK 中添加或修改任何文件。

    此外、当您构建项目时、将生成 configPkg、但它将显示在您的工作区文件夹中。

    请注意、有关 SysConfig 问题。 我真的不知道为什么您会遇到这个问题。无需修改任何内容即可使 SysConfig 在 IAR 中工作。 尽管我知道 IAR 的行为在自定义查看器中会有点奇怪。

    您是否遵循了这些指南中的步骤?

    http://software-dl.ti.com/simplelink/esd/simplelink_cc13x2_26x2_sdk/3.40.00.02/exports/docs/zigbee/html/sysconfig/getting-started.html#sysconfig-use-iar

    http://software-dl.ti.com/ecs/SIMPLELINK_CC32XX_SDK/3_20_00_06/exports/docs/simplelink_mcu_sdk/Using_SysConfig_with_IAR_Workbench.html

    BR、
    安德烈斯

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

    您好!

    感谢您提供这些信息。 我想我现在可以使用它了。 一些要点:

    1) 1)在 IAR 中打开收集器示例时、我一直在指定自己的文件夹。 但是、我认为我出错的地方是使用 IAR 信息中心、然后下载我这次没有执行的"示例项目"、而是按照您直接浏览模板的方法进行操作。 即使我在从信息中心下载示例项目后浏览到模板、它似乎也安装得很奇怪。

    因此、本课绝不使用 IAR 信息中心。

    2) 2)我实际上没有意识到我可以在 IAR 中单击 SysConfig 文件、它会打开 SysConfig。 我始终单独打开 SysConfig 并直接打开文件。 每当打开新文件时、总是会失败、我必须添加我之前提到的标题行。 我必须将配置查看器更改为:

    $sysconfig_root$\nw\nw.exe $sysconfig_root$-编译器 IAR -s $SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR$\.metadata\product.json --output $PROJ_DIR$$file_path$

    有效的方法。 太棒了!

    3) 3)我可以确认 configPkg 仍然添加到 SDK 位置、但是 app_prm4f.c 不包含 myIdleFunc ()、因此在完成新收集器示例中的应用移植后、不会出现问题。

    感谢你的所有帮助。 很高兴知道我现在已经正确设置了所有内容。

    Andy

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

    查看默认的 IAR 项目编译器和链接器额外选项、可以看到 configPkg 是构建并存储在 SDK 中的:

    -f$COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR$/source/ti/ti154stack/apps/../../../../source/ti/ti154stack/common/boards/CC13X2_LAUNCHXL/configPkg/compiler.opt.defs

    -f$COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR$/source/ti/ti154stack/apps/../../../../source/ti/ti154stack/common/boards/CC13X2_LAUNCHXL/configPkg/linker.cmd

    我认为这是正确的、如果不是因为我不能正确打开 IAR 模板、我就不会深入探讨这个问题。

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

    查看默认的 IAR 项目编译器和链接器额外选项、可以看到 configPkg 是构建并存储在 SDK 中的:

    -f$COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR$/source/ti/ti154stack/apps/../../../../source/ti/ti154stack/common/boards/CC13X2_LAUNCHXL/configPkg/compiler.opt.defs

    -f$COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR$/source/ti/ti154stack/apps/../../../../source/ti/ti154stack/common/boards/CC13X2_LAUNCHXL/configPkg/linker.cmd

    我认为这是正确的、如果不是因为我不能正确打开 IAR 模板、我就不会深入探讨这个问题。

    或者、它不正确、并且 IAR 项目没有从模板中正确设置。 查看我以前在较旧版本的 IAR (8.50.9)和较旧的 SDK (CC13X2 v4.30)中的设置,这些额外的选项不存在,而是按照您的建议,configPkg 是项目的本地选项:

    在最新的 IAR 编译器(v9.2)和最新的 SDK 5.3中、配置包含额外的选项:

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

    您好!

    我上次对此进行的更新:由于在 SDK 目录中编译 configPkg、我遇到了问题。 我建议这是最新 SDK (v5.30)中 IAR 模板的问题。 我以前没有遇到过此问题(以前的 SDK 为 V4.30)。

    解决方案:我将 app.cfg 局部移到了我的项目中、我在文本编辑器中打开了 IAR 项目、并将所有对 app.cfg 的引用更改为:

    $PROJ_DIR$/app.cfg

    然后是对的所有引用

    COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR$/source/ti/ti154stack/apps/
    ../../../../source/ti/ti154stack/common/boards/CC13X2_LAUNCHXL/configPkg/
    compiler.opt.defs

    至:

    $PROJ_DIR$/configPkg/compiler.opt.defs

    这将导致在本地构建 configPkg。