DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Join us tomorrow at 1 PM EST: "3-Step Approach to Comprehensive Runtime Application Security"
Save your seat
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Maintenance
  4. First Steps With the NXP i.MX RT1020 EVK Board

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!

Erich Styger user avatar by
Erich Styger
·
Aug. 24, 18 · Tutorial
Like (1)
Save
Tweet
Share
11.78K Views

Join the DZone community and get the full member experience.

Join For Free

The 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

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

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 Top Side

i.MX RT1020 EVK Bottom 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

i.MX RT1021

It has 256 MBit (32 MByte) SDRAM memory (U14, S42S16160J-6TLI):

SRAM

SRAM

64 MBit (8 MByte) QSPI Flash (U13, S25LP064A-JBLE):

QSPI Flash

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

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

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

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

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

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

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
Debug (command)

Published at DZone with permission of Erich Styger, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Java Development Trends 2023
  • A Complete Guide to AngularJS Testing
  • How to Develop a Portrait Retouching Function
  • Why Every Fintech Company Needs DevOps

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: