How to detect if device was fused (secure boot)

cancel
Showing results for 
Search instead for 
Did you mean: 

How to detect if device was fused (secure boot)

572 Views
OzTheWizard
Contributor II

Hi,

 

is there a way to check values of OTPMK and SRKH after they are written to device, PROGFB(0x2) instruction is issued and device is restarted?

In short is there a way to check if any of fuses needed for secure boot are blown?

 

 

0 Kudos
6 Replies

558 Views
OzTheWizard
Contributor II

Thank you for your support @yipingwang.

 

However, I'm still facing problems. I followed the exact instructions on secure boot procedure of flashing OPTMK and SRKH. I'm using Grapeboard from Scalys based on LS1012A.

  1. Power on device.
  2. Append 1,8V at TA_PROG_SFP. 
  3. Write OTPMK values.
  4. Check SNVS second nibble that it matches 0, indicating that OTPMK is fused.
  5. Write SRKH.
  6. Read out SRKH for check.
  7. Write SFP_INGR[INST] with the PROGFB(0x2) instruction to blow the fuses
  8. Removed 1.8V.
  9. Write "reset" command.
  10. After device reboot, repeat step 3. and 5.

Everything is fine except step 9. It turns out neither of registers, OTPMK and SRKH, were fused. Check the output.

SRKH:

=> md 01e80254 0x10
01e80254: 00000000 00000000 00000000 00000000 ................

 

OTPMK:

=> md.b 1e90014 4
01e90014: 88 00 09 00 ....

 

Am I missing something? Is there a way to check whether device detects TA_PROG_SFP?

0 Kudos

539 Views
yipingwang
NXP TechSupport
NXP TechSupport

step 7:

mw 1e80020 0x02000000

 

step2:

Enable POVDD

 LS1012ARDB:
• Through I2C transactions, write to LDO1CT register to change LDO1EN bit in vr5100
• i2c mw 0x08 0x6c 0x10
FRWY-LS1012A:
• Put J37 to enable PROG_SFP
• Through I2C transactions, write to LDO1CT register to change LDO1EN bit in vr5100
• i2c mw 0x08 0x6c 0x10

0 Kudos

533 Views
OzTheWizard
Contributor II

IMHO command "i2c mw 0x08 0x6c 0x10" controls MC34VR5100A1EP and provides power supply for SFP_PROG pin. That is not the case for Grapeboard, which uses external PS instead.

As described in steps of previous post I did all by book. However, my OTPMK and SRKH values are deleted once device is restarted despite the fact I appended 1.8V and blew the fuses. Do you have any clue why?

 

0 Kudos

525 Views
yipingwang
NXP TechSupport
NXP TechSupport

In your step 7, have you executed the following command in u-boot.

mw 1e80020 0x02000000

NOT

mw 1e80020 0x2

0 Kudos

510 Views
OzTheWizard
Contributor II

I used correct command.

The issue is somewhat related to external power supply appended to SFP_PROG pin. There seems to be  no current draw.

0 Kudos

565 Views
yipingwang
NXP TechSupport
NXP TechSupport

Check if SRKH is fused.

=> md $SRKHR0 0x10

01e80254: 00000000 00000000 00000000 00000000 ................

01e80264: 00000000 00000000 00000000 00000000 ................

Zero indicates that SRKH is not fused.

 

Check if SRKH is fused.

Then, following could be the value on dumping SRK hash.

=> md $SRKHR0 0x10

01e80254: d4fec2fd 9e567f31 5c422818 fd5c7be8 ....1.V..(B\.{\.

01e80264: 8fabbe34 702a79df e185ff2d 8796a232 4....y*p-...2...

 

1. Verify the SNVS register - HPSR to check whether OTPMK is fused already.

=> md $SNVS_HPSR_REG

88000900

OTPMK_ZERO_BIT (second nibble) is 1, indicating that OTPMK is not fused

 

Check if OPTMK is fused.

=> md $SNVS_HPSR_REG

80000900

OTPMK_ZERO_BIT (second nibble) is 0, indicating that OTPMK is fused.

Read OTPMK.

=> md $OTPMKR0 0x10

01e80234: ffffffff ffffffff ffffffff ffffffff ................

01e80244: ffffffff ffffffff ffffffff ffffffff ................