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.

[参考译文] SIMPLELINK-LOWPOWER-SDK:ResetISR vs resetISR vs 无覆盖

Guru**** 1818760 points
Other Parts Discussed in Thread: CC2340R5, SYSCONFIG, CC2340R2
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1420286/simplelink-lowpower-sdk-resetisr-vs-resetisr-vs-no-override

器件型号:SIMPLELINK-LOWPOWER-SDK
主题中讨论的其他器件:CC2340R5SysConfigCC2340R2

工具与软件:

我使用 SysConfig 将我的代码从 CC2340R2开发平台(R2 RGE 封装)迁移到 CC2340R5开发平台(R5 RKP 封装)。

它不再构建。

我注意到 CC23x0r5.cmd (未链接)与 CC23x0r2.cmd (正确构建)在这一行中不同:

/*覆盖默认入口点。                                             */
-- entry_point 重新设置 ISR

我可以通过重命名为 resetISR 来链接程序(请注意小写的 r)。  我的代码看起来运行正常。  它可能只驱动高一个引脚、但确实非常好。

我不知道 R2构建是否可行、因为我没有电路板对其进行测试。  起初、我错误地选择了这个板。

如果有人知道、为什么一个电路板会覆盖程序入口点、而另一个电路板不会覆盖?  据我所知、这两个电路板和器件非常相似。  因此、我不希望使用不同的启动方案。

无论如何、覆盖入口点不应与硬件相关...

什么是正确的、什么是不正确的?

注意:使用 Simplelink 低功耗 SDK 8.10和 CCS v12.8

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

    您好!

    您是否确保在迁移过程中遵循此注释?  https://dev.ti.com/tirex/content/simplelink_lowpower_f3_sdk_8_10_01_02/docs/ble5stack/ble_user_guide/html/ble-stack-5.x-guide/porting-guides/cc2340r5_to_cc2340r21.html

    注释指出:

    ```μ A

    如果迁移后生成了新的链接器命令文件( cc23x0r2.cmd 在工程文件中命名)、请确保将其从编译中排除(或从工程文件中消除)、以便 lpf3_app_freertos.cmd 在编译期间使用原始文件。

    ```μ A

    从 CC2340R2迁移到 CC2340R5时、也应遵循此注意事项(例外情况是、该过程的文件名现在为 cc23x0r5.cmd)。

    有关更多背景信息、在 SDK 中有2个版本的"startup":

    1. C:\ti\ \kernel\freertos\startup\startup_cc23x0r5_ticlang.c
    2. C:\ti\ \source\ti\devices\cc23x0r2\startup_files\startup_ticlang.c

    默认情况下、FreeRTOS SDK 示例拉入版本1、其名称为 resetIsr。

    但是、迁移步骤假定启动版本2…… 因此迁移指南中有额外说明。

    谢谢!
    Toby

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

    我本来 以为这适用于我、尤其是因为我根本不使用 FreeRTOS。

    您在#2中引用的文件包含一个 ResetISR()函数。  R5也需要相同的文件。  由于链接器抱怨说、这个文件可能不是构建的一部分。

    但是#1中的文件包含一个 resetISR()、由于当我修改.cmd 中的函数名称时它的构建是正常的、因此必须是这个文件是构建的一部分。

    但我不使用 FreeRTOS。  为什么是在 FreeRTOS 程序中构建?

    奇怪的是、没有?

    我正在从头开始构建一个 NoRTOS 项目、以便了解工作原理。  很明显发现了很多!

    再次感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="52618" url="~/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1420286/simplelink-lowpower-sdk-resetisr-vs-resetisr-vs-no-override/5442823 #5442823"]

    但是#1中的文件包含一个 resetISR()、由于当我修改.cmd 中的函数名称时它的构建是正常的、因此必须是这个文件是构建的一部分。

    但我不使用 FreeRTOS。  为什么是在 FreeRTOS 程序中构建?

    [报价]

    此处还有#1的 nortos 版本: c:\ti\ \kernel_nortos\startup\startup_cc23x0r5_ticlang.c

    这个还包含 resetISR。

    我猜测* RTOS 版本的启动会被拉入(resetIsr)、而 SysConfig 将假设不受 RTOS 约束的启动(ResetIsr)。

    但是、您提出了一个很好的观点、也许文档应该按以下方式进行更新:

    当前版本 候选人修订版本
    如果迁移后生成了新的链接器命令文件( cc23x0r2.cmd 在工程文件中命名)、请确保将其从编译中排除(或从工程文件中消除)、以便 lpf3_app_freertos.cmd 在编译期间使用原始文件。 一般来说、如果迁移后生成了新的链接器命令 cc23x0r*.cmd 文件(在工程文件中命名)、请确保将其排除在编译之外(或从工程文件中消除)、以便 lpf3*.cmd 在编译期间使用工程的原始文件。

    您认为此修订版本会更清晰吗?

    我认为这其实是一个临时说明、当有更正确处理链接器文件(*。cmd)的新版本的 SysConfig 和 SDK 时、应将其删除。

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

    好的、SysConfig 是不可知的、因此调用 ResetISR()。

    则意味着 nortos 被视为 RTOS (就像 FreeRTOS 一样具有 resetISR)。  电源小知识。

    此外、我敢断定、resetISR 实际上是从 nortos 生成的、而不是 FreeRTOS。

    这一点现在更清楚了。

    尽管如此、SysConfig 仍在其生成的 genlibs 文件中调用 nortos 文件、但在"its".cmd 文件中指示 ResetISR()。

    这是一个错误、对吗?  这将是注释的内容吗?    你的修改建议,我觉得这是一个改进,但我不知道什么"lpf3"是指...  

    至于在 cc23x0r2.cmd 中注释掉的--entry_point 行、我想知道它来自哪里。  我删除了文件、再次进行了迁移、现在创建的文件与 cc23x0r5.cmd 相同(但用于存储器内容)。

    我为 R2创建了一个新的空白项目、但也未注释掉该行。

    当然我没有评论过这一行是偶然的!  它在我眼前脱颖而出!

    这个人可能会一直得不到解答...