主题中讨论的其他器件:HALCOGEN、 TMDX570LC43HDK
大家好、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 项目、我们也将不胜感激。
此致、