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.

[参考译文] RTOS/CC2640R2F:异常处理程序导致蓝牙连接问题

Guru**** 2468980 points
Other Parts Discussed in Thread: CC2640R2F, CC2640, CC2541, CC2650RC, CC2650, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/746548/rtos-cc2640r2f-exception-handler-causes-bluetooth-connection-problems

器件型号:CC2640R2F
主题中讨论的其他器件: CC2640SYSBIOSCC2541CC2650RCCC2650UNIFLASH

工具/软件:TI-RTOS

大家好、

我在 CC2640R2F 项目中遇到了一个神秘的问题。 当我添加异常处理程序时、我无法像以前那样轻松地连接到主设备。 主器件是一个 Beelink GT1。

奇怪的是、我有两种类型的 Beelink GT1、我只有其中一种存在问题、即具有32GB 的 B706。 16 GB 的 A912没有问题。

下面是我在 cc2640_r2_csdk.cfg 中添加异常处理程序的方法:

m3Hwi.enableException = false;
m3Hwi.exHookFunc ="&execHandlerHook";

在 main 中:

#include
volatile uintptr_t * excpc = 0;
volatile uintptr_t * excall主 叫= 0;

void execHandlerHook (Hwi_ExcelContext * ctx)

EXPC = ctx->PC;//发生异常的程序计数器
当发生异常时,激发呼叫者= ctx->LR;//链接寄存器

while (2);

是否有人知道导致问题的原因以及如何在不导致问题的情况下使用异常处理程序?

提前感谢、

Sylvain

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

    您好、Sylvain、

    是否可以尝试将 enableExceptions 设置为 true? 您可以在系统控制台中看到什么?

    此外、您选择 while (2)是否有特定的原因?

    查看此 wiki 页面: processors.wiki.ti.com/.../Debugging_Exceptions_With_TI-RTOS

    编辑:也请查看此资源。 http://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_2_30_00_28/docs/blestack/ble_user_guide/html/debugging/ble-index.html#using-ti-rtos-and-rov-to-parse-exceptions

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

    您好、Ammar、感谢您的回答、

    如果我将 enableExceptions 置为 true、我仍然有问题。 系统控制台上没有什么特别之处。

    没有特殊的原因,实际上在我的实际应用程序中,我的异常处理程序中只有 SystemReset()。 在发生异常时、可能有更好的复位方法?

    感谢您提供的链接尽管我将 IAR 用于我的项目、IAR 是否有相同的文档?

    提前感谢、

    Sylvain

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

    有一些有关使用 IAR 查看 TI-RTOS 对象的文档。 请访问 :http://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_2_30_00_28/docs/blestack/ble_user_guide/html/debugging/ble-index.html#using-ti-rtos-and-rov-to-parse-exceptions 和 http://www.ti.com/lit/ug/spruhu8f/spruhu8f.pdf 。

    嗯、我还发现您的其他 Bee-link 设备不会导致同样的问题、这一点很奇怪。

    您要修改哪个项目、在哪个 SDK 上? 我可以尝试使用两个 CC2640R2器件重现问题(这将帮助我们将问题缩小到特定器件)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我真的不明白、它似乎可以与其他所有蓝牙设备正常配合使用。

    我正在使用 simplelink_cc2640r2_sdk_1_50_00_58处理 CC2640R2RC 项目。
    请随时向我更新您的进度。 在我这边、我将继续尝试调试该问题。

    谢谢、

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

    似乎我错了,禁用异常处理程序不能解决问题。 我禁用它后、它只是连接了几次。
    我现在认为 cc2640R2和这个特定的盒子之间存在某种兼容性问题、或者我对遥控器配置错误、但我尝试了很多不同的配置、但没有成功、并且遥控器在所有其他设备上都可以正常工作。
    顺便说一下、CC2541开箱即可正常工作。
    您有什么想法吗?这里的问题可能是什么?

    提前感谢、

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

    能否为 cc2640r2提供一些监听器日志? 它可以帮助我们弄清通过无线方式发送到您的 Beelink 设备的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ammar:

    您将找到两个附带的监听器日志。

    感谢你的帮助。

    Sylvain

    e2e.ti.com/.../connection_5F00_failed2.psd

    e2e.ti.com/.../connection_5F00_failed.psd

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

    感谢您的日志。 我将查看它们并与您一起返回。

    您是否也可以通过任何机会与 B706共享 CC2541的日志?

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

    尊敬的 Ammar:

    是的,这里是:

    e2e.ti.com/.../connection_5F00_success_5F00_cc2541.psd

    谢谢、

    Sylvain

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

    您的设备(遥控器)是主设备还是从设备?

    您能给我指的是 CC2640R2 RC 项目吗? 我似乎找不到它。 有一个 hid_adv_remote_CC2650rc 项目、您所指的是这个项目吗?

    快速查看监听器日志后、我看到设备未交换配对信息。 您实施的是哪种配对方法(仅工作方式、数字比较等)? 您是否正在使用 LE 安全连接?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ammar:

     

    要回答您的所有问题:

    -遥控器是从设备

    项目位于 CC2640R2示例包中,它是 CC2640R2RC 项目:  

     下面是我的配置:

    // MIPTM 密码的长度
    #define Passed_LEN 0

    //缺省 GAP 配对模式
    #define DEFAULT_Pairing_mode GAPBOND_Pairing_MODE_INITIATE

    //默认 MIPTM 模式(配对时需要密码或 OOB)
    #define DEFAULT_MITM_MODE 错误

    //默认绑定模式,对绑定为真
    #define default_bonding_mode true

    //缺省间隙键合 I/O 功能
    #define DEFAULT_IO_Capabilities GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT

    所有其他参数都保持其默认值。

    我希望它能为您提供帮助。

    Sylvain

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

    是否为您的 Beelink 器件修改了 CC2650项目?

    当将项目移植到 CC2640R2时、我注意到 default_enable_update_request 从等待参数启动更改为默认值。 尝试在 CC2640R2项目中将其更改为 GAPROLE_LINK_PARAM_UPDATE_INITIATE_MAL_PART_PARAMS、并让我知道您看到的内容。

    与此同时,我将向我的同事展示这一点,我们将努力寻求解决办法。 我可能会在感恩节休息后的下一周继续跟进。 很抱歉耽误你的时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ammar:

    是的、我修改了 CC2640R2、以适应我的硬件和用例。 但我认为我没有修改配对过程。

    我尝试了您的更改、但未解决问题。

    Sylvain

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

    很抱歉耽误你的时间。 我正在寻求同事的协助,以确定我们下一步应该采取哪些措施来缩小联系问题。

    请随时向我报告您在这方面取得的任何进展。 我很快会再回来的。

    感谢您的耐心等待。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否尝试使用 Uniflash 完全擦除 CC2640R2、然后使用软件重新刷写器件? 然后、尝试连接 Beelink 设备。 完全擦除 CC2640R2上的闪存将擦除器件上先前存储的任何绑定信息。

    如果这不起作用、我接下来要尝试运行开箱即用的简单外设示例、并尝试使用 Beelink 器件连接到该示例。

    如果您愿意、请向我发送一份包含您的硬件配置和软件的 PM、以便我们深入了解。 如果可能、我想尝试在我的结尾重复出现该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ammar:

    似乎我发现了您现在可以保留研究的问题。

    显然、问题出在主端、Android TV 版本的更新似乎解决了问题。

    我将继续在我的一侧进行测试、如果一切正常、我将关闭此帖子。

    非常感谢您的支持。

    此致、

    Sylvain

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

    很抱歉、建议您将软件更新为最新版本(两端)。

    我现在将关闭该线程。 如果您有任何后续问题、请在下面发帖。 如果该线程锁定、只需点击"Ask a similar question"按钮并创建一个新线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Ammar:

    显然、我的客户无法更新他的 Android 系统。
    我们应该尝试在从器件端找到解决方案。
    如果我现在总结一下这个问题、CC2640R2似乎是与 Android 版本7.1.2安全补丁5上的 Beelink GT1 B706 (BLE/Wifi 芯片是 AP6335)的兼容性问题、但2017年8月1日的安全补丁解决了这一问题
    我可以重现简单 BLE 外设项目的问题(我只能将 GAPBOND_IO_CAP_DISPLAY_ONLY 更改为 GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT)

    此更新安全修补程序解决了蓝牙上的此问题,显然是:
    CVE-2018-5383

    您在从器件侧看到了任何解决方案吗?

    谢谢、

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

    我们必须首先确定问题的根本原因、因为如果问题与 Android 软件严格相关、则可能无法解决问题。 为此、您能否提供具有 B706的 CC2640R2监听器日志? 请提供一个日志、其中包含较旧的 Android 版本、然后提供另一个日志、其中更新的 Android 版本解决了该问题。

    请注意、我们可能需要更详细的监听器日志、以确定问题是无线问题还是 Android 版本问题。 除了我们提供的数据包监听器软件外、这可能还需要其他监听器。

    如果问题是通过无线方式出现的、我们可能能够提供解决方法。 如果使用的是 Android 版本、则我们无法在从器件端执行任何操作来解决该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sylvain、

    几天没有听到过您的声音。 我现在要关闭这个线程。 如果您有更新、只需发布回复、该主题将重新打开。

    如果线程锁定、您可以发布相关问题并启动新线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ammar:

     

    很抱歉、我错过了您的最后一个答案、似乎问题也重现在 AndroidTV 8上。

     

    如何向您发送更详细的监听器日志? 我只有数据包监听器用于记录。

     

    Sylvain

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

    我向您发送了一条消息、以进一步讨论此问题。 解决问题后、我将使用问题的结果更新该主题。