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.

[参考译文] CC2642R:线程和资源冲突同时运行任务时出现问题

Guru**** 2595805 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1212263/cc2642r-issues-running-tasks-alongside-threads-and-resource-conflicts

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

您好!


我正在尝试将 BLE 功能集成到 TI-RTOS 预先存在的应用程序中。 预先存在的应用程序有大约2-3个分离的 POSIX 线程、这些线程在没有加入的情况下运行。 我将 simple_peripheral TI-RTOS 工程中的应用文件添加到了现有工程中。 然后、我注释掉了其他线程的运行、仅在主文件中构建了 simple_peripheral 任务、并且能够正确运行 simple_peripheral 任务。 但是、当我同时运行所有线程和任务时、simple_peripheral 任务将会运行(我可以告诉它是通过控制台输出执行的)、但无法再在任何蓝牙扫描仪上发现设备。

我假设 simple_peripheral 任务(或为与低频堆栈交互而创建的 ICall 远程任务)和预先存在的线程之间存在某种类型的资源冲突。 我一直在尝试诊断哪些线程可能导致了 ROV 问题、但仍然无法看到出现了什么问题。

我还尝试在任务和线程之间使用 Semaphore_post 和 semaphore_pend 来同时运行线程、但是同样的问题依然存在。

在这种情况下、如何才能将任务与线程结合在一起运行、而不会发生冲突?

CCS 中有哪些工具可用于诊断资源冲突、我该如何使用这些工具?  

提前感谢您的帮助!

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

    您好、John:

    首先、在调试模式下的 CCS 上、您可以使用 ROV 工具(调试模式下"Run"菜单下的9x9黄色方形图标工具)来查看在代码运行期间启用或禁用哪些任务。

    关于您的问题、您是否考虑过提高 SysConfig 文件中启用 ICALL 的最大任务数?  转到 BLE >高级设置> ICALL、然后输入与要添加到项目的任务数相对应的两个值。

    此致、

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

    纪尧姆、您好!

    我一直在使用 ROV 进行调试、可以看到哪些线程和任务被阻止或运行。 我的工程使用的是旧版本 SDK (SDK v3)、因此它未启用 SysConfig、而是使用.cfg 文件。 在.cfg 文件中、我可以看到一个针对最大任务优先级的参数、但是找不到任何针对最大运行 ICALL 任务的参数。 我在其他什么地方可以查找该参数吗?

    再次感谢您的帮助、

    John。

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

    这是我在 ROV 中看到的部分内容:

    最初、我有2个线程在 ble_thread 在信号量上被阻止时运行、然后 ble_thread 运行并且"主线程"被阻止。 下面的 ROV 捕获显示了在 MAIN_Thread 被阻止时运行的 ble_thread 和相关 ICall 线程。

    大约一分钟后、可调试线程解除阻止 MAIN_Thread、进而继续执行该函数并阻止 ble_thread。

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

    您好、John:

    为此、我建议您使用最新版本的 SDK、在新版本中修复了许多错误。

    在下面找到下载链接:

    https://www.ti.com/tool/download/SIMPLELINK-CC13XX-CC26XX-SDK

    对于您的 SDK,您可以尝试搜索此实体:

    DICALL_MAX_NUM_ENTIES

    DICALL_MAX_NUM_TASKTIONS

    而不是那种情况、请告诉我您正在为您的项目使用的确切 SDK 版本?

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

    您在此项目中总共使用了多少个任务?

    最大数量的 ICALL 绝对可以解决您的问题。

    此致、

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

    我能够找到上述实体、这些实体最初具有以下值:

    DICALL_MAX_NUM_ENTIES 6.

    DICALL_MAX_NUM_TASKS 4.

    我是这样增加的:

    DICALL_MAX_NUM_ENTIES 16.

    DICALL_MAX_NUM_TASKS 16.

    尽管任务数量增加,但同样的问题仍然存在。

    下面列出了我的 SDK 版本和依赖项:

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

    我总共运行1个任务和6个线程、这不包括初始化 ICALL 时创建的远程任务

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

    您好、John:

    将其升至16 对于您的项目来说太多了。

    会进行广播吗? 如果您有 BLE 跟踪、它可以帮助很多、您还可以验证射频活动。

    您可以按照本调试指南中所述配置 GPIO 来实现该 目的:

    https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/6.40.00.13/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x-guide/debugging-index.html#debugging-rf-output

    此致、

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

    我将两个参数从16更改为8、并获得了相同的结果、该设备应该在广播、因为它正在运行简单的外设代码、但我在我使用的任何音量扫描仪下都看不到它。 代码正在使用 cc2642芯片的定制硬件上运行、我正在使用 xds110探针 cc2642 Launchpad 进行调试。 如何收集 BLE 跟踪和射频活动?

    谢谢。

    John。

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

    您好、John:

    对于延误的答案、我深表歉意。

    即使您在定制板上运行项目、也可以使用之前发送的 URL 中提供的代码来检查射频活动。 此活动将在 GPIO DIO6和 DIO7 (分别为芯片的引脚11和12)上进行。 只需按照这些步骤操作。 如果您有一个逻辑分析仪、则有助于了解其活动。

    对于 BLE 跟踪、您可以使用蓝牙监听器(如果有)。

    我们需要知道您的设备是否广播良好,您是否更改了一些广播配置? (地址、定向广告等)

    此致、