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.

[参考译文] CCS:记录自定义消息并在代码中直接读取它们

Guru**** 2611325 points
Other Parts Discussed in Thread: EK-TM4C129EXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/768894/ccs-log-custom-messages-and-read-them-in-code-direcly

Thread 中讨论的其他器件:EK-TM4C129EXL

工具/软件:Code Composer Studio

您好!

我想在应用程序中使用 Log 保存错误代码和自定义诊断数据、然后通过 HTTP 服务器提供这些记录。 你推荐什么? 我已经实现了 HTTP GET / POST 的所有功能、但在实施自己的环形缓冲区之前、我想问一下、是否有任何基于 RTOS 的实现可用于我的目的?

谢谢!

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

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

    感谢您的回复! 我正在使用 EK-TM4C129EXL。 我不想在 UIA 中查看日志、只需要通过一种环形缓冲器来使用变量参数系统 printf 类函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 我将把该主题移至器件论坛。 Tiva 专家可以为您提供最佳指导。

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Daniel、您好!
    您是否尝试过 System_printf 或 Log_Info1、或者您是否可以通过 UART 将数据显示到 PC 的虚拟 COM 端口?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    感谢你的答复。 是的、他们按我的预期工作。

    但是、我真正需要的是、在以后从内部缓冲区访问这些消息时、可以使用任何缓冲区。 请查看我的原始问题。 如果 TI RTOS 有一种存储 System_printf 或 Log_Info1内容的列表缓冲区、当收到正确的 http GET 请求时、我可以重复使用它来查询它们。 例如:api/log.cgi RTOS 是否有一些 API 来访问它们?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Daniel、您好!
    我不知道此类功能、但我会将您的问题转交给您的 TI-RTOS 专家。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于系统数据、您可以在 SysMin 中提供 outputFxn 回调。 这使您可以在调用 System_flush 时获取内部缓冲区中的字符。

    对于日志记录、

    使用 ti/uIA/记录器/LoggerMin,可以使用 LoggerMin_getContents 获取内容。
    使用 XDC/runtime /LoggerBuf,您可以调用 LoggerBuf_getNextEntry。 注意但系统分析器不支持 LoggerBuf。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的帮助! Todd,你又拯救了一天! ;)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    总是很乐意提供帮助:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最后一个问题。 我找到了几个如何设置 LoggerBuf 的示例、但我没有任何使用 LoggerBuf_writex 的示例。 我对 IARg 参数感兴趣。

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

    Daniel、您好!

    您可以添加此项(如果有的话,还可以删除 LoggingSetup)。

    BIOS.logsEnabled = true;

    VAR LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');

    VAR 默认值= xdc.useModule('xdc.runtime.Defaults');

    var logerBufParams = new LoggerBuf.Params();

    LoggerBufParams.bufType = LoggerBuf.BufType_Circular;//最新状态

    LoggerBufParams.numEntry = 2048;

    var logger0 = LoggerBuf.create (logerBufParams);

    Defaults.common$.logger = logger0;

    Task.common$.diags_USER1 = XDC.MODULE ("xdc.runtime.Diags").ALWAYS_ON;

    Task.common$.diags_USER2 = XDC.MODULE ("xdc.runtime.Diags").ALWAYS_ON;

    //根据需要使用其他模块。

    这使所有模块使用一个记录器实例。 您可以在 CDOC 中查找模块、以查看需要启用哪些诊断掩码。 例如、这里是任务上下文切换  

    注:LoggingSetup 不支持 LoggerBuf。 使用 LoggerBuf 时,必须手动执行 LoggingSetup 为您执行的所有操作(例如创建记录器实例、启用模块的诊断掩码等)  

    注意:您可以使用多个记录器实例、然后专门分配给某些模块。 这就是 LoggingSetup 的功能(xdc.runtime.Main 获得一个、BIOS 的 Load 模块获得一个、而 BIOS 的其余模块获得一个)。 这由控制 common$.logger 字段。 如果未显式设置、则从 xdc.runtime.Defaults 继承。

    注:运行时代码不变。 它仍然使用 Log_XYZ。

    Todd