Skip to main content

[MPC5xxx] No debugger access due to a censored device - Knowledgebase / FAQs by core architecture / MPC5xxx / SPC5xx - Lauterbach Support

[MPC5xxx] No debugger access due to a censored device

The MPC5XXX processors implement a censorship feature. When enabled, the JTAG debugger is locked out and debugging or tracing is impossible.

The debug implementation on the MPC5XXX does not allow detecting if a processor is censored or not. The indication of active censorship is that reading the JTAGID works, but any further accesses, fail. The debugger will report a Debug Port Fail  error and the additional error description in the message AREA will look like follows:

JTAGID=0x______1D
Error: received invalid OSR (0x000)
is the device censored?

If the processor was censored on intention, it is possible to regain access using this command sequence:

SYStem.DETECT CPU
SYStem.Option.KEYCODE 0xFEEDFACECAFEBEEF
SYStem.Up

Note:

  • If the password (keycode) is unknown or illegal (e.g. after accidentally erasing the shadow row), the processor is locked forever and can not be recovered, unless the application in flash provides a feature to unlock the processor (e.g. via CAN).
  • Some processors require the upper and lower 32-bit parts to be exchanged for SYStem.Option.KEYCODE (e.g. 0xCAFEBEEFFEEDFACE instead of 0xFEEDFACECAFEBEEF)
Helpful Unhelpful

10 of 12 people found this page helpful

Comments (3)

Arun Mukundan

Hi, consider my password is 12345678123456781234567812345678. How can I provide this data through lauterbach

1, using space as a seperator. eg: 0x12345678 0x12345678 0x12345678 0x12345678

2, using comma seperator. eg: 0x12345678,0x12345678,0x12345678,0x12345678

please help me to resolve this.


Wafi Jmal

Hello,

If I understand you request correctly this script should help:

&password_1="0x11111111,0x22222222,0x33333333,0x44444444"

&password_2="0x55555555 0x66666666 0x77777777 0x88888888"

&output_1=STRing.Replace("&password_1",",0x","",0.)

&output_2=STRing.Replace("&password_2"," 0x","",0.)

print "&output_1"

print "&output_2"

ENDDO

Output:

0x11111111222222223333333344444444

0x55555555666666667777777788888888

Please let me know your feedback on this

Best Regards

Wafi


Arun Mukundan

Hi Wafi,

Thanks for the help, PFB is the exact script I'm executing. I think now I'm sending the keycode as expected.

SYStem.RESet

SYStem.BdmClock 16.0MHz

SYStem.DETECT CPU

SYStem.Option.ResBreak OFF

SYStem.Option.WaitReset 3s

SYStem.Option KEYCODE 0x12345678 0x12345678 0x12345678 0x12345678 0x12345678 0x12345678 0x12345678 0x12345678

System.Option ResetMode FUNCtional

SYStem.Option.WATCHDOG OFF

SYStem.Up

After this either I end up with target reset or debug port fail


Add a comment

ID-0
To prove you are a human, please tell us the text you see in the CAPTCHA image