RoadTest: NXP I.MX RT1050 EV KIT and Display
Author: Nitin_Bhaskar
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?: LPC4357-Xplorer++, STM32F4 Discovery
What were the biggest problems encountered?: Trying to get MCUXpresso IDE work with this dev board was biggest problem. No examples for LCD are included in SDK by default.
Detailed Review:
Here is my detailed review of NXP i.MX RT1050 EV with display.
Unboxing:
The package arrived in element14 box with sufficient protection on all sides. Below is the image capture of the contents in the box.
Inside box following items where found,
1. Packing list sheet
2. LCD screen with capacitive touch panel
3.Micro USB cable
4.Burg connectors for arduino headers
5.NXP i.MX RT1050 EVK board
Below is the unboxing video:
Hardware:
Processor
This board comes with i.MX RT1052 "crossover" MCU which has an ARM Cortex-M7 core capable of running at 600MHz. Term crossover is used because of MCU performance comparable with low power application processors. "RT" family MCUs can be used for computationally intensive apps that needs real time functionality. The marking on i.MXRT1050 says PIMXRT1052DVL6AEVALCTWA1723. This is an A0 silicon rev, full feature general purpose, consumer grade(0-95 deg C) prototype sample. The package is 196BGA and package dimension is 10mmx10mm and thickness is 0.65mm. Other members in this family includes industrial grade (-40 to 105 deg C), reduced feature, mass production samples with different max operating frequency variants. This MCU has 32KB each of I-cache and D-cache, 512KB for SRAM, integrated MPU supporting up to 16 protection regions and floating point unit. i.MXRT1052 has no internal flash. So, it uses one of the below mentioned boot media and using SW7, boot media can be selected.
SW7-1 | SW7-1 | SW7-1 | SW7-1 | Boot media |
---|---|---|---|---|
0 | 1 | 1 | 0 | Hyperflash |
0 | 0 | 1 | 0 | QSPI flash |
1 | 0 | 1 | 0 | SD card |
The silicon errata sheet for this chip reveals 19 issues, out of which few of them have been fixed in silicon rev A1 and rest of them has no fixed schedule for providing fix.
SDRAM
External memory OF 256Mbits is from Micron and the part number is MT48LC16M16A2B4-6A.
Hyperflash
This is an extremely fast external non-volatile memory from Spansion which has bus width of 8bits capable of DDR. Part number is S26KS512SDPBHI020. Apart from 8-bit wide bus, read/write operations are burst oriented. The density is 512Mbits.
Quad SPI flash
Part number is IS25WP064ABLE from ISSI. Density is 64Mbit.
Both these flash share the same SPI bus called FlexSPI and if one needs to switch among these memories then board modifications needs to done.
Combo sensor
This is a 6-axis motion sensor with integrated linear accelerometer and magnetometer. It uses I2C protocol.
Ethernet PHY
Part is from Micrel and part number is KSZ8081.
Audio codec
Wolfson's WM8960 is used as stereo audio codec with class D speaker driver which is capable of driving 1W per channel into 8Ohm BTL speakers, this codec is also coupled with onboard analog microphone.
CMSIS-DAP/DAPLINK
This is standard debugger designed with MK20DX128VFM5 capable of SWD/JTAG.
Apart from above parts, there are other hardware parts such as,
Software:
I have always been a fan of LPCXpresso, now MCUXpresso. So, my choice of IDE for this roadtest will be MCUXpresso.
NXP has really done a very good job with MCUXpresso IDE and its ecosystem. SDK builder just works fine with huge amount of configurable parameters. The variety of examples that are part of SDK is very vast. It has very good set of middleware support which includes CMSIS DSP Library, FatFS, ISSDK, QCA400x WiFi, USB stack, emWin, lwIP, mbedtls, wolfssl, FreeRTOS. MCUXpresso SDK builder helps in getting SDK for Keil MDK v5, IAR, GCC and MCUXpresso(ofcourse!) IDEs running on Windows, Linux and MACOS hosts. Below is the screenshot of the MCUXpresso SDK builder,
As seen, emwin middleware can be included while building SDK. But, unfortunately this is not available when trying to import SDK examples. This can be because emwin is not fully tested on this EVK board. Below is the screenshot of initial screen of MCUXpresso,
Adding i.MX RT1050 SDK for MCUXpresso is simple. You have to just drag drop the SDK zip obtained using SDK builder into "Installed SDKs" window as shown below.
After approving the confirmation, SDK import process begins.
After SDK import is complete, different components in installed SDK are displayed as shown below.
To import an example from installed SDK, Click on "Import SDK examples" on left pane. Next selection of board must be done.
All the examples supported for the selected board will be displayed next.
One or more examples can be selected.
Next screen in import wizard displays advanced settings. This contains settings for C/C++ library, FPU, memory configurations.
After clicking on "Finish", the project will be imported and is ready to built. The project can be built by clicking on "Build <project_name>" available on left pane. A debug session can be launched by clicking on "Debug <project_name>". Unfortunately, this didn't work for me straightaway. I ran into problem which is summarized in below screenshot.
Next, I tried to download binary on to Hyperflash. MCUXpresso provides an utility to just download an elf/binary on to memory. This too didn't work.
DAPLINK interface provides an option to drag-drop binary files which will be written on to device's flash using flash routine over SWD/JTAG. This too didn't work. DAPLINK exposes an mass storage interface for binary drap-drop. If the flash programming fails due to some reason, DAPLINK would re-enumerate and will contain a file "FAIL.TXT" which would log the failure. This file was seen after an attempt was made to copy binary on to DAPLINK drive. For me, this ensured that the problem is with the debugger. So, my next step was to see if any new debugger FW update was available. Below is the details of stock DAPLINK FW,
# DAPLink Firmware - see https://mbed.com/daplink Unique ID: 0225000041114e4500463009c207001792d1000097969900 HIC ID: 97969900 Auto Reset: 0 Automation allowed: 0 Daplink Mode: Interface Interface Version: 0241 Bootloader Version: 0242 Git SHA: 34182e2cce4ca99073443ef29fbcfaab9e18caec Local Mods: 1 USB Interfaces: MSD, CDC, HID Bootloader CRC: 0x73707d49 Interface CRC: 0x92919274
Link for resource page for OpenSDA FW update can be found in MCUXpresso IDE itself as shown below,
Clicking on FW updates would redirect to NXP website which contains latest FW of DAPLINK. Download DAPLINK v0244 binary.
As its seen in above image, NXP has different DAPLINK FW for hyperflash and QSPI flash. To download latest DAPLINK FW,
Below is the details of DAPLINK FW after FW update,
# DAPLink Firmware - see https://mbed.com/daplink Unique ID: 0227000041114e4500043004b60f0027a6e1000097969900 HIC ID: 97969900 Auto Reset: 0 Automation allowed: 0 Overflow detection: 0 Daplink Mode: Interface Interface Version: 0244 Bootloader Version: 0242 Git SHA: 853df431d81359e822f49363891f877f17d31efb Local Mods: 0 USB Interfaces: MSD, CDC, HID Bootloader CRC: 0x73707d49 Interface CRC: 0x565000e7 Remount count: 0
Now debugging works as show below.
Apart from SDK examples, there are quite good number of examples which is feature extension enablement to explore the board features. Below is the list of examples,
There are good number of application notes available too!
Below is the demo of i.MX RT1050 EVK board running uClinux image by emcraft. This demo contains Storyboard GUI by Crank Software Inc.
Personally, biggest disappointment was lack of LCD examples. Apart of emwin examples, there are multiple other examples which are not enabled by default. I tried enabling these my modifying .xml file used by SDK importer with no success. I tried to create my own LCD examples and ran into multiple issues. I hope this will be sorted out by NXP very soon. On positive side, there are 61 USB examples included in SDK which covers almost all device classes of USB.
Update: I was able to build an emwin GUI example successfully.
First select the target board.
Next "configure project window" is seen where different components required for the project can be selected.
Select driver for "elcdif" and emwin graphics library in middleware section.
In next window, we need to change the memory configuration to use onboard SDRAM.
Next, related project files needs to be added from emwin example available in downloaded SDK. Files included in red box seen below image needs to be added.
Few files needs to be deleted such as emwin_support.c/.h and pin_mux.c/.h. These files should be taken from emwin example in SDK. So, files imported during new project wizard should be deleted/replaced. Now, debug this project.
Result seen is similar to below image on board LCD. Response to touch on screen can be noticed too.
Top Comments
Nitin,
I liked your meticulous walk-thrrough of the board. I thought your screenshots of the IDE were easy to follow. I see this is still a work in progress. But I found you wrote a successful roadtest…
Thanks! Have you tried using Storyboard GUI by Crank Software Inc? I am hell-bent on creating at least one GUI example.
Nitin
Thanks Randall! Yes! I am planning to include couple more project demos.
Nitin