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.

[参考译文] BOOSTXL-CC2650MA:在自定义任务中调用 SerialPortService_SetParameter()时,iCall_abort 置位

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1041727/boostxl-cc2650ma-icall_abort-assert-when-calling-serialportservice_setparameter-in-custom-task

器件型号:BOOSTXL-CC2650MA
Thread 中讨论的其他器件:CC2650

CCS:10.4

XDC:tirtos_cc13xx_cc26xx_2_20_01_08

SDK:BLE_SDK_2_02_01_18

编译器:TI-CGT-ARM_5.2.6

我现在(仍然)正在使用 Github 的更新串行端口配置文件示例、我将对其进行基本修改、使其在 UART 和 BLE 接口之间具有一层行为。  在该示例的原始行为中,通过对 SerialPortService_SetParameter()的调用,在 UART 上接收到的字符将传递给 BLE。

如果我尝试以相同的方式从另一个任务写入属性,则此调用最终会调用 iCall_abort(),并断言自旋锁。  在我尝试为 BOOSTXL-C2650MA 进行开发时、我还为 CC2650_LAUNCHXL 进行了配置和编译、并在 Launchpad (项目的原始配置)上运行、结果相同。  我能够确定的最好的一点是我认为 iCall_abort()正在从堆栈中调用,但我不清楚如何在堆栈中进行调试。

我制作了一个简化的项目、任务是每秒重复一次字母表的每一个字母、并始终重复出现问题。  如果可能、我会将存档附加到该 TT。

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

    e2e.ti.com/.../spp_5F00_setparam_5F00_assert_5F00_issue.zip

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

    抱歉;XDC 工具是:xdctools_3_32_00_06_core、但这是原始帖子中的 TI-RTOS 版本。

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

    尊敬的 James:

    您是否能够设置断点、切换 GPIO/LED 或修改状态变量来隔离对  iCall_abort()的调用? 这就是我最初将如何解决问题以隔离问题的方法。

    最棒的

    不需要

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

    我找不到在应用程序项目中触发断点的 iCall_abort()实例;因此我认为它发生在堆栈项目中。 我想我尝试调试堆栈项目、但这阻止了应用程序正常运行。  切换 LED 应该是我的下一个策略。

    在我看来、我没有向 iCall 注册任务(在我附加的存档中也是如此)、但当我尝试时、我发现自己在某种类型的 app_exit 函数中。

    我刚才意识到的是、我在不同的初始化函数中注册函数、也许我应该在实际任务中无限循环之前注册函数。  如果调用 iCall_registerApp()的函数退出,会发生什么情况?

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

    尊敬的 James:

    我很高兴您能取得一些进展!

    我还建议按照本指南中的步骤为您的应用程序开发任务、作为另一个资源。

    dev.ti.com/.../creating-a-custom-bluetooth-low-energy-application.html

    [引用 userid="491177" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1041727/boostxl-cc2650ma-icall_abort-assert-when-calling-serialportservice_setparameter-in-custom-task/3852634 #3852634"]如果调用 iCall_registerApp()的函数退出,会发生什么情况?

    我现在没有答案、但我将在内部要求您查看。

    最棒的

    不需要

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

    好消息是、在我附加的项目中、当我在任务函数顶部添加 iCall 注册时、它的行为符合预期、并且按照您提供的链接中的指示递增 ICALL_MAX_NUM_TASK任务、ICALL_MAX_NUM_ENTRIES 和 OSAL_MAX_NUM_PROXY 任务。 注:与该页上的警告相反,ICALL_MAX_NUM_TESHOTICS 在增量前后不相等(OSAL_MAX_NUM_PROXY 任务+ 1),但它不会因此中止(虽然可能不应该这样做--措辞有点含糊)。

    但是、在将其应用于我的主项目时、当链接器无法解决包含我希望添加的附加任务的应用程序源文件中的三个函数时、该项目重新出现了一个我认为我要解决的问题。  每个都以某种方式松散地与 iCall 关联、但并非始终如此。  可能是不同 TT 的另一个问题。

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

    听起来不错。 是的、我会针对不同的问题打开不同的 TT。

    此外,我对“ 调用 iCall_registerApp()的函数在内部退出时会发生什么情况”的回答是“成功,或者没有足够的资源来注册应用程序。 它会继续、但如果您没有任何资源、您会希望在真正继续之前了解这一点。"