Dear Sirs,
We have some questions regarding the self-test function of the RM46. We use the code which is generated by the HALOGEN 4.03 Version.
In regard to our software certification procedure according DIN61508 we want to use the protocol of this chat to add in our TÜV Safety Documentation to clarify certain code fragments which are not well described in your manual.
Your comments would be used to get the TÜV release on TI libraries and the associated Software Code.
Source : errata_PBIST_4()
/* ROM_init Setup using special reserved registers as part of errata fix */
/* (Only to be used in this function) */
*(volatile uint32_t *)0xFFFF0400U = 0x0000000AU;
*(volatile uint32_t *)0xFFFF040CU = 0x0000EE0AU;
This leads to the FMTM Test Controller (in SPNU514A no other comment to FMTM and its registers)
/* Load PBIST ALGO to initialize the ROMs */
*(volatile uint32_t *)0xFFFFE400U = 0x00000001U;
*(volatile uint32_t *)0xFFFFE440U = 0x00000025U;
*(volatile uint32_t *)0xFFFFE404U = 0x62400001U;
*(volatile uint32_t *)0xFFFFE444U = 0x00000004U;
*(volatile uint32_t *)0xFFFFE408U = 0x00068003U;
*(volatile uint32_t *)0xFFFFE448U = 0x00000000U;
*(volatile uint32_t *)0xFFFFE40CU = 0x00000004U;
*(volatile uint32_t *)0xFFFFE44CU = 0x00006860U;
*(volatile uint32_t *)0xFFFFE410U = 0x00000000U;
*(volatile uint32_t *)0xFFFFE450U = 0x00000001U;
*(volatile uint32_t *)0xFFFFE540U = 0x000003E8U;
*(volatile uint32_t *)0xFFFFE550U = 0x00000001U;
*(volatile uint32_t *)0xFFFFE530U = 0x00000000U;
FFFF E400 is the start Address for the PBIST Controller. The following Register 000-15C are reserved.
/* SELECT ROM */
if (ROM_count == 1U)
{
/* SELECT PBIST ROM */
*(volatile uint32_t *)0xFFFFE520U = 0x00000002U;
*(volatile uint32_t *)0xFFFFE524U = 0x00000000U;
pbistREG->RAMT = 0x01002008U;
}
else
{
/* SELECT STC ROM */
*(volatile uint32_t *)0xFFFFE520U = 0xFFF0007CU;
*(volatile uint32_t *)0xFFFFE524U = 0x0A63FFFFU;
pbistREG->RAMT = 0x02002008U;
}
1CC is the last documented Register
/* Setup using special reserved registers as part of errata fix */
/* (Only to be used in this function) */
pbistREG->rsvd1[4U] = 1U;
pbistREG->rsvd1[0U] = 3U;
/* PBIST_RUN */
pbistREG->rsvd1[1U] = 1U;
In reg_pbist.h:
uint32_t DLR; /**< 0x0164: Datalogger Register */
uint32_t rsvd1[6U]; /**< 0x0168 - 0x017C: Reserved */
uint32_t PACT; /**< 0x0180: PBIST Activate Register */
if ((pbistREG->FSRA0 | pbistREG->FSRA1 | pbistREG->FSRDL0 | pbistREG->rsvd3 |
pbistREG->FSRDL1 | pbistREG->rsvd4[0U] | pbistREG->rsvd4[1U]) != 0U)
Why is here not FSRF0 or FSRF1 used for failure detection
/* ROM restore default setup */
/* (must be completed before continuing) */
*(volatile uint32_t *)0xFFFF040CU = 0x0000AA0AU;
*(volatile uint32_t *)0xFFFF040CU = 0x0000AA05U;
*(volatile uint32_t *)0xFFFF0400U = 0x00000005U;
Unkown Register
Please comment the pmu setting within these function.
Please verify that all of the settings are correct and that no error exists for this function.
Why are these registers called as reserved and whats the reason for hiding them in the documentation.
Best Regards A. Friebel