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**** 2334830 points
Other Parts Discussed in Thread: SYSCONFIG, SYSBIOS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1442114/cc2642r-device-hang-during-connection-parameter-negotiation

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

工具与软件:

我正在使用 CC2642通信器外设应用、并且观察到器件 在 建立链路后挂起或复位。  

以下是重现的方法:

1、使用 simple peripheral 示例应用并添加了手动断开10秒后的连接

2.使用自动点击移动应用程序每3xx 毫秒重复连接和断开(我使用314ms),并在三星 Galaxy Note8 (Android 9)上运行 NRF Connect 移动应用程序

3.经过一段时间后(3分钟或20分钟),它是随机的,设备会挂起。  

SimpleLink SDK 版本:5.20.0.52、SysConfig:1.8.2、我认为最新的 SDK 没有区别。  

我在项目期间发现了它(已投放市场)、并将其与您的基本示例进行了复制。  

我怀疑 SDK 或堆栈中的连接参数更新过程、在外设回复连接参数之前或之后会出现一些问题。

如果自动连接和断开连接时间足够长(例如1秒)、看起来没有问题(无挂起或复位)。  

应用程序不能为客户提供安全服务是有风险的。 请告诉我根本原因以及如何解决。    

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

    您好!

    感谢您联系我们。 除了在10秒计时器后添加手动断开连接之外、是否对 simple_peripheral 项目进行了任何修改? 您是否能够尝试在最新的 SDK 上重现此问题? 在5.20版本和最新版本之间进行了许多改进、因此可能已经解决了此问题。 当器件挂起时、您是否能够在调试模式下通过暂停执行来报告调用堆栈是什么? 如果使用不同的智能手机、是否会出现此行为?

    此致、

    1月

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

    您好、Jan:

    与最新版 SDK 相同。 我问这个问题的主要原因是、该器件在连接后随机地在现场挂起、这意味着没有特定的电话或中央设备、并且可以按照我提到的方式重现问题。 我无法找到问题所在的确切位置。 您可以 查看应用程序(自动点击-我使用了 Clickmate 和 BLE 应用程序- Nordic NRF Connect)、我也找不到 Nordic BLE 的任何问题、并且已经使用过其他供应商的 BLE 芯片、但这是第一次只能通过您的 BLE 芯片看到这种奇怪的行为。  

    手动断开连接是指 带有计时器的 GAP_LINK_REQUITED_EVENT。  

    如果需要、我可以共享源代码。  

    当应用程序未发送 GAP_UpdateLinkParamReqReply(&rs)时、不会出现问题。

    此致、

    Jungin

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

    尊敬的 Jungin:

    我懂了。 在对 SDK 示例进行的任何更改都会导致发生此行为的地方? 如果是、那么您可以共享它们吗? 如果您能够稍微可靠地重现该行为、那么您是否能够将调试器作为正在运行的目标连接到器件(请参阅下面链接的文档)、或者在重现时以调试模式运行器件? 发生该行为后、暂停执行并共享调用堆栈的屏幕截图。 这将非常有助于理解正在发生的情况以及我们如何实现预期的行为。

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/ble5stack/ble_user_guide/html/ble-stack-5.x-guide/debugging-index.html#connect-the-debugger-to-a-running-target

    此致、

    1月

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

    您好、Jan:

    附加了调用栈、控制台调试日志和源文件的屏幕截图、打印参数更新回复后没有任何进展 。

    e2e.ti.com/.../1207.simple_5F00_peripheral_5F00_oad_5F00_offchip.c

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

    您好!

    感谢您的分享。 我将尝试在我这边重现此情况、但同时你可以确认、如果你重复暂停和继续执行、它显示一样的调用堆栈吗? 似乎项目被卡住了处理或等待一个计时器超时。

    此致、

    1月

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

    您好!

    不、调用堆栈运行良好时看起来很好。  

    不管怎样、它经常随机发生。 我看到的只是器件打印连接的调试消息、而没有更多响应。  

    我以前在其他 BLE 芯片上从未见过这种问题。 它是已知问题还是首次获得?  

    此致、

    Jungin

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

    尊敬的 Jungin:

    这是我第一次看到这种行为。 我试图再现它在我的一边,但无法看到相同的行为。 在我这边、项目一直在运行。 我使用了您建议的应用程序、频率设置如下:

    重复间隔:314ms

    单击持续时间:100ms

    我使用的图像已附加。 您能否在侧面尝试提供的图像、并检查是否出现了此行为?

    此致、

    1月

    e2e.ti.com/.../simple_5F00_peripheral_5F00_CC26X2R1_5F00_LAUNCHXL_5F00_tirtos7_5F00_ticlang.out

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

    您好、Jan:

    您是否使用了我随附的源文件?  

    您的映像看起来没有断开功能、没有调试消息、我看不到正确的行为。  

    请使用我共享的文件、或添加断开计时器、然后再次检查。

    此致、

    Jungin

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

    尊敬的 Jungin:

    我使用了未修改的 simple_peripheral。 您能否共享您为启用断开计时器而添加的代码片段? 这将有助于在我这边调试和重现问题。

    此致、

    1月

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

    您好、Jan:

    7天前、我已经附加了源代码。  1207.simple_peripheral_oad_offchip.c 

    此致、

    Jungin

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

    尊敬的 Jungin:

    你是对的。 抱歉。 由于图像问题、我没有看到它。 我已将该文件添加到工程中、出现有关 Uartlog.h 文件不存在的错误。 我对 include 进行了注释、现在我看到了许多与定义和标识符相关的错误:

    您能否尝试将您的项目从 CCS 导出为存档并与我共享整个项目? 您应该能够将 zip 附加到对该消息的回复中。

    此致、

    1月

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

    您好、Jan:

    附加整个项目文件。  

    CCS 版本: 10.3.0.00007

    e2e.ti.com/.../simple_5F00_peripheral_5F00_oad_5F00_offchip_5F00_CC26X2R1_5F00_LAUNCHXL_5F00_tirtos_5F00_ccs.zip

    此致、

    Jungin

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

    尊敬的 Jungin:

    我真的很抱歉耽误了时间。 您的最新项目显示的错误较少、但仍然可以看到:

    表示未定义 SIMPLEPROFILE_CHAR1_LEN。 我想正在发生的情况是、定义放置在 simple_gatt_profile.c 或.h 中 默认情况下、该文件作为项目中的链接资源提供。 这意味着该文件几乎从 SDK 中的副本中获取、进行的任何修改都会影响 SDK 中的副本、但不会在工程中创建本地修改副本。 我的文件副本没有您所做的修改。 我现在假设 define 应该等于2。 添加等于2的#define 可以编译项目、而且我看到测试广播。 但是、我没有看到 UART 输出。 我已检查 UART 的默认引脚(DIO2和 DIO3)以及项目中使用的引脚(DIO26和 DIO27)、但我没有看到任何输出。 不管怎样、我继续进行测试。 使用314ms 作为重复间隔、并让其运行20分钟。 由于没有看到任何输出、我只是让测试运行20分钟。 后来,我看不到项目广告,所以我似乎是重复的行为。 我有几个问题。

    您看到的输出是使用 Launchpad 还是定制电路板? 您能否在 LaunchPad 上复制输出? 如果是、那么您能否共享已配置为在 LaunchPad 上运行该项目并启用输出的项目?

    此致、

    1月

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

    您好、Jan:

    很高兴听到您复制了它。 它随机发生、有时在5分钟内或1小时左右。 我正在对公司产品使用定制电路板、但现在没有 launchpad。  

    我只是使用了您的默认示例项目来测试该行为、您可以使用它、然后添加不在示例项目中但我们产品中需要的函数的断开功能、也需要调试 打印函数。  

    是否存在硬件问题?

    我怀疑您的堆栈或 SDK 无法在连接或连接参数更新过程中正确处理某些计时器内部。 如果连接/断开时间(测试时间为3xxms)足够长、就像几秒钟内应用运行良好、则可能是挂起的可能性很低或没有发生。

    此致、

    Jungin

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

    尊敬的 Jungin:

    我懂了。 感谢您的澄清! 由于是在 LaunchPad 和您的定制硬件上发生的、因此我认为问题不是由硬件引起的。 这是出于好奇心、如果您禁用 UART。 该行为是否仍然发生?

    此致、

    1月

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

    您好、Jan:

    是的、我认为不管 UART 是什么情况都会发生、我在连接/断开过程前后删除了调试打印件、但仍然看到这个问题。  

    此致、

    Jungin

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

    尊敬的 Jungin:

    明白了、感谢您测试它。 我想再检查两件事。 您可以重新运行测试并分享以下内容吗?

    1.行为发生前后的堆/堆栈/内存使用情况是什么? 调试指南的以下部分介绍了具体的操作方法: https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/ble5stack/ble_user_guide/html/ble-stack-5.x-guide/debugging-index.html#debugging-common-heap-issues

    我想堆可能会在建立的链路上填充的速度快于在断开连接时清空的速度、这可能会导致奇怪的行为。

    2.您是否可以尝试将地址模式更改为 RPA (假设它是公共地址)?

    此致、

    1月

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

    您好、Jan:

    您能否检查附加的图像? 我不确定查看堆是否正确。  

    如果是堆问题、您的解决方案是什么? 您的任务是找到根本原因并提供解决问题的方法。 我提供了所有源代码和信息。 并告诉我需要更改代码或替换 SDK 中的一些文件的内容。  

    我们不使用 RPA、也没有计划。  

    对于您的客户和我们的业务来说、这是非常关键的问题。  

    此致、

    Jungin

    之后:

      

    之前:

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

    您好!

    感谢您的观看。 对于此问题可能造成的任何令人沮丧或不便、我深表歉意。 我认为问题的原因在于重复取消连接请求以及断开连接计时器。 您能否提供更多信息、说明为什么在 LINK_Established 中启动断开连接计时器? 我想、可能会将其移至 GAP_LINK_PARAM_UPDATE_EVENT 或 GAP_UPDATE_LINK_PARAM_REQ_EVENT 可能会更好。

    此致、

    1月

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

    您好、Jan:

    将断开连接计时器移动到 GAP_LINK_PARAM_UPDATE_EVENT 时没有区别。 我不希望您能提供或缓解措施、但您可以提供全面安全的解决方案。  

    实际上、一些中央器件会尝试连接到我们的器件、现在它挂起或复位、我不知道为什么以及什么中央器件会连接、但我们的器件具有外设角色、不应该发生这种情况。 我认为在没有重复连接和断开的情况下会发生这种情况。 当我监控未知中央设备或应用尝试连接的次数时、它是一天中的一个或多次、如果运气不好、则会死机。  

    该测试用例可以快速重现现场发生的情况。 我尝试过与 Nordic BLE 相同的测试、但它运行良好、没有任何问题。  

    是不是与您的工程师进行交流? 能否派遣 TI 工程师到韩国参加我们的培训?  

    此致、

    Jungin

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

    尊敬的 Jungin:

    感谢您发送编修。 我想我们已经有足够的信息来与我们的研发工程师讨论这个问题、以便获取他们的想法。 对此造成的不便、我深表歉意。 我将向他们提交 TT、并通过电子邮件进行跟进。 我希望他们会尽快作出回应、但可能会因假期而出现延误。 我会尽快为您提供最新信息。 如果您在星期五之前没有收到我的回复、请回复此主题、我将分享当时的最新状态。

    此致、

    1月

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

    您好、Jan:

    感谢您的大力支持、我期待很快收到一个很好的结果。

    此致、

    Jungin

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

    尊敬的 Jungin:

    我们遵循一些导联。 R&D 认为断开连接计时器可能会导致堆栈尝试在已不存在且处理不当的连接句柄上执行断开连接。 他们对如何解决此问题有一些想法、但想在运行最新 SDK 的项目上测试此问题。 您之前提到过、您能够在7.41上重现此示例。 您能否与我分享导出的项目以便研发人员和我可以测试他们建议的解决方法?

    此致、

    1月

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

    您好、Jan:

    我们的应用程序在建立连接后使用15秒计时器断开连接。我观察到、日志中的连接建立时间和复位时间(应用程序重启时间)之间的时间差约为 12秒。 这意味着我们不会发生断开、而是断开功能造成的。  

    例如、在 Tera Term 应用程序的以下日志中、复位之前的最后一个日志时间为17:27:23、但应用程序启动时间为17:27:35。

    [星期二9月10日17:27:23.555 2024]#003457 [ 44565.121 ] Mac:49 AB 0E 90 B3 5E   -->已连接的中央 MAC 地址
    [星期二9月10日17:27:35.4292024] #000001 [ 0.000]
    [周二9月10日17:27:35.429 2024] #000002 [ 0.000]调谐! t APP 启动           -->重置和应用程序已启动
    [星期二9月10日17:27:35.445 2024] #000003 [ 0.062 ]我的 Mac: 74 D2 85 F5 13 5B.

    当我在 GAP_UPDATE_LINK_PARAM_REQ_EVENT 事件中注释掉//void GAP_UpdateLinkParamReqReply (&R sp)时、它未复位、但 应用和应用之间发生断开超时(0x08)、因此它不是解决方案。

    如果我使用 rs.accepted = false;当 pReq -> req.intervalMin 小于某个值(如20ms)时、复位频率会降低、但仍然出现。 这就是我怀疑您的堆栈中存在连接参数协商过程的原因。   

    您可以尝试更改连接参数、时间值、响应等的所有配置、查看发生的情况和差异、更好的方法是重置应用程序并查看所有事件的时间戳。

    我们没有更新 SDK 版本的计划、因为很多产品都在现场、改变源代码和重新评估都是一项巨大的工作、没有人知道副作用。 这会给我们的业务带来风险。  

    此致、

    Jungin

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

    尊敬的 Jungin:

    我们正努力在最新的7.41 SDK 上重现此问题。 您在前面提到过、您能够在最新的 SDK 上看到这些内容。 您能否共享该项目? 这样、我们就可以继续进行调试。 我们知道您无法迁移到最新的 SDK。 我们希望、如果我们能够弄清楚如何修复7.41 SDK 上的行为、那么我们也可以提供一种在您的 SDK 上修补该 SDK 的方法。 我使用了7.41版的 simple_peripheral 项目、仅修改了 simple_peripheral.c 文件(附加了文件)

    e2e.ti.com/.../28130.simple_5F00_peripheral.c

    是否需要进行任何其他更改? 如果您可以提供已经在7.41上表现出行为的项目、那么这会大大加快调试速度。

    此致、

    1月

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

    您好、Jan:

    让我来问一下、如果最新的 SDK 没有出现问题、5.x 和7.x 版本之间的根本原因是什么、并且您附加的应用程序代码可与旧 SDK 正常运行? 是应用代码还是 SDK 有问题? 我需要一个简单的基于片外设 OAD 的解决方案。 需要您的反馈、具体问题是什么以及如何解决。

    几个月前、我尝试在我们的产品应用中使用最新的 SDK、但现在仍然很快发生、然后我删除了所有 CCS、SDK、XDC 等、因为它把旧的安装和我们的产品应用弄乱了。 我不得不重新安装所有的,这是真的很糟糕的经验和浪费太多的时间。  

    此致、

    Jungin

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

    尊敬的 Jungin:

    在5.x 和7.x SDK 发布之间、许多错误修复、改进和特性已包含在 SDK 中。 您所看到的行为可能是偶然在其中一个发行版本中修复的。 我没有在早期的 SDK 上测试完全相同的代码、但想与您共享、以防您在尝试重现此行为的过程中发现缺陷、或者您在使用提供的代码时看到这方面的行为。

    您之前在11月24日提到过、只需进行极少的更改即可在最新的 SDK 上看到此行为。 这表明问题仍然存在、但我无法看到我在7.41上实施的代码存在的问题。 这可能是由于我在创建项目时遗漏了一些内容、因此我认为看到您的7.41项目很有价值。 您能否分享此项目? 这将有助于研发人员弄清导致最新 SDK 上出现该行为的原因。 一旦我们获得了根本原因、我们就可以一起工作、找到如何在您的 SDK 上修复。

    此致、

    1月

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

    您好、Jan:

    好的、有一点可以肯定的是、5.x SDK 存在问题。 我将在我们的应用和示例应用中重试使用最新的 SDK (7.x)、我认为需要时间。 同时、请尝试使用多角色应用、启用调试打印功能和连接参数值的各种配置(例如7.5ms 至100ms)、也可以启用扫描。   

    此致、

    Jungin

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

    尊敬的 Jungin:

    我懂了。 我将尝试使用多角色来重现行为、看看行为是否重现。 如果您有机会重现最新 SDK 的问题、请告诉我并提供示例项目。 然后、我将能够向研发部门提供项目、这将有助于加速调试。

    此致、

    1月

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

    您好、Jan:

    我想在定制电路板上使用最新的 SDK 和多角色应用、但不知道如何配置 uart2来调试打印功能。  

    我在主函数中添加了以下代码、但在 Tera Term 上看不到任何文本。  

    当我尝试将现有工程导入到最新的 CCS 和 SDK 时、出现了编译错误、我猜它与 XDC 工具有关;当我添加 app.cfg 文件时、CCS 或 SDK 自动安装 XDC 工具、但出现编译错误、所有错误都出现、SysConfig 文件丢失、让我从头开始配置所有项目。  

    在旧 SDK 中、项目根目录中有 multi-role_app.cfg 文件、但在最新的 SDK 中找不到这个文件。  

    请告诉我如何在 SDK 7.41版本中使用调试打印函数、以及我应该使用哪个编译器版本(ti clang 或 ti v20)?   需要 XDC 工具?  

    UART2_Handle UART;
    UART2_Params uartParams;
    //打开 UART2驱动程序的一个实例
    UART2_Params_init (&uartParams);
    uartParams.baudrate = 115200;
    uartParams.parityType = UART2_Parity_none;
    uartParams.stopbits = UART2_STOPBITS_1;
    uartParams.readMode = UART2_Mode_nonblocking;
    uartParams.writeMode = UART2_Mode_nonblocking;
    UART = UART2_open (CONFIG_UART_LOG、&uartParams);

    int32_t status;
    size_t bytesWriten;
    char buffer[100]="print test\r\n";
    状态= UART2_WRITE (UART、缓冲区、12、&bytesWriten);

    此致、

    Jungin

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

    尊敬的 Jungin:

    在较新的 SDK 中不再使用.cfg 文件。 而是此文件包含的信息现在包含在自动生成的 ti_devices_config.c 文件中。 您共享的代码应将 UART 数据写入您选择的 UART TX 引脚。 你看到有任何活动吗? 是否已从多角色项目中删除显示驱动程序和显示驱动程序参考? 如果不移除这些 ARO、显示驱动程序便会保留 UART 驱动程序。

    7.41的正确编译器是 TI Clang 3.2.0。

    此致、

    1月

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

    您好、Jan:

    我没有启用 SysConfig 中的显示(如附件的屏幕截图所示)。 我是否必须删除源代码中所有与显示器相关的函数?  

    是  ti_devices_config.c 还是 ti_drivers_config.c ? 我附加了 driver.c 文件、请检查它是否正常。  

    我需要两个 UART、一个用于与客户端 MCU 的通信、另一个用于调试日志。  

    这看起来像是将 UART 重新路由至使用 COM 端口所需的 XDS110 UART。 我使用27和28进行日志通信、使用引脚7和8进行通信。  

     e2e.ti.com/.../7725.ti_5F00_drivers_5F00_config.c

    此致、

    Jungin

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

    尊敬的 Jungin:

    XDS110的 COM 端口路由到 DIO3和 DIO4。 这意味着要在 COM 端口上查看 UART、则 UART 输出必须转到 DIO3和 DIO2。 通过 XDS 公开的 COM 端口将无法看到任何配置到其他引脚的 UART、并且需要单独的 UART 读取器或逻辑分析仪。 (显示驱动程序使用的配置)

    您可能必须从代码中删除 Display 驱动程序引用。 首先尝试使用这些引脚来查看是否有效、如果不有效、那么我们也许需要删除显示驱动程序基准。

    此致、

    1月

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

    您好、Jan:

    我现在可以启用调试日志功能、但不知道 IDLE 函数在哪里添加 UART 日志刷新。  

    在旧 SDK 中、需要在 app.cfg 文件中使用 Idle.addFunc ('&uartLog_flush')。

    /
    *系统挂钩函数
    */

    /
    *@fn uartLog_flush
    *
    *@简短的日志缓冲区刷新功能
    *
    *在此实施中,它将被调用
    *在没有其他内容正在运行时空闲任务。
    *
    *这是通过在 TI-RTOS 中设置空闲任务来实现的
    *配置脚本如下:
    *
    * var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    * Idle.addFunc ('&uartLog_flush');
    *
    *注:必须在包含电源驱动程序之前添加此驱动程序
    *在进入休眠之前输出待处理的日志消息。
    *
    *使用实用程序功能将日志记录转换为对用户友好的记录
    字符串、然后将其打印到 UART。
    *
    *@参数无。 依赖于全局状态。
    *
    *@返回无。
    *
    *@post :: uartLog_tail 递增到 uartLog_head 所在的位置,然后返回
    */
    void uartLog_flush()

    现在使用最新的 SDK 和 tirtos7、我应该在哪里放置  uartLog_flush()、或者不需要它? 只需在任何位置使用 uart2_write?

    此致、

    Jungin

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

    尊敬的 Jungin:

    我相信大家应该可以在任何地方直接使用 uart2_write。 在这样做时是否发现问题?

    此致、

    1月

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

    您好、Jan:

    uart2_write 函数可使我们的应用不稳定、您是否有任何权变措施来使用旧 SDK?

    此致、

    Jungin

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

    尊敬的 Jungin:

    您能解释一下它是如何使它不稳定的吗? 您使用的 UART 选项与上一个项目中的相同吗? 为了使研发能够有效地提供支持、必须在最新的 SDK 上运行该示例。

    此致、

    1月

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

    您好、Jan:

    unbloking 不会打印所有消息、而阻塞似乎会造成硬件故障。  

    我看到您曾提到在论坛的空闲时间使用 uartlog、而不是系统打印和刷新、但想知道为什么您说使用 uart2_write any Spot。 最新的 SDK 中是否没有 UART 日志和刷写等实用程序函数和文件?

    我们的应用程序使用大量的打印功能来进行检查和调试、并需要这些功能。  

    此致、

    Jungin

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

    尊敬的 Jungin:

    我懂了。 为了说明、在将新 SDK 与 UART2配合使用时、是否不会出现该问题、但某些打印内容丢失了? 您是否可以尝试增加 TX 环形缓冲区的大小(可通过 SysConfig 实现)以查看是否修复了缺失的语句? 打印速度太快、缓冲区空间不足。

    我认为最接近 UART 日志的是使用禁用 ANSI 的显示驱动程序(可通过 SysConfig 实现):

    此致、

    1月