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.
Join the DZone community and get the full member experience.Join For Free
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
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
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 (Source: Embedded Artists)
Below the top side of the OEM board are these components:
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
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.
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
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 (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
Because the SDK does not have the Embedded Artists board listed, select the i.MX RT1050 EVKB board:
In the wizard, give the project a name and select the ‘hello world’ with UART selected:
SDK Import Wizard
Because the Embedded Artists board has a different external FLASH device, press ‘Edit…’ in the next dialog:
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
Select the ‘MIMXRT1050-EcoXiP_ATXP032.cfx’ driver:
The EVK has a 64 MByte FLASH device, but our board has 4 MByte: change the size to:
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:
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.
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
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
With this, I get the Hello World out of the UART to the terminal:
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
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.
- Replace <project>\xip\evkbimxrt1050_flexspi_nor_config.c
- 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
Possibly Lost Entries in .cproject
If this is the case for you, then use the following workaround:
- Close the IDE or the project
- With a text editor, open the .project of the project
- Search for:
driver="MIMXRT1050-EVK_S26KS512S.cfx" edited="true" id="BOARD_FLASH" location="0x60000000" size="0x4000000"
- AND, change it to:
driver="MIMXRT1050-EcoXiP_ATXP032.cfx" edited="true" id="BOARD_FLASH" location="0x60000000" size="0x400000"
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
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.
- 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
Published at DZone with permission of Erich Styger, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.