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.

[参考译文] TMS570LC4357:有关 HALCoGen 的 nError-Pin 行为示例(example_SafetyLib.c)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/582099/tms570lc4357-nerror-pin-behavior-about-halcogen-example-example_safetylib-c

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGENTMDX570LC43HDK

大家好、TI 专家、

 

我们的客户向我们发送  了一些有关 E2E 主题中的 HALCoGen 示例代码的其他问题、如下所示;

  -HALCoGen:04.05.02

  - SafeTI 诊断库版本:2.2.0

  - CCS:版本6.1.3.00033

  - sample_code:\Hercules \HALCoGen\v04.05.02\examples\TMS570LC43x\example_SafetyLib.c

  http://e2e.ti.com/support/microcontrollers/hercules/f/312/p/565357/2075947#2075947

 

根据下面 E2E 主题的建议、IESRx、ILSRx 相关问题似乎已得到解决。

非常感谢!

 -在 Halcogen 中配置,然后重新生成代码。

 -在您完成所有初始启动诊断后,应调用 EsmInit。

 

现在,我们的客户正在使用 esminit()中的 IEPSR4寄存器设置检查 nError-pin 行为。

 -他们根据 HALCoGen 的 example_SafetyLib.c 中编写的指南创建了 CCS 项目。

 - ESM 寄存器设置由 HALCoGen 的"ESM"选项卡完成。

 -我们检查 了生成的文件"hL_ESM.c"的点。

   -设置 IEPSR4的位20以启用 nError-pin

       esmREG->IEPSR4 =. |(uint32)((uint32) 1U <<20U)|..

 

结果:

  该方案向 main()重新发展;

  ESM 错误标志如下所示

      ESMSR1 0x00000000

      ESMSR2 0x00000000

      ESMSR3 0x00000000

      ESMSR4 0x00000000 (GR1-52也被清零)

  - TMS570LC4357-EVM (TMDX570LC43HDK)上的 nError-LED 亮起。

 

问题:

 -在 esminit()中清除 ESM 标志后,为什么 nError-LED 亮起?

 

现在、我们将检查 以下行为;

 案例1:检查错误源

   -我们在 HL_ESM.c 中注释掉以下语句,以删除 ESM 标志清除操作。

     //   esmREG->SR1[0U]= 0xFFFFFFU;

     //   esmREG->SR1[1U]= 0xFFFFFFU;

     //   esmREG->SSR2   = 0xFFFFFFU;

     //   esmREG->SR1[2U]= 0xFFFFFFU;

     //   esmREG->SR4[0U]= 0xFFFFFFU;

     //   esmREG->SR7[0U]= 0xFFFFFFU;

 

   -结果

      ESMSR1 0x00000000

      ESMSR2 0x00000000

      ESMSR3 0x00000000

      ESMSR4 0x00100000 (GR1-52被置位)    

      nError-LED 亮起。

      ->我们确定错误源仅为 GR1-52。

 

 CASE2:检查 EKR 寄存器行为(因为 EKR 看起来与 nError-Pin 行为相关。)

  -我们只注释掉"HL_ESM.c"中的以下语句,以删除 EKR 寄存器设置,

     //  esmREG->EKR = 0x000000000000U;

 

  -结果

      ESMSR1 0x00000000

      ESMSR2 0x00000000

      ESMSR3 0x00000000

      ESMSR4 0x00000000

      nError-LED 指示灯熄灭。 (但我们不知道为什么 nError-LED 关闭)

 

 案例3:是否解决最新版本 HALCoGen 上的问题?

 -我们使用了最新版本 HALCoGen (04.06.01)

 -结果与 case1相同。 (问题似乎没有解决。)

 

 案例4:是否解决最新版本 SafeTI-Lib 上的问题?

 -我们使用了最新版本的 SafeTI 诊断库版本(2.3.1)

 -结果:

    该程序进入 while (1)循环。

    -如果我们在 example_SafetyLib.c 中重写"PERIPHRAMECCCHECK_enable = 0"、

      该方案向 main()重新发展;

      ESMSR1 0x00000000

      ESMSR2 0x00000000

      ESMSR3 0x00000000

      ESMSR4 0x00000000

      nError-LED 亮起。

 

如果您告诉我们如何解决这个"nError-LED"问题、我们将不胜感激。

如果您查看随附的 CCS 项目、我们也将不胜感激。

 

此致、

e2e.ti.com/.../7713.CCS_5F00_Project_5F00_Files.zip

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

    我将在工作台上运行您的项目、稍后检查 LED。

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

    您好!

    非常感谢您的善意。
    非常感谢您的帮助。

    我正在等待您的回复。

    此致、

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

    您好!

    感谢你的帮助。
    你有更新吗?

    现在、我们的客户正在等待答案。

    如果您能告诉我们这方面的进展情况、我将不胜感激。

    此致、

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

    你有更新吗?
    我们正在等待您的回复。

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

    您好、Matusan、

    很抱歉耽误你的时间。 esmInit()清除所有状态寄存器(SR1/2/3/4/7),并禁用错误引脚通道和中断。 我们需要修改 esmInit()以显示状态寄存器中的错误位,从而为组1的通道52启用中断。 将附加新的 esmInit()。  

    我的测试显示 SR1=0x0、SR2=0x0、SR3=0x0、SR7=0x0、但 SR4=0x00100000、 中断偏移(ESMIOFFHR)为0x55 (组1的通道52)。 组1的通道52是勘误表(器件#48)中列出的互连全局错误。 我将弄清明天不清除勘误表的原因。  

    e2e.ti.com/.../0245.HL_5F00_esm.c

    此致、

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

    您好!

    非常感谢您的善意。
    非常感谢您的帮助。

    我们正在等待下一次答复。 (如何解决此"nError-LED"问题?)。  

    此致、

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

    您好、Mutusan、

    今天、我对 LC43x HDK 进行了更多测试、一切都按预期工作。 在 STC 自检后、互连全局错误(组1的通道52)被置位、错误引脚状态寄存器被清除(错误发生)、并且 HDK 上的错误 LED 被打开。

    我在 example_safetylib.c 中调用 esmInit()之前添加了几条语句  

    /*-激活正常模式*/
    esmREG->EKR = 0x000000000000U;
    /**-为组2的通道52设置中断级别*/
    esmREG->ILSR4 = 0x00100000;
    /**-为组2的通道52启用错误引脚通道*/
    esmREG->IEPSR4 = 0x00100000;
    /**-为组2的通道52启用中断*/
    esmREG->IESR4 = 0x00100000U;

    while (1);

    这些语句启用中断、设置中断级别、启用组1的通道52的 ERROR 引脚、并将 ESM 模块置于正常模式。 将程序加载到闪存后、它将自动运行到此 while (1)循环。 在"Registers"面板中、您将看到 STAT4为0x0010、0000、中断偏移寄存器(IntOffstHigh)为0x55 (组1的通道52)、错误引脚状态寄存器(勘误表)为0x0 (发生错误)。

    还可以手动测试错误响应生成机制、以强制出现错误条件。 在寄存器面板中、将0x0A 写入 ESMEKR 将强制 ERROR 引脚为低电平。 将0x0写入 ESMEKR 以将 ESM 恢复到正常工作模式。

    此致、

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

    您好、QJ

    非常感谢您报告进度。

    如果您告诉我们如何解决这个"nError-LED"问题、我们将不胜感激。

    此致、

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

    感谢你的帮助。
    你有更新吗?

    现在、我们的客户等待这个问题的答案已经很长时间了。

    如果您告诉我们如何解决这个"nError-LED"问题、我们将不胜感激。

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

    正如我在上一个帖子中所说、由于组1的通道52已设置(错误)、因此错误引脚已打开。 STAT4为0x0000_0000、因为它是在 esmInit()中清除的。 如果他们在 esmInit()之前使用我的代码(4月4日),他们将获得正确的 STAT4 90x00100000值)。

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

    您好、QJ

     

    感谢您的重播。

     

    我们了解"由于组1的通道52已设置(错误)、因此错误引脚已开启"。

    我们想知道的是"如何关闭 ERROR 引脚(nError-LED)。

     

    您能否解释关闭错误引脚(nError-LED)的建议方法?

     

    P.S. Errata (SPNZ180D)的 page31的两个变通方法都无法正常工作。 请告诉我们正确的方法。

         www.ti.com/.../spnz180d.pdf

    权变措施(1)如果在 STC1 (CPU)自检后置1、则清除 ESM 组1通道52标志。
                 (2)将 GCLK 减慢至 STC1 (CPU)自检的最高规格 HCLK。

    此致、