主题中讨论的其他器件:TMS570LS3137、
您好!
我正在尝试使用以下代码执行 PBIST 自检。
空 pbistSelfCheck (空)
{
易失性 uint32 i = 0U;
uint32 PBIST_WAIT_DONE_LOOP = 0U;
/*用户代码开始(13)*/
/*用户代码结束*/
/*对内存自检控制器进行诊断检查*/
/*首先设置 PBIST ROM 时钟、因为该时钟频率限制为90MHz */
/*禁用 PBIST 时钟和 ROM 时钟*/
pbistREG->PACT = 0x0U;
/* PBIST ROM 时钟频率= HCLK 频率/2 */
/*禁用内存自控制器*/
systemREG1->MSTGCR = 0x00000105U;
/*禁用内存初始化控制器*/
systemREG1->MINITGCR = 0x5U;
/*启用内存自控制器*/
systemREG1->MSTGCR = 0x0000010AU;
/*清除 PBIST 完成*/
systemREG1->MSTCGSTAT = 0x1U;
/*启用 PBIST 控制器*/
systemREG1->MSINENA=0x1U;
/*根据 HCLK 与 VCLK 的比率至少等待32个 VBUS 时钟周期*/
/*SAFETYMCUSW 134 S MR:12.2. "等待几个时钟周期(I 未使用的值)"*/
/*SAFETYMCUSW 134 S MR:12.2. "等待几个时钟周期(I 未使用的值)"*/
对于(i=0U;i<(32U +(32U * 1U));i++){//等待*/}
/*用户代码开始(14)*/
/*用户代码结束*/
/*启用 PBIST 时钟和 ROM 时钟*/
pbistREG->PACT = 0x3U;
/* PBIST 的 CPU 控制*/
pbistREG->DLR = 0x10U;
/*自定义始终失败算法,这将不使用 ROM,只需设置失败*/
pbistREG->RAMT = 0x00002000U;
*(volatile UINT32 *) 0xFFFFFF400U = 0x4C000001U;
*(volatile UINT32 *) 0xFFFFFF440U = 0x00000075U;
*(volatile UINT32 *) 0xFFFFFF404U = 0x4C000002U;
*(volatile UINT32 *) 0xFFFFFF444U = 0x00000075U;
*(易失性 UINT32 *) 0xFFFFFF408U = 0x4C000003U;
*(volatile UINT32 *) 0xFFFFFF448U = 0x00000075U;
*(volatile UINT32 *) 0xFFFFFF40CU = 0x4C000004U;
*(volatile UINT32 *) 0xFFFFFF44CU = 0x00000075U;
*(volatile UINT32 *) 0xFFFFFF410U = 0x4C000005U;
*(volatile UINT32 *) 0xFFFFFF450U = 0x00000075U;
*(volatile UINT32 *) 0xFFFFFF414U = 0x4C000006U;
*(volatile UINT32 *) 0xFFFFFF454U = 0x00000075U;
*(易失性 UINT32 *) 0xFFFFFFE418U = 0x00000000U;
*(volatile UINT32 *) 0xFFFFFF458U = 0x00000001U;
/* PBIST_RUN */
pbistREG->rsvd1[1U]=1U;
/*等待内存自检完成指示*/
/*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
while ((systemREG1->MSTCGSTAT & 0x1U)!= 0x1U)
{
PBIST_WAIT_DONE_LOOP++;
}/*等待*/
/*检查故障*/
if ((pbistREG->FSRF0 & 0x1U)!= 0x1U)
{
/*即使运行了“始终失败”算法,也未指示失败*/
自测故障通知(PBISTSELFCHECK_FAIL1);
}
其他
{
/*检查算法是否在预期的时间内执行。 *
/*此时间取决于上面选择的 ROMCLKDIV */
if (PBIST_WAIT_DONE_LOOP >= 2U)
{
自测故障通知(PBISTSELFCHECK_FAIL2);
}
/*禁用 PBIST 时钟和 ROM 时钟*/
pbistREG->PACT = 0x0U;
/*禁用 PBIST */
systemREG1->MSTGCR &= 0xFFFFFFF0U;
systemREG1->MSTGCR |= 0x5U;
}
}
代码取自 TI 为控制器 TMS570LS3137 SafeTI 诊断库2.4.0提供的 TI。
请通过将保留位置设置为0x1来找到发生 PBIST 运行的突出显示代码行。 TMS570LS3137手册中提供了有关相同的说明、 但 TMS570LC4357中未提供说明。
您能否提供此位置的参考、以及 有助于验证的 TMS570LC4357Controller。
谢谢、
Tirumala。