Q&A: How to program i.MX6 eFUSE?

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

Q&A: How to program i.MX6 eFUSE?

Q&A: How to program i.MX6 eFUSE?

Q:

How to program i.MX6 eFUSE?


A:

what about using the mfg tool? In the end only the supplies, USB OTG and the boot mode pins need to be connected.

The customers Idea was to have all devices (i.MX6 eFUSE, Flash, PFUZE, etc) pre- programmed before mounting on the board.

I presented the flows we support (MFG Tool, Platform SDK) for eFUSE programming last Friday when I was at the customer.


KITPF0100SKTEVBE Product Summary Page

MfgTools is the most convenient way to burn eFuse. Or the customer can burn the fuse on their jig/socket board by the u-boot:

How to Fuse in U-Boot

U-Boot contains a tool, imxotp, which is used for fusing.

U-Boot > imxotp

imxotp - One-Time Programable sub-system

Usage:

imxotp imxotp read <index>

- read fuse at 'index'

imxotp blow [--force] <index> <value>

- blow fuse at 'index' with hex value 'value'

Tips: 'addr' to 'index':

convert 'index' from 'address'

index = (addr - otp_base) / 0x10

eg, addr is 0x021bc410, otp_base is 0x021bc400, the index = 1

  • '--force' must be present in order to blow the fuse. Command will abort if '--force' is missing.
  • index = (addr - otp_base) / 0x10, where the addr is the address of the fuse you want to operate, the otp_base is the base address of the fuse block.
  • 'value' should correspond to fuse settings according to the fuse map and desired fuse configuration.

----------------------------------

FIrst of all thanks for your reply. However both flow assumes the i.MX6 is already soldered on the board. Please note the specific request was if it is possible (and we can support a programming house) to pre program the efuses BEFORE they are soldered on the PCB thus on a standard programmer. Take an FLASH programmer as an example.

Labels (3)
Tags (1)
Comments

Hi,

On our customization board, I had found OTP value that could be overwritten by set more bit to '1'.

Could OTP value be locked after programming by u-boot command?

ex 1:

MX6SDL U-Boot > imxotp blow --force 23 1ff0b6

Current fuse at (index: 0x23) value: 0xFF0B6

Blowing fuse at index: 0x23, value: 0x1FF0B6

Reloading shadow registers...

Operation succeeded fuse at (index: 0x23) value: 0x1FF0B6

ex 2:

MX6SDL U-Boot > imxotp blow --force 23 2ff0b6

Current fuse at (index: 0x23) value: 0x1FF0B6

Blowing fuse at index: 0x23, value: 0x2FF0B6

Reloading shadow registers...

Operation succeeded fuse at (index: 0x23) value: 0x3FF0B6

Thx,

Allen

Hello Allen,

I kinda faced the same problem, do you have a possible explanantion to why this could be happening? 

Observation: The BootROM uses the keys from OTP but the fuse command and imxotp command use the value from shadow registers. This is the reason. We don't have the code of BootROM but I think BootROM takes the values from the original OTP registers and not from Shadow registers. I have to carefully observe the code of these commands which I haven't yet

I posted this as a seperate question: OTP and Shadow registers - Super Root Keys for Secure Boot 

Greets,

Satya

No ratings
Version history
Last update:
‎09-10-2020 02:52 AM
Updated by: