fuse prog

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

fuse prog

Jump to solution
13,158 Views
lifusong
Contributor IV

Dear .

the uboot(imx6q-2014.04) Provided a command  fuse

like as  fuse read 4 2 2 will show MAC

and fuse prog 4 2 0x11223344

the question.  I can read mac info through command fuse read 4 2 2.

but can't set  through command fuse prog 4 2 0x11223344

anybody can help me.

Labels (1)
1 Solution
6,957 Views
BiyongSUN
NXP Employee
NXP Employee

We have put here lots of times.

It is OTP.

only can progrem once.

Can not return back.

Please check the following webpage

OTP - Wikipedia, the free encyclopedia

View solution in original post

0 Kudos
27 Replies
6,560 Views
jith
Contributor II

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.

0 Kudos
6,560 Views
igorpadykov
NXP Employee
NXP Employee

yes it is possible to fuse only the required bit.

Best regards
igor

0 Kudos
6,560 Views
jith
Contributor II

Hi Igor,

Could you please provide the procedure to fuse one bit?

I am not sure on the procedure.Do we need to keep default value of the another non-required bit?

0 Kudos
6,560 Views
igorpadykov
NXP Employee
NXP Employee

procedure is the same, just provide value for fusing which

differs by one bit compared with existing.

Best regards
igor

0 Kudos
6,561 Views
davidpatton
Contributor III

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?

0 Kudos
6,561 Views
igorpadykov
NXP Employee
NXP Employee

> I need to set the lock bits to remove the possibility of setting these to all 1's?

right

6,560 Views
davidpatton
Contributor III

How does one set the OCOTP_LOCK register? The reference manual, 44.5.9, shows this register as read-only.

0 Kudos
6,608 Views
igorpadykov
NXP Employee
NXP Employee

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!

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

0 Kudos
6,609 Views
lifusong
Contributor IV

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.

0 Kudos
6,611 Views
lifusong
Contributor IV

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

0 Kudos
6,611 Views
BiyongSUN
NXP Employee
NXP Employee

fusong,

Some fuse may burned already. the fuse is OTP cannot burn again.

0 Kudos
6,611 Views
lifusong
Contributor IV

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.

0 Kudos
6,611 Views
BiyongSUN
NXP Employee
NXP Employee

you can try it in the linux using echo command.

/sys/fsl_otp

             
Use echo command to burn the fuse.

Ex:
echo 0x00006200 > /sys/fsl_otp/HW_OCOTP_GP1

Still need to reminder you the fuse is OTP.

0 Kudos
6,611 Views
lifusong
Contributor IV

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.

0 Kudos
6,611 Views
lifusong
Contributor IV

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.

0 Kudos
6,611 Views
BiyongSUN
NXP Employee
NXP Employee

to burn the fuse, you need to do bitwise.

the 0s could not become 1s.

0 Kudos
6,611 Views
lifusong
Contributor IV

Dear Biyong.

  so,how to reset the board to factory. (reset to not burn status)

0 Kudos
6,958 Views
BiyongSUN
NXP Employee
NXP Employee

We have put here lots of times.

It is OTP.

only can progrem once.

Can not return back.

Please check the following webpage

OTP - Wikipedia, the free encyclopedia

0 Kudos
6,611 Views
BiyongSUN
NXP Employee
NXP Employee

FInd one board has not been burned fuse to try mac address

OTP - Wikipedia, the free encyclopedia

0 Kudos
6,611 Views
lifusong
Contributor IV

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:/ #

0 Kudos