RoadTest: NXP I.MX RT1050 EV KIT and Display
Author: 14rhb
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: There seems to be a huge range of similar products available with prices and performance to suit all different applications. Please see section 7 below.
What were the biggest problems encountered?: From my novice approach - lack of a single working tutorial by one manufacturer. Uncertainty about what development tools to use. Difficulties in downloading to the actual NXP board. Lack of interesting GUI examples.
Detailed Review:
The NXP i.MXRT1050-EVK Kit - a crossover processor evaluation board.
I applied for this Roadtest as a novice and have based my review along those lines; my Element14 Roadtest application for this product consisted of the following sections:
However when I came to writing my Roadtest review I found I had not been able to adhere to that order, as I tried out several of the IDE, and so I have the following sections now:
{tabbedtable} Tab Label | Tab Content | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1.1 What is the MIMXRT1050-EVK Board? | The board itself is called the MIMXRT1050-EVK (referred to as NXP board from now) and it contains a NXP i.MXRT1052DVL6A crossover processor (referred to from now as the i.MX RT).
Let's Unbox It. The development kit arrived consisting of:
| ||||||||||||||||||||
1.2.....what actually is a Crossover Processor? | As I worked through this Roadtest I asked myself this question several times as I tried to understand the difference between this board and something like a Raspberry Pi (RPi). According to an NXP blog the i.MX RT is a fusion between the low power/low cost MCU and the more capable Application Processor:
The i.MX RT runs at 600MHz which is much lower than the latest RPi at 1.2GHz and now 1.4GHz . The important point here is that the i.MX RT is lower power and can operate down at a clock of just 24MHz, drawing only 4.5mA; which will make it much more suited to portable/battery devices.
RAM: the crossover processor does not have any Flash/Program Memory. It requires the program to be loaded at startup (see 1.4 below for options) depending upon some DIP switches on the board (SW7). The crossover processor does have the following internal RAM:
| ||||||||||||||||||||
1.3 Mounting Dev Board and Screen | Early on I found myself flipping the dev board over, to inspect jumpers and switch settings, and then flipping it again to look at the display. I knew that very soon the display and its fragile ribbon connector would get damaged so I made a basic plywood jig to hold it together, using Blu Tack to hold the display in place. I wound some long woodscrews into the board as support pillars. The USB clamp on the righthand side was added later on after a mishap. Connecting the LCD display to the board was awkward because it was so delicate. I didn't actually find any assembly details for this step but it was quite straightforward: there are two different size flexible ribbons and two candidate sockets on the rear of the NXP board along with a outline of the display. I carefully inspected the board's connector with a magnifying glass to determine how the clamp mechanism worked as I knew it could easily be broken. For anyone following this - it is actually a sliding-clip that moves outwards (parallel to board), push in flexible ribbon and then push the clamp back to secure it. | ||||||||||||||||||||
1.4 Board Specification Overview | Processor: i.MXRT1052DVL6A see 1.2 above.
Board Memory(additional to Target RAM):
Only one of the onboard Flash memories can be used - board moification is required to swap.
Connectivity:
|
2.1 Software / Drivers Installation
My starting point for this Roadtest was from the MIMXRT1050-EVK page on NXP's website and the four simple steps under their getting started tab:
{tabbedtable} Tab Label | Tab Content |
---|---|
2.1.1 Plug It In | Plug It In - "Out-of-the-box" Demo Perhaps it was the angle I was viewing at, but the 'Plug It In' demo didn't seem to work for me. The demo was meant to be a 'bubble level' that increased or decreased the brightness of a LED in proportion to the angle of tilt of the NXP board....I carried on anyway.
There is a huge choice of supporting software/IDE for writing and compiling the code for this embedded device. These following IDE options were detailed on the NXP website but a larger list can be seen here:
What is really good is that some of these IDE will be familiar to existing MCU developers - utilising the open CMSIS ARM standards these IDE companies are able to extend their products to support the i.MXRT. |
2.1.2 Get Software | Get Software The initial 'software' install detailed on the tutorial is of the MCUXpresso SDK. It turned out that this wasn't an IDE but instead a collection of source code that could be pulled into several major IDE to instigate examples: the supported IDE were IAR, KEIL and ARMGCC. The SDK was downloaded from the NXP website and you get to select a range of options depending upon what board and compiler/IDE you are targeting. You also get to choose third party support which gets added into the bundle e.g. FreeRTOS. Download and install times can be quite long if you select many options ! Strangely there is also an MCUXpresso IDE that wasn't mentioned in that tutorial. |
2.1.3 Build, Run | Build, Run The next step is to select a toolchain (IDE). The choice offered is IAR (EWARM), Keil MDK and GNU ARM. For some reason I went for the Keil MDK - maybe because I saw the wording 'ARM' in the logo? My first demo from the SDK was called "HelloWorld" and I soon ran into issues with: "MIMXRT1052xxxxx_ram.scf(88): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST."
Then I tried another example - the HelloWorld using the FreeRTOS and that worked (using Keil MDK again); I was able to get the following response in my PuTTY console: |
2.1.4 Learn | Learn This was the final stage of the NXP 'simple four steps' and I guess it is the biggest - there is a whole wealth of knowledge to learn and issues to overcome. For me there were a few major concepts that I needed to understand and I've tried to detail what I managed.
A product's name may have changed as companies have bought out rivals and incorporated their product range into their's - a little bit of background research will often reveal those situations.
Many of the development standards for ARM processors are governed by the Cortex Microcontroller Software Interface Standard (CMSIS) enabling support from many software packages. A list of other ARM Cortex-M development tools can be found here.
Explanation of Some Basics The board can be programmed via the JTAG interface directly (requiring a JTAG programmer) or through the Open SDA Debug Access Port (DAP) interface. The latter utilises a second onboard MCU that manages the PC to USB interface to the board and from there programming of the actual target CPU (eg ARM) via internal JTAG circuitry. Additionally that USB connection can be used to debug the target CPU. Now as a newcomer I found the concept fine but the plethora of different utilities achieving this really confused me. The screen shot below is from the Keil MDK IDE showing some of the possibilities for debugging. Many of the IDE defaulted to the USB CMSIS-DAP and further good sources of information on that can be found here https://os.mbed.com/handbook/CMSIS-DAP and here CMSIS-DAP Debugger User's Guide: About CMSIS-DAP |
3.1 Sample Project - eCompass
3.2 Sample Project - the LCD Touch Panel
{tabbedtable} Tab Label | Tab Content |
---|---|
3.2.1 Overview | There was only one touchscreen example available through the NXP MCUXpresso SDK, luckily I was able to get this to work a few times over the weeks I spent Roadtesting the NXP board. The demo is quite basic and allows you to select a simple shape and fill it with solid colour of your choice. The other tab allows you to slide a horizontal and vertical scale. |
3.2.2 Screen Grab | |
3.2.3 Screen Video |
[when I rotated the screen I lost the edges so left it 90 degrees out.] |
3.2.4 Issues | When looking at the complexity of the code I was easily able to make minor adjustments to this demo but soon realised that a decent GUI would need a totally different approach ( I cover this in section 4). |
3.3 Different IDE Findings
The following details some of the simple things I found out whilst flipping between the various IDE. Hopefully it will help others if they get stuck.
{tabbedtable} Tab Label | Tab Content |
---|---|
3.3.1 MCUXpresso IDE | The NXP board tutorial details downloading the MCUXpresso SDK but doesn't seem to go on to talk about the actual IDE which is totally separate. That left me searching around initially as I could see from screengrabs that some online tutorials were using the MCUXpresso IDE and I didn't actually have anything on my installed program list that I could run. The SDK sits as a folder collection rather than an installed EXE. There wasn't any restrictions on the licence although there was also a Pro edition that includes additional trace functionality.
When I started to get issues with this IDE this was the error message for the HelloWorld application: |
3.3.2 Keil MDK uVision | I installed MDK-lite as it was free; it has a 32kByte code limitation but no time limit (which is something I like).
I did have some success with this IDE but later on I had issues and started to get the following message: |
3.3.3 IAR Embedded Workbench (EWARM) | Opening a project and building it with IAR embedded workbench often worked fine. However later on I had the following, not too helpful, message and wasn't really able to find the resolution. I searched the internet and tried out some of the solutions to no avail. Somewhere along the way I did manage to get it working again - after a complete reinstall.....only for it to happen again. It looks like the probe to the Debug Access Port (DAP) is initially accepted but later on throws an error when the CPU cannot be accessed (I'm assuming that is the CMSIS-DAP CPU rather than the ARM Cortex itself). After installing I see that many of the components in my IAR license are due to expire after 30-days use when it will fall back to the 32kByte Kickstart Edition. |
3.3.4 GNU ARM Compiler | I had an initial attempt at using the GNU ARM compiler but it wasn't very successful and I soon ran into issues with the Automake setup. |
The simple slider GUI demo was good but modifying it or writing my own from scratch seemed a daunting task. There must be a better way....and there was. Searching the internet I found a product called Embedded Wizard that will easily allow the creation of GUI for almost any platform. Embedded Wizard creates a source code bundle along with a graphics engine that can then be incorporated into your design using your IDE of choice. You then write the rest of the code knowing the GUI/Human Machine Interface is both functional and looks good. There are other similar products and Nitin_Bhaskar suggested a couple of others to me in his Roadtest of this NXP board: Storyboard GUI by Crank Software and TouchGFX. I tried out EmbeddedWizard and Storyboard GUI - they are easy to use, utilising drag-and-drop and What-You-See_Is-What-You_Get WYSIWYG approaches. They come with a nice range of demo examples and I had no trouble loading those up and running them in the built in simulators (as seen in the videos below). Compiling the code to their proprietary output was also easy. What I didn't manage to do was import that or incorporate that code into my IDE along with download to the board. These products are well worth a closer look for anyone wanting to build a nice front end GUI.
{tabbedtable} Tab Label | Tab Content |
---|---|
4.1 Thermostat Example | Crank Software - Thermostat Example GUI
|
4.2 Starwars Example | Crank Software - Starwars Example GUI
|
4.3 Coffee Machine | Embedded Wizard - Coffee Machine Example GUI
|
Just as I started to get the hand of the software and design process something bad happened. The USB lead provided with the kit was very short and forced me to locate my NXP board ontop of my floor-mounted PC. Perhaps in association with turning the NXP board, I was soon looking at a uUSB connector that had come clean off the PCB; pulling the copper pads with it.
Things looked bleak so I immediately contacted rscasny to inform him of the situation and he kindly ordered a new board to enable me to continue the Roadtest. Luckily I also knew someone with a very impressive Weller soldering station (like these ones from Farnell WX 1012. WELLER, Power Unit with WXP 65 Soldering Iron and Safety Rest | Farnell UK ) and they let me use it to attempt a repair. It wasn't easy but I did manage to resolder the five pins (using a good few presses of their flux pen, microscope and ultra thin solder) although the repair seemed very vulnerable as there was no mechanical strength left with the main pad missing. At home I added some epoxy resin around the connector and when that had hardened I built up a wooden pillar and cable tied the short USB lead to it. The repair worked and my NXP board was recognised by my PC again. I let Randall know so he didn't have to send the new board out.
6.1 IDE Discussion
I went from one IDE to another trying out each of them several times. Initially I got at least one demo to work using each IDE but then later the download process started to fail; many of my IDE issues seemed to be related to memory configuration or the debugger download (CMSIS-DAP). I believe the IDE software worked correctly but my fundamental understanding of the memory setup for debug probably let me down. One of the IDE also got itself into a loop where it kept stating the debugger was already running - when I searched the internet I found that other users had the same issue but there was no clear resolution. The issues may have started when I reloaded the CMSIS-DAP firmware into the NXP board; although on inspection the device shows correctly as a drive and the Interface Version is correct (I also repeated this firmware upgrade several times):
6.2 Final Attempts With Each IDE
I decided to uninstall all of the IDEs, the debug drivers (of which there was about 20 on my Windows10 OS ! ) and the SDK. I decided that my knowledge of the board and download/debug may be better now and enable me to make better selections during the install.
{tabbedtable} Tab Label | Tab Content |
---|---|
6.2.1 MCUXpresso IDE | I initially decided to retry a single SDK (from the pre-assembled package) plus a version of MCUXpresso IDE. Compilation was OK but the download failed with the following message: At this point I also tried to use an external PSU (5v and the NXP board draws ~80mA ) but that did not resolve the issue. |
6.2.2 Keil uVision MDK | This was a clean install of Keil uVision/MDK-lite V5.25.2.0 and my initial project demo resulted in the following message: I added some packs from the 'Pack Installer' e.g. Keil::MXRT1052_DevelopersKit_BSP. Now when I rebuilt the code I got the following message which is probably because of the 32kByte limitation. Therefore I tried the HelloWorld demo example which did build OK (due to the smaller code ) but I still could not download it and got the following error: |
6.2.3 IAR Embedded Workbench | Lastly I downloaded IAR again (ARM version 8.22.2). I saw the CMSIS-DAP link driver being installed, so knew that would be OK. I opened the emwin_gui_demo as a new workspace and it built properly. Then I downloaded and debugged..and got an error again. |
6.2.4 GNU ARM Embedded Toolchain | I worked my way again through the process of installing the GNU ARM Embedded Toolchain as here for v7-2017-q4-major. I then reinstalled GNU for Windows Development Tools (MinGW) and CMake. After adding the PATHs to my Environment Variables I was able to successfully compile and link the simple 'HelloWorld' example. Now I needed to download this to my board. The OpenSDA on the NXP board was setup as DAP-LINK and I couldn't find a utility (apart from the IDE listed above to undertake just that stage). I did find that SEGGER do a download for OpenSDA/J-Link and I downloaded that binary. I needed to reflash the OpenSDA MCU - on the NXP board this process is via:
However I could not get this to work. I was able to get the drive to show as MAINTENANCE and drag and drop into it. After about 30seconds the drive and File Explorer disappeared off my desktop. Upon power up the DETAILS file still listed the board as DAPLINK firmware not J-Link. |
Maybe the final test of GNU ARM reveals the whole issue I have been having on the download of the compiled code? Maybe the problem stems from the broken USB connector or my first attempts to change the Firmware. In conclusion I am thinking that I may have corrupted something on the NXP board as in the end I cannot get any of these IDE to actually download the program. All the remaining jumpers on the NXP board appear to be in the required positions including SW7 set to OFF-ON-ON-OFF.
Searching the Farnell website for similar ARM Cortex-M7 boards gives 21 products; I picked out one from each manufacturer for a closer overlook but it soon occurred to me that this might be a futile exercise as this actual NXP board is listed as 'no longer manufactured'. It implies to me that there is a rapid progression in the area of embedded ARM boards and that if I list some here then in the very near future they will already be redundant. A better solution is probably to just look at the relevant Farnell page here.
{tabbedtable} Tab Label | Tab Content |
---|---|
7.1 STMICROELECTRONICS | STMICROELECTRONICS STM32H743XI MCU + 5.7" Touchscreen £369.00 (UK) |
7.2 MICROCHIP | MICROCHIP ATSAMV71Q21 - no screen included |
7.3 NXP | This board - i.MXRT1050-EVK No longer manufactured ! |
To recap: I'm a novice at embedded ARM boards and I've marked the NXP board accordingly from that perspective whilst also trying to be mindful of what the board could achieve after some extra effort/training. I've had a tough time understanding this board but that doesn't mean I think poorly of it. I actually think the board is fantastically capable - I just need to crack a few issues in my own understanding to get there.
Several of the compilers/IDE that I tried out were time limited which I find quite restrictive as a home user. The best solution is to default to a performance restricted software design suite and then make it clear to the user that they can trial out the professional version for a fixed number of days. In that configuration the home user can decide to not trial out that top-level option if they have no future need - that way they will not get a step-down in performance later on. This model approach is how the Microchip Inc licences MPLAB X IDE.
The connector for the display ribbon cable was delicate and the USB connector didn't take much mechanical strain before being damaged - although these could be mitigated easily by incorporating the parts into a prototype housing/system.
The additional unpopulated design of the board allows application to a wider product range than is first imagined - the Arduino interface for example could quickly allow an existing shield to be incorporated into a design.
Thank you to dixonselvan for introducing me to tabbed content tables in his Digilent Arty S7 Review. I've used similar in this Roadtest to hopefully make it easier to read.
The NXP board is a really capable development kit that can be applied to a huge range of consumer products; it could either be incorporated directly into small production runs or used to develop software for a custom board utilising the i.MXRT crossover processor.
There was a lack of a simple overview of the main topics required to understand the board such as the different RAM available and the USB-JTAG interface.
The board has a large and varied range of supporting software. Whilst I personally found issues with most of the IDE they will likely be resolved over the coming months as the uptake of the board increases and the internet/forums contain more solutions. Once a user is able to understand the IDE and downlink process on the software of their choice they will be able to progress rapidly. Unfortunately I flipped back and forth between all of the IDE hoping for a solution when my final conclusion was that I may have corrupted the download firmware.
The third party GUI software looks really good and is easy to use - well worth a look if you are trying to achieve a graphical application on other platforms as well e.g. RPi + touchscreen.
Thank you to Farnell Element14, rscasny and NXP for selecting me to take part in this Roadtest. It has been a real insight for me on the recent technology developments, IDE and other 3rd party toolsets. In the meantime I will persevere to overcome the issues I have had with programming this NXP board and still aim to create something interesting with the board (I'll blog that progress separately).
If you have any comments or questions then please post them below and I'll try to answer.
Rod
Top Comments
Very nice review with plenty of detail. The use of the tabs do make a very pleasant reading experience.
Well done.
Kind regards
Hi Dixon,
Thank you again for the help. I didn't try to get the tabbed content into the Table of Contents - I'll test that out. I was surprised at what content could easily get added into the Tabbed Table…
Nice review Rod,
Yes now the review is well formatted and readable instead of usual multiple times scrolling up and down! Have you tried to display the tabbed headings in the table of contents? I did but…