First Steps With the NXP i.MX RT1020 EVK Board
Want to learn more about using the NXP i.MX RT1020 EVK board and the LQFP package? Check out this tutorial to learn more!
Join the DZone community and get the full member experience.
Join For FreeThe powerful ARM Cortex-M7 microcontroller is on the rise, bridging the gap between the 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 ordered the i.MX RT 1050 EVK, which has a similar device on it, but in the LQFP package:
i.MX RT1021
Motivation
For a university research project, we needed 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, a real-time behavior is in question, plus the Linux system would be very much an overkill for the targeted application. There is a new class of microcontrollers 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 to create our own board and modules, 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 a good module or an LQFP package available.
Software and Tools
These are the tools you will need for this tutorial:
- 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 and E Multilink Universal and NXP LPC-Link2
i.MX RT1020
The RT1020 is kind of the smaller brother of the RT1050:
i.MX RT1020 (Source: NXP.com)
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
I ordered my board from Mouser.ch. It looks very similar to the i.MX RT1050 EVK.
i.MX RT1020 EVK Top Side
i.MX RT1020 EVK Bottom Side
The boot selection switch is on the bottom side of the board; that makes it hard to change 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.
i.MX RT1021
It has 256 MBit (32 MByte) SDRAM memory (U14, S42S16160J-6TLI):
SRAM
64 MBit (8 MByte) QSPI Flash (U13, S25LP064A-JBLE):
QSPI Flash
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:
Sensor U26 is not populated
Debug Interface
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 and E Universal Multilink, or the NXP LPC-Link2, as they are much faster compared to the onboard OpenSDA debug circuit. And, I recommend using an external 5V power supply with the board:
Debugging i.MX RT1020 EVK with NXP LPC-Link2
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.
MCUXpresso IDE
NXP supports the board with an SDK downloadable from https://mcuxpresso.nxp.com and includes a broad set of middleware:
i.MX RT1020 SDK
With that SDK, I can create new projects inside the Eclipse-based MCUXpresso IDE or import example projects into the workspace:
Using i.MX RT1020 example projects
With this, I was able to debug a FreeRTOS project on the board in a few minutes:
Debugging FreeRTOS on i.MX RT1020 EVK
i.MX RT1020 Module
If you are looking for another RT1020 module, then this one might be of interest to you:
imxrt1020 module
Summary
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!
Links
- 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
Published at DZone with permission of Erich Styger, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments