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.

[参考译文] TDA4VM:GTC 时间计数器寄存器访问问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1222892/tda4vm-gtc-time-counter-register-access-issues

器件型号:TDA4VM

尊敬的支持部门:

到目前为止、我们 使用 GTC 计时器 计数器(64位)作为 SOC 全局共享时间戳。 我们发现从该寄存器 GTC_CNTCV_LO、GTC_CNTCV_HI 中偶尔会收到错误数据的问题。

我们编写了测试代码来计算任务周期、在 MCU1-0中将任务周期设置为10ms、并记录了最大/最小/平均数据。 以下是测试结果。

平均数据没有问题(约9341us)、但最大值为1202062us。  下面是测试代码示例:

#define ticks_to_US 200

GetSystemTimer_u64 ()

  uint63 cur_t = 0;

  CUR_t =(*(volatile uint64_t*)(0x00a90008))/ TICKS_TO_US;

  asm ("  dsb");asm (" isb"  );

}

任务(APP_10ms)

  Timer_Duration = GetSystemTimer_u64 () -   Timer_start;

  Timer_start = GetSystemTimer_u64  ();

}

上图仅显示了 Timer_Duration 的摘要

您能给我们任何可能导致该问题的提示吗? 非常感谢您的支持。

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

    只需注意、我们已确认错误的数据不来自我们的任务计划。 因此我们假设 根本原因应该 来自 GTC 寄存器。 也许我们对它的访问速度非常快、因为每个 SoC 内核都 将访问它、在某些情况下、他们会在此期间从该寄存器获取数据

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

    尊敬的 Yang:

    还有其他并行运行的东西吗? 我们来看其他一些较高优先级的任务来阻止此任务持续时间更长。 有可能吗?

    此致、

    Brijesh

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

    可能会被更高优先级的 IRQ 阻止、 但不会阻止过多的时间。 如果是这样、我们的系统将崩溃、某些模块将报告错误。

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

    例如、MCU 发送的 CAN 消息的周期是正确的

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

    但是、假设更高优先级的任务可能会运行多次、有没有可能? 您目前是否能够禁用更高优先级的任务并看到 GTC 值?  

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

     在错误的情况下、CAN MSG 周期性的发生是可以的、在这种情况下、我们也进行了测试代码... 它们位于同一个 AUTOSAR 任务中、因此我们假设可以证明我们没有调度问题... 除了每10或15分钟发生一次错误情况、这意味着 GTC 定时器没有溢出

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

    是的,GTC 是64位计时器,所以即使运行在200MHz,它不会在10分钟内溢出。  

    只是为了确认延迟 可能是由于 CAN MSG、您能尝试禁用它并将其签出吗?

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

    禁用高优先级任务和 CAN Msg 也没用、我们确认了... 您 或某些其他客户是否 发现过类似问题?

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

    否、尚未出现此问题。  

    在代码中、您是否可以获取当前时间与前一时间的不同、然后 绘制此差异、而不是除以 GTC 计时器值?

    Rgds、

    Brijesh  

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