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.
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:
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
----------------------------------
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.
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