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.

RM48L530 safety microcontroller SafeTI Diagnostic Library 2.2.0

Other Parts Discussed in Thread: RM48L530, RM48L950

Hello, I have a question about SafeTI Diagnostic Library module project. I download the "SL_RM48L950_NoOS" from TI website and try to run it on the RM48L530. However, I find the Flash and Ram size are different between cpu 950(3Mb and 256Kb) and 530(2Mb and 192Kb). When I run the project in the 530, the program will fall into the endless loop at the line 596 of the "sys_startup.c",as flowing grahp: 

/* Get SRAM PBIST Status */
SL_SelfTest_Status_PBIST(&failInfoPBISTSRAM);
if (failInfoPBISTSRAM.stResult == ST_PASS) {
initSTPassCount++;
} else {
initSTFailCount++;
for(;;)
{
}/* Wait */
}

The pbist selftest always return the value of "0xAB".

Hence, I modify the "memory map" which in the document "SL_RM48L950_NoOS_sys_link.cmd". It was as below:

MEMORY 


VECTORS (X) : origin=0x00000000 length=0x00000020 
FLASH0 (RX) : origin=0x00000020 length=0x0017FFE0 
FLASH1 (RX) : origin=0x00180000 length=0x00180000 

STACKS (RW) : origin=0x08000000 length=0x00001800 
RAM (RW) : origin=0x08008000 length=0x00028000 
PROFILE(RW) : origin=0x08036000 length=0x00008000 /* Added for profiling purposes */ 
LOG (RW) : origin=0x080053B0 length=0x00002000 fill=0xDEADBEEF/* Added for logging purposes */ 
FEE (R) : origin=0xF0200000 length=0x00000064 fill=0xDEADBEEF /* For FEE testing, Valid only for sample application */ 

Now, after calculating, I have modified like following:

MEMORY 


VECTORS (X) : origin=0x00000000 length=0x00000020 
FLASH0 (RX) : origin=0x00000020 length=0x000FFFE0 
FLASH1 (RX) : origin=0x00100000 length=0x00100000 

STACKS (RW) : origin=0x08000000 length=0x00001800 
RAM (RW) : origin=0x08008000 length=0x00018000 
PROFILE(RW) : origin=0x08026000 length=0x00008000 /* Added for profiling purposes */ 
LOG (RW) : origin=0x080053B0 length=0x00002000 fill=0xDEADBEEF/* Added for logging purposes */ 
FEE (R) : origin=0xF0200000 length=0x00000064 fill=0xDEADBEEF /* For FEE testing, Valid only for sample application */ 
}

The program can be bulit successfully, but it falls into the endless loop at the line 596 of "startup.c" as before. Can you tell me that how to modify the project. Do I need modify it anymore?

  • Clark,

    I think the issue is that just changing the linker command file doesn't fix the source code;  which is still trying to test all 4 banks of 64K byte RAM.

    This is the line that needs to be changed  (before line 596) .. it's the line that kicks off the self test:

    The bit mask 0x0830 0020 consists of bits 27, 21, 20, and 5 being set.


    As you can see in the datasheet this corresponds to the 4 banks of ESRAM:

    But the last bank is the one you don't want to test.  

    So try changing 0x0830 0020 -> 0x0030 0020.

    Best Regards,

    Anthony