主题中讨论的其他器件:HALCOGEN
大家好、
我需要执行 "可编程内置自检"、在 halcogen 工具中完成的配置是什么、任何示例参考 代码都是好的。
谢谢、此致
Srinivasa k
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.
大家好、
我需要执行 "可编程内置自检"、在 halcogen 工具中完成的配置是什么、任何示例参考 代码都是好的。
谢谢、此致
Srinivasa k
您好 Srinivasa、
您可以在以下路径中安装 SafeTI 诊断库
SAFETI_DIAG_LIB 驱动程序或库|德州仪器 TI.com
在此库中、您可以找到一个名为"sl_selftest.c"的文件、此文件包含不同的诊断函数例程。

在此文件中、函数"sl_SelfTest_PBIST"执行 PBIST、在这里、通过传递不同的 RAM 组地址、您可以执行不同的 RAM 组 PBIST 测试。

或
您可以在此处参阅以下主题并使用 QJ 共享的代码:
(4) RM57L843:为 March13N 单端口算法启用 PBIST 测试-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
--
谢谢、此致、
Jagadish。
void PBIST_SelfTest (uint32 raminfoH、uint32 raminfoL、uint32 algomask)
{
易失性 uint32 i = 0U;
/* PBIST ROM 时钟频率= HCLK 频率/2 */
/*禁用内存自控制器*/
systemREG1->MSTGCR = 0x00000105U;
/*禁用内存初始化控制器*/
systemREG1->MINITGCR = 0x5U;
/*启用 PBIST 控制器*/
systemREG1->MSINENA=0x1U;
/*启用内存自控制器*/
systemREG1->MSTGCR = 0x0000010AU;
/*根据 GCLK 与 VCLK 的比率至少等待64个 VBUS 时钟周期*/
对于(i=0U;i<(32U +(32U * 1U));i++){//等待*/}
/*用户代码开始(18)*/
/*用户代码结束*/
/*启用 PBIST 时钟和 ROM 时钟*/
pbistREG->PACT = 0x1U;
/*选择要测试的所有算法*/
pbistREG->algo = algomask;
/*选择 RAM 组*/
pbistREG->RINFOL = raminfoL;
/*选择所有 RAM 组*/
pbistREG->RINFUU = raminfoH;
/* ROM 内容不会覆盖 RINFox 设置*/
pbistREG->over = 0x0U;
/*算法代码从 ROM 加载*/
pbistREG->ROM = 0x3U;
/*启动 PBIST */
pbistREG->DLR = 0x14U;
}
void pbistStop (void)
{
/*用户代码开始(20)*/
/*用户代码结束*/
/*禁用 pbist 时钟和 ROM 时钟*/
pbistREG->PACT = 0x0U;
systemREG1->MSTGCR &= 0xFFFFFFF0U;
systemREG1->MSTGCR |= 0x5U;
/*用户代码开始(21)*/
/*用户代码结束*/
}
符合布尔 pbistIsTested (void)
{
/*用户代码开始(22)*/
/*用户代码结束*/
返回((systemREG1->MSTCGSTAT & 0x1U)!= 0U);
/*用户代码开始(23)*/
/*用户代码结束*/
}
布尔 pbistIsTestPassed (空)
{
/*用户代码开始(24)*/
/*用户代码结束*/
布尔状态;
如果((pbistREG->FSRF0 == 0U)&&(pbistREG->FSRF0 == 0U))
{
状态= true;
}
其他
{
状态= false;
}
QJ 代码,我应该用于此代码 PBIST 以进行自检。
您好 Srinivasa、
[引用 userid="542806" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1169003/tms570lc4357-configuration-in-halcogen-tool-in-of-pbist-controller-to-run-self-test-on-all-ram-groups/4398139 #4398139"]我是否应使用此代码 PBIST 进行自检。是的、您可以使用该代码。
--
谢谢、此致、
Jagadish。
#define PBISTALGO_MARCH13N_2PORT 0x00000134
#define PBIST_RAMGROUP_10_MIBSPI1 0x0000000200u /**<*
#define PBIST_RAMGROUP_11_MIBSPI2 0x0000000400u /**<*
#define PBIST_RAMGROUP_12_MIBSPI3 0x0000000800u /**<*
int main (空)
{
int retval;
/*用户代码开始(3)*/
/*用户代码结束*/
PBIST_SelfTest (PBIST_RAMGROUP_10_MIBSPI1、PBISTALGO_MARCH13N_2PORT);
while (true != pbistIsTestCompled();
RetVal = pbistIsTestPassed();
if (retval = 1)
{
pbistStop();
}
}
void PBIST_SelfTest (uint32 raminfoL、uint32 algomask)
{
易失性 uint32 i = 0U;
/* PBIST ROM 时钟频率= HCLK 频率/2 */
/*禁用内存自控制器*/
systemREG1->MSTGCR = 0x00000205U;
/*禁用内存初始化控制器*/
systemREG1->MINITGCR = 0x5U;
/*启用 PBIST 控制器*/
systemREG1->MSINENA=0x1U;
/*启用内存自控制器*/
systemREG1->MSTGCR = 0x0000020AU;
/*根据 GCLK 与 VCLK 的比率至少等待64个 VBUS 时钟周期*/
对于(i=0U;i<(32U +(32U * 1U));i++){//等待*/}
/*用户代码开始(18)*/
/*用户代码结束*/
/*启用 PBIST 时钟和 ROM 时钟*/
pbistREG->PACT = 0x1U;
/*选择要测试的所有算法*/
pbistREG->algo = algomask;
/*选择 RAM 组*/
pbistREG->RINFOL = raminfoL;
/*选择所有 RAM 组*/
pbistREG->RINFUU = 0x00000000;
/* ROM 内容不会覆盖 RINFox 设置*/
pbistREG->over = 0x0U;
/*算法代码从 ROM 加载*/
pbistREG->ROM = 0x3U;
/*启动 PBIST */
pbistREG->DLR = 0x14U;
}
void pbistStop (void)
{
/*用户代码开始(20)*/
/*用户代码结束*/
/*禁用 pbist 时钟和 ROM 时钟*/
pbistREG->PACT = 0x0U;
systemREG1->MSTGCR &= 0xFFFFFFF0U;
systemREG1->MSTGCR |= 0x5U;
/*用户代码开始(21)*/
/*用户代码结束*/
}
符合 int pbistIsTested (空)
{
/*用户代码开始(22)*/
/*用户代码结束*/
返回((systemREG1->MSTCGSTAT & 0x1U)!= 0U);
/*用户代码开始(23)*/
/*用户代码结束*/
}
int pbistIsTestPassed (空)
{
/*用户代码开始(24)*/
/*用户代码结束*/
INT 状态;
如果((pbistREG->FSRF0 == 0U)&&(pbistREG->FSRF0 == 0U))
{
状态= true;
}
其他
{
状态= false;
}
/*用户代码开始(4)*/
/*用户代码结束*/
}
我的评估 板是 TMS570LC43X
我的 PBIST 代码不起作用、您可以就此为我提供帮助。
谢谢、此致
Srinivasa k
您好 Srinivasa、
您的代码不正确、您传递到 PBIST_SelfTest 函数的参数是错误的。
您想要测试 MibSPI1、MibSPI2和 MibSPI3 RAM 存储器、所以首先识别它们的 RAM 组编号

他们属于第10、11和12组
这些 RAM 组将 进入值0x00000004的 march13N 算法

注意到上述情况后、将 RAM 组写入 RINFOL 寄存器、因为这些值小于32

并将你的算法值写入算法寄存器

您的代码应如下所示

我正在附加我在我的末尾测试的项目、请参考并测试它。
e2e.ti.com/.../PBIST_5F00_TEST_5F00_LC43.zip
--
谢谢、此致、
Jagadish。