Powerful ARM Cortex-M7 microcontroller are on the rise, bridging the gap between traditional microcontroller and Embedded Linux systems. I already published articles for the NXP i.MX RT1052 which is an ARM Cortex-M7 running at 600 MHz. Because the RT105x is available in BGA196 package only, I have as oredered the i.MX RT 1050 EVK which has a similar device on it, but in LQFP package:
For a university research project we need more computational power than a normal ARM Cortex-M4 running up to 300 MHz can offer. Going up to an Embedded Linux system running at 1-2 GHz would solve that, but usually realtime behaviour is in question, plus the Linux system would be very much an overkill for the targeted application. There is a new class of microcontroller with ARM Cortex-M7 running in the 500-600 MHz range which could give me what I need. That’s why I looked at the NXP i.MX RT1052 (see “MCUXpresso IDE V10.1.0 with i.MX RT1052 Crossover Processor“). The RT1050 would petty much fit our needs, but the problem is the package (BGA) which is a challenge for small volume custom boards. Embedded Artists does have a small OEM board, but why can such a thing not be available like the Raspberry Pi Compute Module? So looking into ways how to create our own board and modules, and here again the LQFP package is easier to handle. That’s why the i.MX RT1020 EVK board comes into play, as it features an LQFP package :-).
The RT1052 is still very interesting, and maybe there will be either a good module or an LQFP package available.
Software and Tools
This is what I have used in this article:
- NXP MCUXpresso IDE 10.2.1
- i.MX RT1050 EVK SCH-29856 REV A3, 700-29856 REV A
- Default DAPLink version 0244
- External Segger J-Link Plus, P&E Multilink Universal and NXP LPC-Link2
The RT1020 is kind of the smaller brother of the RT1050:
It runs up to 500 MHz (the RT1050 up to 600 MHz) with no dedicated LCD or camera hardware support. As the RT1050, the device is ‘flash-less’, but has SRAM on-chip (256 KByte vs. 512 KByte on the RT1050). All the other RAM and FLASH is external to the MCU.
i.MX RT1020 Board
The boot selection switch is on the bottom side of the board: that makes it hard to change it if the board is placed in an enclosure.
On the board it has the i.MX RT1021 (144 pin LQFP package) ARM Cortex-M7 running at maximum 500 MHz.
It has 256 MBit (32 MByte) SDRAM memory (U14, S42S16160J-6TLI):
64 MBit (8 MByte) QSPI Flash (U13, S25LP064A-JBLE):
The documentation mentions the FXOS8700CQ (U26) (3-axis magnetometer, 3-axis accelerometer). However, that one is not populated on the board, and with that unfortunate solder mask it might not be easy to add one:
The board has as default the DAPLink firmware 0244 on it:
# DAPLink Firmware - see https://mbed.com/daplink Unique ID: 0226000040214e4500171019c89200399e11000097969900 HIC ID: 97969900 Auto Reset: 0 Automation allowed: 0 Overflow detection: 0 Daplink Mode: Interface Interface Version: 0244 Bootloader Version: 0244 Git SHA: 28f80751691ef703ab87355e5f42a6065de1cf4c Local Mods: 1 USB Interfaces: MSD, CDC, HID Bootloader CRC: 0x44eadb90 Interface CRC: 0xb309c6d0 Remount count: 0
So unlike for the i.MX RT1050, I did not have to update the debug firmware.
The board features a standard (bulky) Cortex debug port. Anyway I prefer to use an external Segger J-Link, P&E Universal Multilink or the NXP LPC-Link2 as they are much faster compared to the onboard OpenSDA debug circuit. And I recommend to use an external 5V power supply with the board:
The placement of the debug header (J16) conflicts with using Arduino shields and an external debug probe. So if using any Arduino shields, I have to use the onboard OpenSDA debug probe.
NXP supports the board with an SDK downloadable from https://mcuxpresso.nxp.com and includes a broad set of middleware:
With that SDK, I can create new projects inside the Eclipse based MCUXpresso IDE, or importing example projects into the workspace:
With this, I was able to debug a FreeRTOS project on the board in a few minutes:
i.MX RT1020 Module
If you are looking for another RT1020 module, then this one might be of interest for you too: https://github.com/martinribelotta/imxrt1020-module (thanks to Hans for the hint!)
The i.MX RT1020 is mostly interesting for me because of its LQFP package which makes it easier to create custom boards. Compared to the i.MX RT1050 (see “i.MX RT1050 EVK vs. EVKB“) the board worked out-of-the box and works nicely with MCUXpresso IDE and FreeRTOS. I have to see if I can add the missing accelerometer/magnetometer, so I have to order one first.
Happy LPQPinging 🙂
- Community document: https://community.nxp.com/community/mcuxpresso/mcuxpresso-ide/blog/2018/08/10/overview-of-using-the-mimxrt1020-evk-with-mcuxpresso-ide
- i.MX RT1020 web page: https://www.nxp.com/products/processors-and-microcontrollers/applications-processors/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1020-crossover-processor-with-arm-cortex-m7-core:i.MX-RT1020
- i.MX RT1020 EVK: https://www.nxp.com/products/processors-and-microcontrollers/applications-processors/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1020-evaluation-kit:MIMXRT1020-EVK
- MCUXpresso IDE web page: http://www.nxp.com/mcuxpresso/ide
- MCUXpresso SDK web page: https://mcuxpresso.nxp.com
- Previous article about i.MX RT1050: https://mcuoneclipse.com/2017/12/16/mcuxpresso-ide-v10-1-0-with-i-mx-rt1052-crossover-processor/
- QSPI FLASH Datasheet: http://www.issi.com/WW/pdf/IS25LP032-064-128.pdf
- i.MX RT1021 module by Martin Riboletta: https://github.com/martinribelotta/imxrt1020-module