How to read i.MX6DQ unique ID.

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

How to read i.MX6DQ unique ID.

Jump to solution
7,594 Views
satoshishimoda
Senior Contributor I

Hi all,

We have some questions about i.MX6DQ unique ID.

Our partner want to read i.MX6DQ unique ID.

Then, we tried the procedure written in chapter 46.3.1.2 in IMX6DQRM (Rev.2) with memtool in Linux BSP to read unique ID.

However, we cannot read it.

On the other hands, we tried read 0x021B_C410 and 0x021B_C420 by memtool directly.

In this case, we got the values it looked like a unique ID.

The values in 0x021B_C410 and 0x021B_C420 are different for each SABRE-SD board, and this value is not changed by re-boot.

So believe these are the unique ID.

Then, please see our questions as following.

[Q1]

This procedure (reading 0x021B_C4x0 directly by memtool) is no problem?

[Q2]

If the answer to "yes" to Q1, our partner want to know why there is the read procedure written in chapter 46.3.1.2.

I guess, some OCOTP registers can be read by memtool directly, and some registers cannot be read directly.

Maybe banks 0, 1, 2, 4 can be read by memtool, and other banks cannot be read.

And the procedure in chapter 46.3.1.2 is required to read bank 3, 5.

Is my understanding correct?

Best Regards,

Satoshi Shimoda

Labels (4)
Tags (1)
1 Solution
2,157 Views
Yuri
NXP Employee
NXP Employee

You may use Linux sysfs options of Linux :

root@linaro-ubuntu-desktop:~# cat /sys/fsl_otp/HW_OCOTP_CFG0

0xd72d7394

root@linaro-ubuntu-desktop:~# cat /sys/fsl_otp/HW_OCOTP_CFG1

0xf1361d4

OTP Bank0 Word1 - contains the first word of the UID.
OTP Bank0 Word2 - contains the second word of the UID.

  Please look at sections 46.5.10 [Value of OTP Bank0 Word1 (Configuration and

Manufacturing Info.) (OCOTP_CFG0)] and 46.5.11 Value of OTP Bank0 Word2
(Configuration and Manufacturing Info.) (OCOTP_CFG1) of the i.MX6 DQ Reference
Manual (IMX6DQRM, Rev 2, 06/2014).


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

3 Replies
2,158 Views
Yuri
NXP Employee
NXP Employee

You may use Linux sysfs options of Linux :

root@linaro-ubuntu-desktop:~# cat /sys/fsl_otp/HW_OCOTP_CFG0

0xd72d7394

root@linaro-ubuntu-desktop:~# cat /sys/fsl_otp/HW_OCOTP_CFG1

0xf1361d4

OTP Bank0 Word1 - contains the first word of the UID.
OTP Bank0 Word2 - contains the second word of the UID.

  Please look at sections 46.5.10 [Value of OTP Bank0 Word1 (Configuration and

Manufacturing Info.) (OCOTP_CFG0)] and 46.5.11 Value of OTP Bank0 Word2
(Configuration and Manufacturing Info.) (OCOTP_CFG1) of the i.MX6 DQ Reference
Manual (IMX6DQRM, Rev 2, 06/2014).


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

2,157 Views
satoshishimoda
Senior Contributor I

Hi Yuri,

Thank you for your reply.

I understood we can use "cat /sys/fsl_otp/xxx" to check OCOTP value.

Then, could you reply me about Q2 also?

I tried read OCOTP with the above cat command, but bank 3 & 5 seem always return 0x0.

So I guess the read procedure written in chapter 46.3.1.2 is required to read bank 3 or 5.

Is this correct?

Best Regards,

Satoshi Shimoda

0 Kudos
2,157 Views
Yuri
NXP Employee
NXP Employee

  You are right : the section 46.3.1.2 (Fuse and Shadow register read) of the i.MX6 RM

(IMX6DQRM, Rev 2, 06/2014 ) provides general procedure to read fuses. Another way,

if Linux in itself does not allow access to all fuses.

~Yuri.