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.

[参考译文] CC2640R2F:多角色项目问题

Guru**** 2589300 points
Other Parts Discussed in Thread: CC2640R2F, SYSBIOS

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/604602/cc2640r2f-multi-role-project-issue

器件型号:CC2640R2F
Thread 中讨论的其他器件: SYSBIOS

您好!

我的客户在使用 CC2640R2F 的 BLE 堆栈 v3的多角色项目中遇到两个问题。

A.

他们希望仅使用外设角色、并且能够同时被更多器件连接。 但是、在 multi.c 函数中、linkDB_NumConns 返回数字2。 是否可以扩大这个数字(例如、扩大堆内存大小?)

 

B.

它们可以通过2个中间设备(移动电话)连接到外围设备。 但是、它们会在大约1分钟后自动断开。 是否有强制断开的计时器? 我尝试跟踪断开连接的发起者、但我找到了位置

typedef 结构

 OSAL_EVENT_HDR_t HDR;  //!<@参考 GAP_MSG_EVENT 和 STATUS

 uint8操作码;           //!<@ref gap_link_terminated_event

 uint16 connectionHandle;//!<连接句柄

 uint8原因;           //!< LL 的终止原因、在 ll.h 中定义

} gapTerminateLinkEvent_t;

 

 

是它们获得的原因= LL_STATUS_ERROR_LL_TIMEOUT_PEER

为什么超时? 它在30秒后发生 CCA。 即使它们与器件交互-写入/读取特征。

 

来自堆栈的消息

GAP_LINK_TERMINATED_EVENT

 

在 gapRole_processGAPMsg 中 进行处理。

感谢您的帮助、

此致、

Alberto

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    让我添加更多详细信息、以便更好地实现目标。

    1)他们正在测试 BLE5项目:\ble5stack\multi_role
    2)出于测试目的、他们使用的是 Google Play 中的 BLE 扫描仪移动应用(BLE 版本4.0)。
    3) 3)如果他们尝试添加由蓝牙开发者工作室生成的服务、则会收到错误:HAL_ASSERT_CAUSE_ICALL_TIMEOUT。 我不确定这是否与主要问题有关、但我认为在这种情况下报告是相关的。
    4)同样、对于在 BDS 中生成的这些服务、IAR 项目中的编译器无法找到 icall_api.h 头文件。 这是来自从 BDS 生成的源代码的行。
    #ifdef ICALL_Lite
    # include "iCall_API.h"//仅适用于3.x 栈版本、因此请使用 ifdef。
    #endif

    请提供反馈、因为问题现在很紧急。
    谢谢、
    Alberto
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Alberto、

    a.他们是否更改了编译器预定义? MAX_NUM_BLE_CONns=2 (转至 Options -> Runtime Checking -> C/C++ Compiler -> Defined Symbols)。

    b. LL_STATUS_ERROR_LL_TIMEOUT_PEER 通常表示对等设备(此处为电话)已超时。 您能否发布设备连接和断开连接的监听器日志? 它将有助于分析发生的情况。

    此外、ble5堆栈的 TI BDS 插件尚未更新。 这可能是他们在使用 BDS 生成的服务时遇到错误的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    玛丽、

    感谢您帮助我们解决问题。

    好的、如果 BDS 未针对 BLE5进行更新、则不会在此继续。

    但是、他们能否继续使用适用于 BLE v4.2的 BDS?

    实际上、使用 BLE v4.2、他们能够构建项目、可以看到器件广播、但在尝试 连接到器件后、堆栈的控制器层似乎冻结。

    即使在为 Event_pend 函数设置断点时、它也不会在尝试连接后唤醒这部分代码–我猜控制器不会发送消息

    静态空 multi_role_taskFxn (UARg a0、UARg A1)

     //初始化应用程序

     multi_role_init();

     //应用程序主循环

     对于(;)

     {

      uint32_t 事件;

      //等待与调用线程关联的事件被发布。

      //请注意,与线程关联的事件在时发布

      //消息在线程的消息接收队列中排队

      事件= Event_pend (syncEvent、Event_ID_none、MR_All_Events、

                iCall_TIMEOUT_FOREVER);

    谢谢、

    Alberto

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

    玛丽、

    另外、请找到数据包监听器屏幕截图、这些截图可帮助您更好地了解问题的根源。

    然后一直发送该数据包(0x0C LL_VERSION_IND)。 我想它在这个数据包上冻结…

    请告诉我您的反馈。

    谢谢、此致、

    Alberto

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

    它们运行在什么硬件上? 他们是否验证了 RTC 时序是否准确?

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

    客户正在使用 CC2640R2F LaunchPad 进行测试、并使用 BTv4.2测试 SDKv3的多角色项目。
    我认为这将有助于更严格地限制软件方面的评估。

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

    这肯定会产生一点不确定性。

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

    可以检查一些调试功能。 请访问 dev.ti.com/.../ble-debugging.html

    当它被冻结并且他们暂停执行以四处查看时,我想查看 BIOS ->扫描错误对话框以及任务->详细选项卡中报告的内容。 如果有一个异常、最好也检查 Hwi->异常。 (文档章节对此进行了进一步说明)。

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

    您好、Aslak、

    Alberto 请我继续进行这一讨论。 我叫 Peter Langer、我是他的客户、在 Honeywell 工作、负责 BLE 的开发。

    我已经完成了您的建议:
    A.
    BIOS -> Scan for errors (扫描错误):
    TI.SYSBIOS.family.ARM.cc26xx.Timer 器件(0x20000208)不适用
    在 View init 代码:"c:/ti/xdctools_3_50_00_10_core/packages/xdc/rov/StructureDecoder.xs "中捕获异常、行547:java.lang.exception:target memory read failed at address:0x40092000、length:20


    B.
    任务->详细:
    目标存储器读取在地址0x20001230、长度:76处失败
    根据应用的段映射、此读取位于有效地址、但 DebugServer 存储器读取失败。

    C.
    Hwi->异常:
    目标存储器读取在地址0x200010f0、长度:24处失败
    根据应用的段映射、此读取位于有效地址、但 DebugServer 存储器读取失败。

    我现在如何继续?
    非常值得支持!
    Peter

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

    尊敬的 Peter:

    嗯、这不是理想的。 ROV 工具本身不起作用。 或者调试连接由于某种原因失败。

    在执行此操作之前、您是否停止/中断了执行?
    您能在这样的情况下查看寄存器或存储器吗?
    如果您尝试在*崩溃之前*查看这些内容,它是否仍然会说内存读取失败?

    您使用的是哪种 IDE? IAR 或 CCS? 以及哪个版本?

    此外、我还看到提到了 BDS 生成的服务。 在添加这些服务之前、我是否可以认为 multi_role 项目按预期工作?

    BDS 插件不输出多角色的应用程序示例;您是如何添加和使用生成的服务的?

    此致、
    Aslak

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

    您好、Aslak、

    很抱歉、执行这些步骤之前、DoD 未停止调试器。

    现在我看不到异常...

    这看起来很有趣:

    任务->详细:

    我使用的是 IAR 7.80.4。 在我写信给 Alberto 时、我使用的是 BLE v4.2的多卷项目。 没有修改就可以用手机连接了、但是在 CCA 之后自动断开了。 30秒。 在我删除周期性计时器后、我获得了多达2个器件的稳定连接。

    然后、我使用 BDS 生成了服务代码。 我为这些服务获取了文件、并将其添加到 IAR 项目中。 然后、我从 BDS 生成的简单 periperal 文件中复制了一些代码部分、并将它们粘贴到多卷项目中。

    在这种状态下、我遇到了一些困难。 我可能会建议我做了一些错误、可能是这样。 但是、无论如何、在不更改代码行的情况下、我以前使用 multiroll 工程断开了连接。 因此、我建议 SDK 本身出现问题...

    Thx。 寻求帮助!

    Thx。

    Peter