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.

[参考译文] TMS570LS3137:关于使用辅助自由运行计数器的软件投票

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/574228/tms570ls3137-about-software-voting-using-secondary-free-running-counter

器件型号:TMS570LS3137

我正在阅读安全手册(SPNU511D)。

我有一个问题"7.1 1oo2软件投票使用辅助自由运行计数器"。

这种机制是要做什么?

'通过软件对两个定时器中的计数器值进行定期检查、可将二次计数器用作第一个定时器上的诊断。'

什么是两个计时器?

可能认为一个是 CPU 周期计数器、另一个是什么计数器?

此致

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

    请查看技术参考手册中的 RTI 章节。 此模块中有两个自由运行的计数器。 您可以同时启动这两个寄存器、并检查其中一个计数器的值、以确保没有任何瞬态或永久错误影响主计数器的计数器内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 你的答复。

    但很抱歉, 我不是很理解。

    说明在技术参考手册中为"使用一个递增计数器作为操作系统时基"。

    什么  是"操作系统时基"?

    如果我不使用操作系统,是否不需要这种安全机制?

    此致。

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

    Arriy、

    RTI 模块通常用于嵌入式系统中 RTOS 的时基。 即、RTI 被设定为定期提供一个中断、而中断被用来定义操作系统内的环路时间。 在更复杂的系统中、它用于为调度程序提供时序。 然而、RTI 可被用于代码或任务的任何基于时间或者循环执行。 RTI 有多个计数器、因此一个可以是主计数器、另一个可以是诊断检查。

    例如、假设您将计数器设置为在每次计数器达到0xFF 值时中断。 如果 bit8由于永久或瞬态故障而卡为1、则您的将很快达到值0xFF、与定时中断相关的任务将很快发生。 作为一个诊断、你可以检查第二个计数器以确保计数同步并且时间实际上是有效的。

    操作系统用例只是一个示例。 如果您的系统将 RTI 计数器用于系统内与您的安全功能相关的任何任务或功能、此诊断可能是有益的/必要的。 如果您的应用中需要、TI 将无法明确回答、因为它与应用/系统相关、因此如果需要、需要由您进行评估。 FMEDA 允许您包含或排除安全措施、并根据具体用例衡量对整体器件级安全指标的影响。 但是、它不会测量对系统尝试保护的目标安全功能的影响。

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

    你好、Chuck。

    我的理解如下。
    使用两个同步递增计数 器、当中断发生时、我必须检查两个计数器的值是否匹配。

    我的理解是否正确?

    此致

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

    本质上、如果您需要使用此安全机制、则是肯定的。 但是、此机制的使用取决于您的应用需求和应用的安全要求。

    请注意、计数器将始终更新、因此发生中断和读取第二个计数器之间的延迟需要考虑一些容差或延迟、这是由于潜在的中断延迟和读取时序延迟所致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck。

    我在下面执行了"RTI1:使用辅助自由运行计数器的软件投票"。

    您对此实现有何看法?

    1.启用自由运行计数器0和计数器1。(计数器0默认为启用)

    保持计数器0的值。

    3.按(0>x>20)计数20。

    4.添加计数器0保持的值和计数器1的值。

    如果保持计数器0的值与计数器1的值之间的差值以及当前计数器0和当前值之间的差值为10或更多、

      出现错误。

     (以100Hz 的频率移动)

    我们应该如何决定差异?  我现在 设置10。
    我很高兴你给我一些东西。

    此致

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

    确切的测试程序和方法取决于您使用计数器的方式、因此很难判断。 您能否提供有关您计划如何在应用程序中使用计数器1和计数器0的更多详细信息?

    作为一般注释、您将捕获 counter0、然后将其添加到 counter1、并将其称为差异。 由于您已添加和未减去这些值、因此这不会是计数器值的差异。 此外、由于我没有看到您将计数器设置为0或已知的起始点、因此您可能需要一些逻辑来解决计数器寄存器可能发生回滚或过流的问题。

    对于正常使用情况、RTI 计数器用于计时事件或提供系统时钟。 尽管我们不希望限制您的创造力或灵活性以满足您的要求、但下面是几个有关如何实现这一目标的简要总结。

    如果随机用于计时事件或测量任务的时间、只需在任务开始时读取两个时间为时间1;执行任务;任务完成后、再次读取两个时间为时间2;比较计数0与计数1的总时间; 如果超出基于您的应用需求和软件功能的规定容差范围、则通知错误。

    如果 RTI 用于系统节拍、则可以像在每个系统节拍/周期性中断处读取自由运行的计数器一样简单、以确保二者均处于指定的相互容差范围内。

    请注意、如果两个计数器同时初始化、然后几乎同时读取、那么我希望容差非常小(大约2-3个 VCLK 周期、 但是、您可能需要通过表征/实验来确定最终值、并且可能会因中断结构和应用需求而异。