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
Partner Zones AWS Cloud
by AWS Developer Relations
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
Partner Zones
AWS Cloud
by AWS Developer Relations
11 Monitoring and Observability Tools for 2023
Learn more
  1. DZone
  2. Software Design and Architecture
  3. Integration
  4. Tutorial: First Steps With Embedded Artists NXP i.MX RT1052 OEM Module

Tutorial: First Steps With Embedded Artists NXP i.MX RT1052 OEM Module

Want to learn how to use Embedded Artists with the latest i.MX RT1052 module? Check out this tutorial to learn how with an ARM Cortex-M7.

Erich Styger user avatar by
Erich Styger
·
Aug. 30, 18 · Tutorial
Like (2)
Save
Tweet
Share
10.29K Views

Join the DZone community and get the full member experience.

Join For Free

Not ready for the complexity of a full-blown Embedded Linux, but need that extra compute performance? Need an ARM Cortex-M7 running at 600 MHz module on a half-sized business card and ready to be integrated? Here we go with the Embedded Artists i.MX RT1052 OEM module:

Embedded Artists NXP i.MX RT1052 OEM Module

Embedded Artists NXP i.MX RT1052 OEM Module

Compute modules are very common in the Embedded Linux space, for example, see this Toradex module. The reason is simple: these high-performance boards simplify the design, as I don’t have to care about the BGA packages and the external SDRAM and FLASH devices. Everything is on a module I can easily integrate onto my baseboard.

With more and more powerful ARM Cortex-M7 entering that space, see the NXP i.MX RT1050. To me, there is clearly a need to have such modules available for the non-Linux space. In my earlier review of the RT1050-EVK(B), I mentioned the need for such modules, and Embedded Artists was so kind to send me the i.MX RT1052 evaluation kit, which arrived this Friday. So, I had something to play with this weekend.

Embedded Artists i.MX RT1052 Evaluation Kit

The board from Embedded Artists (i.MX RT1052 OEM Module) is priced at 149 euros.

Update: I received pricing information for the OEM compute module. This is the same as I have, with SRAM and PHY, but without the Wi-Fi module:

“Our iMX RT1052 OEM board cost 49 EUR each in small volumes, but goes down to 19 EUR in high volume.”

The board came with a unique product (registration) serial number on a product registration card, a micro-USB card, and a small box of sweets.

The baseboard size is 165×105 mm and has an LCD on the back. Compared to the NXP i.MX RT1050-EVK(B), this is much easier to use as it has all connectors on one side and easily accessible test points and user elements, including push buttons and a debug connector that are well placed.

The board has been designed to be used right away in a real product. However, it only could be a bit smaller. I like the fact that it does *not* have that OpenSDA on-board and that I can directly use standard debug tools using the 2×5 pin debug header. However, it does have that "bulky" 2×20 pin adapter on it as well.

Size Comparison of the two boards

Size Comparison of the two boards

The board has the same display that I have used in “Adding a Rocktech Capacitive Touch LCD to the NXP i.MX RT1052 EVK."

Embedded Artist NXP i.MX RT1052 Base Board Bottom Side with LCD

Embedded Artist NXP i.MX RT1052 Base Board Bottom Side with LCD

Compute Module

On the module, there is the NXP i.MX RT1052 (ARM Cortex-M7, 600 MHz, 512 KByte TCM RAM) with the 4 MByte external FLASH.

i.MX RT1052 OEM Board Block Diagram

i.MX RT1052 OEM Board Block Diagram (Source: Embedded Artists)

Below the top side of the OEM board are these components:

Embedded Artist NXP i.MX RT1052 OEM Board Top Side

Embedded Artist NXP i.MX RT1052 OEM Board Top Side

The compute module includes the dual QSPI adesto (EcoXiP) 4 MByte external FLASH memory. This video gives an overview of that solution. The NXP i.MX RT1050-EVK(B) has the device from Spansion on it. Unfortunately, that memory device cannot be ordered by the usual distributors. So, with building my board, I would prefer normal QSPI external FLASH devices, which are readily available.

Embedded Artist NXP i.MX RT1052 OEM Board Bottom Side

Embedded Artist NXP i.MX RT1052 OEM Board Bottom Side

The board has a footprint on it for the uBlox NINA-W13 WiFi chip.

Both the compute module and the base board features several test points for power measrements, see the iMX_RT1052_Developers_Kit_Users_Guide.pdf from Embedded Artists.

MCUXpresso IDE

I have used the following software and tools with the board:

Because the i.MX RT family is still new, make sure you have the latest and greatest software and tools installed.

  • IDE: MCUXpresso IDE v10.2.1 build 795 [2018-07-25]
  • SDK: MCUXpresso SDK_2.x_EVKB-IMXRT1050 v2.4.2 Manifest 3.3.0
  • Debug probe: LPC-Link2

Debug Probe

In this article, I’m using the low-cost ($20) NXP LPC-Link2 as a debug probe.

Do not provide power to the target on the debug port! Have the jumper JP2 on the LPC-Link2 removed!

LPC-Link2 with JP2 (provide power to the target) REMOVED

LPC-Link2 with JP2 (provide power to the target) REMOVED (not jumpered)

At the time of this article, both Segger and P and E do not support the EcoXiP Flash from adesto. So, my only option was to use the LPC-Link2. But, I think this might change with that module getting more popular.

Hello World Project

I recommend starting with a ‘hello world’ project. Use the "Import SDK" example(s) button in the Quickstart panel:

The finished example project is available on my GitHub site.

Import SDK Project

Import SDK Project

Because the SDK does not have the Embedded Artists board listed, select the i.MX RT1050 EVKB board:

Board Selection

Board Selection

In the wizard, give the project a name and select the ‘hello world’ with UART selected:

SDK Import Wizard

SDK Import Wizard

Because the Embedded Artists board has a different external FLASH device, press ‘Edit…’ in the next dialog:

Advanced Settings

Advanced Settings

If making the change in an existing project, see the ‘Porting’ section at the end of this article for a manual update of existing projects.

Press the ‘…’ button to change the flash driver:

Flash Driver Settings

Flash Driver Settings

Select the ‘MIMXRT1050-EcoXiP_ATXP032.cfx’ driver:

MIMXRT1050-EcoXiP_ATXP032.cfx

MIMXRT1050-EcoXiP_ATXP032.cfx

The EVK has a 64 MByte FLASH device, but our board has 4 MByte: change the size to:

0x400000

4 MByte FLASH Size

4 MByte FLASH Size

Use the OK buttons and then Finish to complete the project creation.

NOR FLASH Configuration File

The i.MX RT is a flashless device and needs to be informed about the external flash attached to the CPU. So, it is very important to have and use the correct boot header for the external FLASH. So, we need to replace one of the SDK with the correct one, which is provided by Embedded Artists in a zip file from the Support area. Place that file into the XiP directory:

Flash Configuration

Flash Configuration

The Embedded Artists documentation suggests to add this file to the SDK. But, in that case, the SDK will always use that file for all i.MX RT105x projects. I recommend to manually place the file into the XiP folder.

Board Setup

I prefer to power the board with an external 5V power supply. For this jumper, J29 has to be set on position 1-2:

J29 5V Input Option

J29 5V Input Option

The ‘hello world’ uses the UART on the board, so I have connected the yellow USB cable to the UART-2-USB CDC bridge:

Debugging the Hardware

Debugging the Hardware

With this, I get the Hello World out of the UART to the terminal:

Hello World output

Hello World output

Build and Debug

Use the ‘Build’ followed by the ‘Debug’:

Then, I’m able to debug the board with the MCUXpresso IDE:

Debugging the Board

Debugging the Board

Porting Projects

The board is kind of similar to the NXP i.MX RT1050-EVK(B), but it is not the same since the hardware is different. Consult the Embedded Artists iMX_RT1052_Developers_Kit_Program_Development_Guide.pdf for details.

For existing projects, at least, the flash type and size has to be changed (see steps from above during project creation) in addition to changing the flash header information in the XiP project folder.

  1. Replace <project>\xip\evkbimxrt1050_flexspi_nor_config.c
  2. Change flash device size and type

At least with MCUXpresso IDE 10.2.1, the second step cannot be done directly in the IDE, as changing the flash type seems to affect other SDK settings. What I have observed with using the GUI on the project is that it removes some SDK component settings in the .cproject file:

Possibly Lost Entries in .cproject

Possibly Lost Entries in .cproject

If this is the case for you, then use the following workaround:

  1. Close the IDE or the project
  2. With a text editor, open the .project of the project
  3. Search for:
    driver="MIMXRT1050-EVK_S26KS512S.cfx" edited="true" id="BOARD_FLASH" location="0x60000000" size="0x4000000"
     
  4. AND, change it to:
    driver="MIMXRT1050-EcoXiP_ATXP032.cfx" edited="true" id="BOARD_FLASH" location="0x60000000" size="0x400000"

Changed Flash Driver

Changed Flash Driver

With this, I only needed a few minutes to port a LittlevGL application to the Embedded Artists board:

LittlevGL running on Embedded Artists i.MX RT Board

LittlevGL running on Embedded Artists i.MX RT Board

Summary

The Embedded Artists board and module has everything I need to get started developing with i.MX RT 1052. It is a better board than the NXP EVK(B), and it already includes the LCD, but it costs about twice as much. I’m missing the camera connector, which the EVK(B) has. I ordered a camera from AliExpress, but it had not arrived yet.

The goal of this high-performance ARM Cortex-M7 device is to fill the gap between the microcontroller world and the Linux world. The challenge for vendors as NXP will be to bring the ease-of-use of the microcontroller world to this class of microcontrollers. The external flash device configuration is just one example of it.

Other than that, the Embedded Artists i.MXR1052 OEM compute module allows easy integration into custom products, and even if not intended for this, the baseboard already comes close to a real production board.

I hope this article gets you started with that compute module and board.

Happy Computing!

Links

  • Embedded Artists: http://embeddedartists.com/
  • Embedded Artists i.MX RT1052 OEM Board: http://www.embeddedartists.com/products/oem/imxrt1052_oem.php
  • MCUXpresso IDE: http://www.nxp.com/mcuxpresso/ide
  • MCUXpresso SDK: https://mcuxpresso.nxp.com
  • LPC-Link2 Debug Probe: https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/lpc-cortex-m-mcus/lpc1100-cortex-m0-plus-m0/lpc-link2:OM13054
  • NXP i.MX RT1050 EVK: i.MX RT1050 EVK vs. EVKB
  • Projects on GitHub: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/MCUXpresso/i.MX%20RT1052%20Embedded%20Artist
Software development kit Debug (command) Integrated development environment

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

  • Public Key and Private Key Pairs: Know the Technical Difference
  • File Uploads for the Web (1): Uploading Files With HTML
  • LazyPredict: A Utilitarian Python Library to Shortlist the Best ML Models for a Given Use Case
  • Developer Productivity: The Secret Sauce to Building Great Dev Teams

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: