Question about DCF of MPC5744P

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Question about DCF of MPC5744P

2,801 Views
fyw
Contributor IV

Q1: How can i add a “DCF record”? Do I need special tools?

Q2: Once a “DFC record” has been programed,can I modify or erase it?

Q3: What does the “controlword” mean? (in the pic below)

159653_159653.png1.png

Q4: In the pic above,it mentioned about “STCU clients”,  I wander which STCU registers are the “STCU clients” and what are their “control word”.

Q5: in STCU chapter, I find this(pic below).

Q5A: Is the “00080000” is the “control word”?

Q5B: why 00000400 means ”No self-test” and 00000301 means “Normal startup self-test”?

Q5C: which register is corresponding to this “DCF record”?

Q5D: why does need to store this “DCF record” as first record? If I store it in the other position(except
the first), what will happen?

159654_159654.png2.png

Thank you very much!

Labels (1)
13 Replies

1,765 Views
petervlna
NXP TechSupport
NXP TechSupport

Hi,

A1: Via standard programing procedure you write your DCF record to UTEST flash memory space.

A2: The UTEST memory is OTP memory. No later modification is possible on programmed DCF record specific address.

A3: Control word: Information to locate the corresponding DCF client internal to the device (pointer to the location of a register internal to the device)

A4: All STCU registers can be programmed via DCF records.

      The DCF client address is made from register offset.

          example:

          If register STCU2 Configuration Register (STCU_CFG) has offset of 0xC than its DCF address will be

          0000000_00000011 -> The registers are 32bit aligned so this represents 1100 = 0xC which is STCU_CFG offset.

          Following this example you can construct all DCF addresses for STCU2 module.

Q5: in STCU chapter, I find this(pic below).

Q5A: Is the “00080000” is the “control word”?

A5A:  It is the STCU DCF client + address (as shown below)

pastedImage_1.png

Q5B: why 00000400 means ”No self-test” and 00000301 means “Normal startup self-test”?

A5B: This is the write to register STCU_RUN

          - 0x00000400 sets BYP bit to 1

pastedImage_2.png

         - 0x00000300 sets MBIST and LBIST PLL enable and set RUN bit in STCU_RUN

pastedImage_4.png

Q5C: which register is corresponding to this “DCF record”?

A5C: STCU_RUN

Q5D: why does need to store this “DCF record” as first record? If I store it in the other position(except the first), what will happen?

A5D: The Offline BIST is enabled by default. After reset it starts execution while DCF records are loaded. To prevent any issues its recommended to      disable it as fist DCF      record, if BIST bypass is required. Otherwise configure correct Offline BIST execution via DCF records and run the test successfully.

Peter

1,765 Views
fyw
Contributor IV

Thank you Peter! I still have some questions

A1: Via standard programing procedure you write your DCF record to UTEST flash memory space.

   ------ I am using S32DS&PELink to develop MPC5744p, i wander can i program DCF records like program the "RCHW" , for example like:

            const uint64_t __attribute__ ((section(".dcf"))) DCFStart = 0x05AA55AF00000000;  (of course section(".dcf") is defined from 0x00400200)

            const uint64_t __attribute__ ((section(".dcf"))) DCFFirstRecord= xxxxxxxxxxxxxxxx;

    Is this OK? If it's not, can you give a example? Thank you very much!

Q2: i don't find there is a STCU_RUN register(only find the STCU_RUNSW register which offset is 0x4) in the STCU2 chapter of MPC5744p RM.

      so i wander which document describe the STCU_RUN register ? Thank you very much!

0 Kudos

1,765 Views
petervlna
NXP TechSupport
NXP TechSupport

A1: I am not familiar with S32DS (Anyway it no supports UTEST flash programming), but the DCF programming procedure is common as for other flash blocks. Program it via standard flash procedure. You can find SSD drivers on our web site.

I prefer to program it via lauterbach debugger scripts.

A2: This register description is missing in reference manual.

It will be updated as follows.

pastedImage_0.png

Peter

1,765 Views
gvictorio
Contributor III

Hey Peter... do you have sample Lauterbach scripts for writing DCF records?

Since they're OTP I wouldn't want to make a mistake. Thanks!

0 Kudos

1,765 Views
petervlna
NXP TechSupport
NXP TechSupport

Hi,

Attached is my example script for DCF programming via Lauterbach.

Peter

0 Kudos

1,765 Views
fyw
Contributor IV

i want to enable MBIST/LBIST  and Checker core. The follows is what i write:

-------------------------------------------------------------------------------------------------------------------------
    FLASH.program ALL
    data.set 0x00400200 %QUAD 0x05AA55AF00000000 ;DCF Start Record
   
    ;insert below your DCF records to be programmed
    
    data.set  0x00400218 %QUAD 0x0000030100080000 ;By default – enable STCU module
    data.set  0x00400220 %QUAD 0x121000080008000C ;Enable all BIST test
    data.set  0x00400228 %QUAD 0x0000000101000024 ;Enable Checker Core CCE=1  Does this right?

    FLASH.program off
-------------------------------------------------------------------------------------------------------------------------

I  wander is it right?  

if no, what is the right way?

if yes,

Q1:

why is the first record putted at address 0x00400218?   (PS: i read AN5196 MPC5744P Startup STCU Overview it says "If no other DCF records have been written to the UTEST area, the first open UTEST memory address should be 0x0040_0218")

Q2: what is putted at address 0x00400208-0x00400217 ?

Thank you very much!

0 Kudos

1,765 Views
petervlna
NXP TechSupport
NXP TechSupport

Hi,

To configure BIST is not so simple.

First of all it is good to have clear understanding of BIST and STCU module. I recommend you to carefully read reference manual.

2. It is good to specify for which microcontroller it you want to execute BIST. And which cut of device.

3. Are you talking about offline or online(Shutdown) BIST?

To understand DCF records and their usage I suggest you to read AN5131 and DCF chapter in reference manual.

http://cache.nxp.com/files/microcontrollers/doc/app_note/AN5131.pdf?fsrch=1&sr=1&pageNum=1 

For DCF STCU client s used special strategy with triple voting and spread address.

For MPC5744P the DCF user area starts at 0x400200 and each record is 64bit long. It depends on cut how many records are already loaded in DCF memory, so the offset for new records must be set correctly for any new record.

for example:

0x400208 is last record in DCF

new one must be placed at 0x400210.. etc...

BIST and DCF is really complex theme and user should have good overview how it works before any attempt to program UTEST flash area as this parth of memory is OTP and also censorhip key is stored there.

To program offline BIST you need to set correctly roughly 30 records with special DCF strategy.

Otherwise the result will be failure all the time.

Peter

0 Kudos

1,765 Views
fyw
Contributor IV

 i am talking about the "offline" (power on reset  BIST).   Thank you very much!

0 Kudos

1,765 Views
petervlna
NXP TechSupport
NXP TechSupport

Ok.

Then you need to program DCF records according to desired offline BIST execution.

Have in mind that STCU2 module registers are protected and you need to first unlock them.

This will be your first DCF records.

Then you can configure STCU2 module via DCF records.

One more remark: do not forget to refresh STCU2 module unlock watchdog otherwise after STCU2 watchdog expiration the STCU2 registers will lock again.

Best example is to follow mentioned application note for BISTs which also include examples. And modify it according to MPC5744P and your needs.

Peter

0 Kudos

1,767 Views
fyw
Contributor IV

Dear Peter:

      Thank you for your reply. I read the RMs and ANs, i still get some questions.

First i read MPC5744P RM, i find that it give details about  how to configure register during shutdown self-test initiation procedure. But about startup self-test  sequence, it's much simpler. All it say is 00000301h_00080000h. In your previous reply, you say about 30 records should be set to program offline BIST. So about MPC5744P, i still don't know how to set the DCF records. i wander is there a table like 70-4 for Startup self_test sequence?

aaa.PNG

bbb.PNG

ccc.PNG

Another question is why there is no bit description of register , for example like the follows.

pastedImage_12.png

i read the AN5196_MPC5744P Startup STCU Overview. It says the first open UTEST memory is 00400218h. Does that mean if i want to program my dcf, i should start from 00400218h and nxp has already programed address form 00400200 - 00400217h?

nnn.PNG

Thank you very much!

0 Kudos

1,767 Views
petervlna
NXP TechSupport
NXP TechSupport

Hi,

In my MPC5744P device cut(0N15F) is the offline self-test already programed from factory in UTEST area. It is really enough to write DCF record to start offline BIST execution. Like underlined record from my device.

pastedImage_2.png

In case you want to setup Offline BIST differently from factory default settings you must configure STCU2 module via DCF records first and then start BIST.

Regarding the start of DCF user area:

On MPC5744P it DCF User area starts from 0x400200. But in factory we program some few DCF records in user DCF area (no idea why - most probably to fix some issues). So the best way is to check on sample where in DCF user area is programed DCF stop record (0xFFFF_FFFF_FFFF_FFFF) and start programing your DCF records there.

Peter

1,767 Views
fyw
Contributor IV

Thank you Peter!

I find that  the UTEST area of MPC5744P we are using is like the follows.  I think if i want to enable startup bist, i only need to add 121000080008000c at 0x400218, is that right?

if i want to enable the checker core, 0x0000000101000024 at 0x400220 will be ok? Thank you very much!

pastedImage_1.png

0 Kudos

1,767 Views
gvictorio
Contributor III

Thanks!

0 Kudos