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.

[参考译文] TMS320F28377S:IEC60730SWPACKAGES:STL_HWBIST_runMicroTest ()

Guru**** 2478765 points
Other Parts Discussed in Thread: IEC60730SWPACKAGES

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1462014/tms320f28377s-iec60730swpackages-stl_hwbist_runmicrotest

器件型号:TMS320F28377S
Thread 中讨论的其他器件:IEC60730SWPACKAGES

工具与软件:

IEC60730SWPACKAGES:STL_HWBIST_runMicro ()

我想询问有关 HWBIST 功能的信息。
我将使用 TI 提供的示例程序在 Micom 自检中检查 CPU。

但是、当执行 STL_HWBIST_runMicro 函数时、会发生 NMI、主循环和中断停止。

由于禁用了"看门狗"、因此不会重复进行重新引导。

我想知道 NMI 的原因以及解决方法。
未详细介绍相关文档。 我想知道如何使用它。

此外、我按原样使用示例程序、并且我没有更改初始设置函数。
我想知道我是否需要更改初始设置。

 

*请说明​​以下函数的寄存器设置值对于每行的含义。

void STL_HWBIST_init (const STL_HWBIST_Coverage 覆盖范围)

EALLOW;

//
//对 HWBIST 控制器进行软复位以将其置于已知状态。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR5)= 0x80000000UL;

//
//清除 HWBIST 软复位位。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR5)= 0x0000UL;

//
//加载目标覆盖度量。
// DID_01_11
//
/*LDRA_Inspected 93 S MR:R.10.1,R.10.3,R.10.4,R.10.1,R.11."LDRA Tool
问题、运算的两侧是相同的(uint32_t)*/
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR6)=(uint32_t)覆盖;

//
//重新启动 HWBIST。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR5)= 0x000AUL;

//
// DID_01_12
//
if (覆盖率=STL_HWBIST_95_LOS)

//
//加载46周期计数的微运行。
// DID_01_10
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR1)= 46UL;

//
//在时钟分频为1的情况下运行移位启动。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR7)= 0x0013UL;

//
//支持此测试的负载。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR8)= 0x0032UL;
HWREG (HWBIST_BASE + HWBIST_O_CSTCSADDR)= 0x4E340000UL;
}

//
// DID_01_12
//
设计

//
//加载61周期计数的微运行。
// DID_01_10
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR1)= 61UL;

//
//在时钟分频为1的情况下运行固定测试。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR7)= 0x00010F13UL;

//
//支持此测试的负载。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCGCR8)= 0x0032UL;
HWREG (HWBIST_BASE + HWBIST_O_CSTCSADDR)= 0x4F4C4272UL;
}

//
//设置图形计数。
// DID_01_13
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCPCNT)= 0x012C06A4UL;

//
//配置完成。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCONFIG)= 0x0005UL;

//
//设置返回地址。
//
HWREG (HWBIST_BASE + HWBIST_O_CSTCRET)= 0x0000UL;

EDIS;
}

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

    您可以读取 NMIFLG 寄存器(位置0x7061)的内容吗、我们可以使用它来确定触发 NMI 的是什么。

    此致!

    Matthew

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

    感谢您的答复。

    我已确认该问题是由于未连接 hwbist 内存而无法重新启动的部件造成的。

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

    我还有一个问题。

    我想知道如何检查 CPU 内核、VCU 和 FPU 寄存器的每个数据。
    我已浏览过硬件内置自检文档、但我对如何检查每个寄存器很好奇。 我们需要告诉认证公司如何检查注册。

    在实际的代码中、似乎只有注入错误值的枚举状态值发生了变化、
    并且不会检查实际的寄存器值、看看是否未写入该值。

    如果我们在进行测试时确实错误地写入了寄存器值、该怎么办?

    对于第三方芯片、直观的程序是将值0xAA 写入特定的寄存器地址值、并再次读取该地址以检查写入是否正常。

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

    在此处继续此对话: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1465198/tms320f28377s-cpu-register-address-inquiry 

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

    谢谢你。