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/CC2650:通过 XDS110进行串行通信以进行调试

Guru**** 2589265 points
Other Parts Discussed in Thread: CC2650, CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/599226/rtos-cc2650-serial-communication-through-xds110-for-debug

器件型号:CC2650

工具/软件:TI-RTOS

您好!

我正在使用 CC2650和 XDS110调试器开发定制板、并愿意使用 XDS110的串行端口从 CC2650应用向 PC 发送调试信息。 这个问题对于有很多 CC2650相关经验的人来说似乎微不足道;但是、虽然有几十个链接解释了向项目添加串行通信的过程、但我仍然觉得信息很混乱、难以找到一个系统且解释清楚的指令。 特别是:

-在 PC 中,可识别 XDS110的两个虚拟串行端口:

XDS110类应用/用户 UART
2. XDS110类辅助数据端口

据我所知、出于用户应用的目的、即调试、我们必须使用1。 XDS110类应用/用户 UART、对吗?   那么、XDS110的第二个串行端口的用途是什么?

此外、通常用于编程的 XDS110调试器线路在对 CC2650进行编程并启动其上的应用程序后、将替代功能作为串行端口通信线路。 对吗? 如果正确、对于 XDS110类应用/用户 UART、哪个 JTAG XDS110线路用作 Tx 和 Rx、在使用 XDS110的串行端口对 CC2650进行编程后、是否需要遵循任何步骤来使用该端口?

-在 CC2650端,似乎有不同的选择,例如添加 UART 驱动程序( processors.wiki.ti.com/.../Cc2640_Adding_a_UART_or_SPI_driver_to_a_Sample_Project ) 或 printf 支持(http://processors.wiki.ti.com/index.php/CC26xx_Adding_basic_printf_over_uart_with_TI-RTOS),或使用 System_printf... 但是、使用 XDS110串行端口进行 CC2650调试的最佳解决方案是哪一个?

请帮助确定正确的解决方案、或建议适当的相关材料/说明。

此致

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

    XDS110类辅助数据端口仅用于与 XDS110进行通信。 XDS110 Class Application/User UART 连接到 CC26xx 上的 UART。

    有关使用 UART 的应用的示例、请参阅此处:
    github.com/.../spp_ble.md

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

    尊敬的 Zahid:

    感谢您的回答。
    1.我已在 Launchpad 中成功运行 simple_central 项目。 在研究了这个项目之后、我发现传输可能是通过 CC2650的 IOID_16完成的(如下面的定义所示)、这与 JTAG_TDO 使用的行相同、这个结论回答了我上面问题的第一部分。 简单地说、我只想确认、将 XDS110 JTAG 线连接到 CC2650后、还可以提供一个串行端口通道用于调试(即使在没有其他专用串行端口功能的定制板中、 考虑不同封装类型中的引脚映射)  


    #define PINCC26XX_MUX_MCU_UART0_TX IOC_PORT_MCU_UART0_TX // MCU UART0发送引脚(在 PINCC26XX.h 中定义)
    #define IOC_PORT_MCU_UART0_TX 0x00000010 // MCU UART0发送引脚(在 IOC.h 中定义)
    #define IOID_16 0x00000010 // IO ID 16 (在 IOC.h 中定义) 



    不过、我的问题的第二部分仍然是:为了进行调试、启用串行端口 printf 函数的最佳、最简单的步骤是什么?
    例如 simpleBLEperipheral?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、对于第二个问题有任何建议?!!...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    Project Zero 具有一个使用 printf 进行调试的良好示例:

    祝你一切顺利

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Zahid:
    感谢您的回复。 我能够使用 printf 和 system_printf 向 IAR 控制台发送信息。
    但是、每次进入调试模式都非常不方便、我想:
    1) 1)没有处于调试模式时、是否有任何方法可以将信息接收到 IAR 控制台?
    2) 2)是否有任何方法使用 XDS110调试器、但将信息接收到 PC 上的独立终端控制台、而不是 IAR 的终端控制台?
    3) 3)假设1和2不可能、那么解决方案应该是重新定向 UART TX 引脚、只需为 CC2650提供常规串行端口、而无需对项目代码进行进一步修改。 对吗?
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好,Katamen,

    XDS110的用户端口是一个简单的 UART 通道。 考虑到这一点、您无需调试器即可在 PC 上打印消息。 您的需求
    (1)目标侧的驱动器发出消息。
    (2)在 PC 端接收消息的程序。

    对于(1),正如您提到的,可以使用 printf()或 System_printf()。 我自己设计自己的驱动程序,称为 trler_log()。 您也可以设计自己的驱动器。

    对于 CC26xx、CPU 支持 SWO 输出。 这意味着您可以通过 SWO 端口或 UART 端口输出日志消息。
    (a) SWO 端口:必须配置 SWO 寄存器并使用 SWIF 协议.... 嗯、这会有点复杂。 但我使用这种方法、这样 UART 端口就不会被占用。
    (b) UART 端口:您只需设计一个正常的 UART 驱动程序。 或者、TI 可能为您准备好了驱动程序。

    对于(2)、PC 已具有 UART 驱动程序。 因此、您需要一个控制台程序。 我自己设计自己的程序来接收和显示日志消息。

    BTW、您必须为两侧配置相同的波特率、奇偶校验和停止位。