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, ready to be integrated? Here we go: the Embedded Artists 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 into my base board.
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.
Not sure what the compute module alone price would be (I have asked), but I think if the price would be reasonable that module could get used in lots of places.
Update: I received pricing information for the OEM compute module (same as I have, with SRAM and PHY, but without WiFi module (http://embeddedartists.com/products/oem/imxrt1052_oem.php)):
“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 plus a small box of sweets :-).
The base board size is 165×105 mm and has a 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, has easily accessible test points and user elements (push buttons, debug connector are well placed.
I feel that the board has been designed as it could be used right away in a real product, 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 (it does have that ‘bulky’ 2×20 pin adapter on it as well).
The board has the same display I have used in “Adding a Rocktech Capacitive Touch LCD to the NXP i.MX RT1052 EVK“.
On the module there is the NXP i.MX RT1052 (ARM Cortex-M7, 600 MHz, 512 KByte TCM RAM) with 4 MByte external FLASH.
Below the top side of the OEM board with the components:
The compute module includes the dual QSPI adesto (EcoXiP) 4 MByte external FLASH memory. This video gives an overview about 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.
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 debug probe.
💡 Do not provide power to the target on the debug port! Have the jumper JP2 on the LPC-Link2 removed!
💡 At the time of this article, both Segger and P&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 getting that module more popular.
Hello World Project
I recommend to start 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.
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:
Because 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:
Select the ‘MIMXRT1050-EcoXiP_ATXP032.cfx’ driver:
The EVK has a 64 MByte FLASH device, but our bord has 4 MByte: change the size to
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 the 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:
The ‘hello world’ uses the UART on the board, so I have connected the yellow USB cable to the UART-2-USB CDC bridge:
With this, I get the Hello World out of the UART to the terminal:
Build and Debug
Use the ‘Build’ followed by the ‘Debug’:
Then I’m able to debug the board with the MCUXpresso IDE :-):
The board is kind of similar to the NXP i.MX RT1050-EVK(B), but not the same, as 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 it removes some SDK component settings in the .cproject file:
If this is the case for you too, 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"
With this, I only needed a few minutes to port a LittlevGL application to the Embedded Artists 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), includes already the LCD, but costs about twice as much. I’m missing the camera connector which the EVK(B) has: I ordered a camera from AliExpress, but it did not arrive yet.
The goal of this high-performance ARM Cortex-M7 devices 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 micro controllers: 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 base board already comes close to a real production board.
I hope this article gets you started with that compute module and board.
Happy Computing 🙂
- 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%20Artists