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.

[参考译文] AWR6843:通过 UART 记录调试数据

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1071319/awr6843-logging-debug-data-over-uart

部件号:AWR6843
“线程:测试”中讨论的其它部件

我已经在论坛上搜索过,并查看了现有的 UART 单元测试和示例项目。

信息就在这里,我只需要一只手连接点。

为了提供背景信息,在项目的初始阶段,我们希望 通过 UART 推送记录器数据。

“记录器数据”是指您通常通过  System_printf()发送的标准调试日志,但它不是在 CCS 中打印出来,而是通过由 MSS 拥有的 UART 进行打印。

这里有很多示例,说明如何制作自己的使用 UART 的 printf 变体,但在这种情况下,它必须尽可能地高性能。

“性能”一词是主观的,因此要进一步阐述,我想构建这种日志记录机制,以使其具有很低的优先级,并且不会阻止任务执行,也不会从另一个任务中获取资源。

我认为这种类型的初始调试日志记录是“可以拥有的”,而不是系统的关键部分。 也就是说,我不希望这种机制影响雷达的执行或信号处理。 幸运的是,逻辑存在于 DSS 中,因此理论上它不应该产生影响,但你会得到这个想法。

根据我目前的调查,mmWave SDK 提供了两种主要的数据推送方法:


功能:
UART 写入()
描述:
-在启用中断的情况下将数据写入 UART。 将阻止任务执行,直到写入缓冲区中的所有数据

功能:
UART 写入 Polling()
描述:
-将数据写入 UART,轮询外围设备以等待写入新数据。 在所有数据写入 UART 之前,不会返回  


在研究了这两个问题后,我仍然不清楚哪个问题最有意义。 根据上述描述,一个将“在写入所有数据之前不返回”,另一个将“阻止任务执行”。

我希望有一种方法让 UART 知道有数据要发送,一旦循环释放,它将在闲置时间协调事务。 这样资源争用最小,并且假设调用来自低优先级任务,其他高优先级任务可能会在需要时跳进并执行。

我的上述解释是否正确? 如果是这样,是否有首选哪条路由用于此方案(日志记录)?

谢谢!

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

    您好,  

    此处的 UART 缓冲区是指与 UART 外围设备关联的缓冲区。 通常,对于此处提到的用例,需要将日志放入本地缓冲区(由 SW 维护,该软件会记录日志),并在任务有机会且 UART 是空闲时发送到 UART。 当 UART 外围缓冲区中的字节被发送出去时,将生成中断。 希望这能回答您的问题。  

    此致,  

    苏丹 K N  

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

    好的一点是,维护一个内部循环缓冲区是有道理的,它可以存储记录器数据。

    在评论中:

    “当任务有机会且 UART 是免费的时候”

    是否有这样的功能的示例,即使用 UART 检查是否空闲,任务是否空闲? 这是否意味着使用  UART_writePolling()或  UART_write()

    谢谢!

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

    您好,  

    这些示例在 C:\ti\mmWave_SDK_03_05_00_04\packages \ti\drivers\UART\test\xwr68xx 中提供。 如果您有任何疑问,请同时查看,并告诉我。  

    此致,  

    苏丹 K N

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

    我在 上面提到了这些单元测试,我在发布前仔细检查了这些测试,但主要的问题是,您是使用  UART_writePolling()还是  UART_write()。 目标是在任务完成后不阻止和处理 UART。

    当我查看上面提到的 API 说明时,它们似乎都表示它们是阻塞的,所以我只是想确保我先了解这部分。

    功能:
    UART 写入()
    描述:
    -在启用中断的情况下将数据写入 UART。 将阻止任务执行,直到写入缓冲区中的所有数据

    功能:
    UART 写入 Polling()
    描述:
    -将数据写入 UART,轮询外围设备以等待写入新数据。 在所有数据写入 UART 之前,不会返回  

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

    您好,  

    对于非阻塞,请使用 UART_WRTE()。  

    此致,  

    苏丹 K N  

x 出现错误。请重试或与管理员联系。