Detect whether running on i.MX6(UL/ULL) or i.MX7(S/D)

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

Detect whether running on i.MX6(UL/ULL) or i.MX7(S/D)

911 Views
christian_mauderer
Contributor III

Hello,

I'm writing code that should run on either an i.MX7 (Solo or Dual) or an i.MX6UL/ULL. On the i.MX7, the boot loader initializes the ARM System Counter (especially enabling it in the CNTCR register). On the i.MX6 the used boot loader doesn't do that. Therefore I have to initialize the CNTCR register if it isn't already done. Now my problem: The register is located at different memory locations in the i.MX6 (0x021dc000) and i.MX7 (0x306c0000). The usual FDTs (like for example in Linux) do not provide that information.

Is there a way to detect whether I'm running on an i.MX6 or on an i.MX7?

I had a look at some of the registers accessible via ARM CP14 or CP15 like DBGDEVID or MIDR. But I haven't found one yet that is i.MX specific and where the i.MX reference manual would define a value (so I can be sure that it is still the same on a newer chip revision).

Best regards

Christian

0 Kudos
Reply
4 Replies

903 Views
igorpadykov
NXP Employee
NXP Employee

Hi christian_maude

 

one can try to detect difference for example by reading fuses USB_PID,USB_VID

(description can be found in Chapter Fusemap Reference Manual) :

from ucl2.xml from mfg tool
<STATE name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>

<STATE name="BootStrap" dev="MX7D" vid="15A2" pid="0076"/>

 

Best regards
igor

0 Kudos
Reply

898 Views
christian_mauderer
Contributor III

Hello Igor,

thanks for the response. But I think I would have the same problem that I don't know the registers. For reading the fuses I would have to use the OCOTP which is locatet at 0x30350000 on i.MX7 and at 0x021bc000 on i.MX6.

Beneath that the fuses could be changed, couldn't they? I forgot to mention that I work only on an OS that might have different end users.

Best regards

Christian Mauderer

0 Kudos
Reply

891 Views
igorpadykov
NXP Employee
NXP Employee

Hi Christian

 

vid, pid fuses can not be changed. Also one can try to differentiate

them by ROM event ID structures described in

AN12853 i.MX ROMs Log Events

 

Best regards
igor

 

 

0 Kudos
Reply

884 Views
christian_mauderer
Contributor III

Hello Igor,

thanks for the additional information. So the VID and PID would be a good to detect a chip if I find some register location independent way to access them. I think that last part can be a bit difficult.

Best regards

Christian

0 Kudos
Reply