Hello,
i am searching for a register containing information about the specific core which is used.
For the Kinetis-family there was the SIM_SDID Register, which contains info about family, sub-family, pin-count, etc. It was also possible to read the size of flash/ram included in the microprocessor.
This was helpfull for a PCB using same core with different flashsize, to controll which software was programmed during production.
For a similar reason im searching a simlar register in the iMXRT-Series, especially the iMXRT1060 family.
Still searched in the Datasheets, and external Informations without success.
Did anybody knew a Device Identification Register included in the iMX.RT-Processors?
Best Regards!
I am working on a workaround way to detect i.MX RT phantom part, it should be ready by this week
Hi JayHeng
I am facing the same challenge as Jens, so I am looking forward to your workaround way to distinguish the iMXRT1062 from the iMXRT1064.
Best regards,
Arne Lehrmann
Hi @jensseifr
In the RT1170 we have the Chip Silicon Version Register (MISC_DIFPROG)
For boundary scan (over JTAG) we have (talking just about RT1060) identification registers. Just search for the .bsdl file for your targeted part (NXP symbols and footprints) See the IDCODE register.
Does this works for you?
Best regards,
Diego.
Hi @diego_charles ,
thank you for your answer.
Unfortunately it doesn´t help, as i searched a chip register to read out during runtime by our 2nd Bootloader.
It´s written in the RM that there is an unique ID in the OCOTP-Register, but its not said where exactly to find and how to interprete this value.
Having a look at OCOTP by register view with IAR EWARM only the subregisters CFG0 to CFG6 hold values which may can be interpreted as such an ID. And these registers are described as "Configuration and Manufacturing Info" by the workbench.
But i miss Information to interpret this values in the datasheets.
May those values contain what im looking for? If so can you help to interprete them?
A full register description of every bit(group) would be helpfull.
Best Regards Jens
Hi @jensseifr
Many thanks for your patience.
RT10xx doesn't contain standard part id register, so you cannot read register to know it is RT106x, we have to use some tricky way:
ID register in RT10xx can be used to detect family part (actually is means silicon version by time), but not for phantom part (eg, RT1061 or RT1062)
i.MXRT | ID register | ID register value | |
---|---|---|---|
i.MXRT1011 | USB_ANALOG->DIGPROG | 0x006D0000 | |
i.MXRT1015 | USB_ANALOG->DIGPROG | 0x006B0000 | |
i.MXRT1021 | USB_ANALOG->DIGPROG | 0x006B0000 | |
i.MXRT1024 | USB_ANALOG->DIGPROG | 0x006B0000 | |
i.MXRT105x | USB_ANALOG->DIGPROG | 0x006A0001 | |
i.MXRT106x | USB_ANALOG->DIGPROG | 0x006C0000 | |
i.MXRT1064 | USB_ANALOG->DIGPROG | 0x006C0000 |
Just a little note :The CFG0&CFG1 is i.MX RT device UID (64bits), it is different on each chip.
Best regards,
Diego
Hi Diego,
Just like Jens I am trying to find a way to distinguish the iMXRT1062 from the iMXRT1064 at runtime.
When the iMXRT106x is configured for “Serial NOR Flash Boot via FlexSPI” then the boot ROM reads the FlexSPI NOR configuration parameters from either FlexSPI (iMXRT1062) or FlexSPI2 (iMXRT1064). It is not clear to me if the boot ROM code itself is different or where the boot ROM gets to know which peripheral to initialize?
Using the MCUXpresso Secure Provisioning Tool the configure-memory command also initializes different address spaces depending on the chip – even if I use the same flash loader RAM code.
blhost -p COM8,115200 fill-memory 0x2000 4 0xC0000008 word
blhost -p COM8,115200 configure-memory 9 0x2000
blhost -p COM8,115200 list-memory
Does the flash loader RAM code use boot ROM functionality to initialize the external memory? If not how does the flash loader RAM code initialize different memory regions depending on the chip?
Best regards,
ALE
Hi @ale1
I have not seen if @jay_heng had chance to provide us more about this.
But maybe the simplest way I could think to differentiate between i.MX RT1060 and i.MX RT1064, considering a default XIP memory setup, is to identify if code is being executed at 0x6000_xxxx (RT1060) or at 0x7000_xxxx (RT1064)
According to my experience i.MX RT1060 and i.MX RT1064 boot ROM code is similar but not the same.
The flash loader should be utilizing boot ROM API functions to initialize the external memories. For example the 0xC0000008 is a parameter that ROM API receives to initialize the NOR flash memory. See the last example code at the end of i.MX RT1064 RM section 9.13.2 FlexSPI NOR APIs.
Best regards,
Diego