We have put here lots of times.
It is OTP.
only can progrem once.
Can not return back.
Please check the following webpage
Hi,
Is it possible fuse only the required bit. Example is like I need to fuse the 2nd bit only for a specific configuration and remaining bits are not required for my requirement. Is there any option/procedure to program fuse to meet mentioned requirement.
So if I understand correctly, this is like programming flash, on a bit-wise basis; a 0 can be changed to a 1, but a 1 cannot be changed to a 0, without an erase cycle, however in the case of OTP, there is no erase cycle. In either case, writing a 0 to a 0 does nothing.
Is this where the OCOTP_LOCK register comes into play? Once I set the appropriate BOOT_CFG and MAC address eFuses, I need to set the lock bits to remove the possibility of setting these to all 1's?
Hi li
fuses are one time programmable registers, they can not be reprogrammed to another
values. For fuse blow procedure one can refer to below link
Q&A: How to program i.MX6 eFUSE?
https://community.freescale.com/docs/DOC-95458
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Dear igorpadkov.
you said fuses are one time programmable registers, they can not be reprogrammed to another
but this link Re: MAC fuses lock can re-set the mac .
can you tell me the reason?
by the way,my board is imx6q.
thanks.
i had check OCOTP_LOCK[9:8] == 00b means writing shadow and OTP fuse is enabled.
i try to modify this register with command fuse prog 0 0 20220302 ,don't have any effect.
fuse read 0 0 get the value is 0x20220002
Dear BiyongSUN .
thanks for your help. if i write error value into OCOTP_MAC0 and OCOTP_MAC1 how to modify to right value.
and I try to fuse prog 4 2 0x11eeddff on other board.and still can't wirte value to OCOCP_MAC0.
the other board OCOTP_MAC0 OCOTP_MAC1 is zero.
is the /sys/fsl_otp/HW_OCOTP_xxxx driver ok?
the HW_OCOTP_LOCK = 0x20220302 (I don't know reason this value chang to 0x20220302 form 0x20220002, I only at uboot command try fuse prog command).
I try to run "echo 0x20220002 > /sys/fsl_otp/HW_OCOTP_LOCK" many times.
and the HW_OCOTP_LOCK still is 0x20220302.
so i try to run "echo 1 > /sys/fsl_otp/HW_OCOTP_LOCK" and found this value had been changed to eaba7f02
what is the reason? how can fill right value to HW_OCOTP_XXXX.
and before run fuse prog 4 2 xxxx.
the HW_OCOTP_MAC0 and MAC1 is zero.
I try to change this value and use command "echo 0x11223344 >/sys/fsl_otp/HW_OCOTP_MAC0",and can't change this value.
but echo 1 > /sys/fsl_otp/HW_OCOTP_MAC0 will change this value to 0xd3ee7bf5.I don't know the reson ,why this value will change to 0xd3ee7bf5,command means write one to HW_OCOTP_MAC0.
please see below info.
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_MAC0
0xd3ee7bf5
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_LOCK
0xeaba7f02
root@sabresd_6dq:/ # echo 1 0x20220002 > /sys/fsl_otp/HW_OCOTP_LOCK
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_LOCK
0xeaba7f03
root@sabresd_6dq:/ # echo 1 > /sys/fsl_otp/HW_OCOTP_LOCK
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_LOCK
0xeaba7f03
root@sabresd_6dq:/ # echo 2 0x20220002 > /sys/fsl_otp/HW_OCOTP_LOCK
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_LOCK
0xeaba7f03
root@sabresd_6dq:/ # echo 1 0x20220002 > /sys/fsl_otp/HW_OCOTP_LOCK
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_LOCK
0xeaba7f03
root@sabresd_6dq:/ # echo 0x20220002 > /sys/fsl_otp/HW_OCOTP_LOCK
root@sabresd_6dq:/ # cat /sys/fsl_otp/HW_OCOTP_LOCK
0xeaba7f03
root@sabresd_6dq:/ #