The MIMXRT1010-EVK (Evaluation Kit) is based on NXP’s i.MX RT1010 microcontroller unit (MCU). This MCU is part of the i.MX RT Crossover family that features high-performance Arm Cortex-M cores (some even have two). Most members of this family are optimized for real-time Ethernet protocols in industrial IoT and automotive applications, but the RT1010, one of the family’s smaller devices, is more general purpose.

Inside the MCU

The iMX RT1010 is based on an Arm Cortex-M7 core, operating at speeds up to 400 MHz. More powerful members of its family add an Arm Cortex-M4 core to this. The processor has 128 KB on-chip RAM, configurable as tightly coupled memory (TCM) or general-purpose RAM. The SoC integrates a power management module that greatly simplifies powering the device. Of course, there is a range of connectivity interfaces, including UART, SPI, I²C, I²S, and USB. An ADC and temperature sensor have not been forgotten either.
 
iMX RT1010 inside
Block diagram of the iMX RT1010 microcontroller. (Source: NXP)

Audio Applications

The iMX RT1010 is a general-purpose device with a slight preference for audio applications, as it has rich audio features, including SPDIF and I²S audio interfaces. The evaluation kit the MCU is mounted on accentuates this by integrating a WM8960 audio stereo CODEC from Wolfson, a headphone socket, loudspeaker connections, an on-board condenser microphone and (unpopulated) footprints for SPDIF connectors.

Subscribe
Tag alert: Subscribe to the tag Microcontrollers and you will receive an e-mail as soon as a new item about it is published on our website!

Other Applications

Besides audio applications, the iMX RT1010 is also good for motor control. To facilitate this, the EVK has connectors exposing PWM signals generated by the MCU’s eFlexPWM module together with analog inputs for measuring currents and voltages.

The MIMXRT1010-EVK is also supported by the Zephyr RTOS.

Other Peripherals

As is customary for evaluation boards, there is some more stuff on it intended to make application development a bit easier. MIMXRT1010-EVK is no exception. Besides the already mentioned audio and motor control peripherals, the board also has 128 Mbit QSPI flash memory (for program and data storage as the MCU doesn’t have any) and 4 Mbit LPSPI flash memory, USB OTG, a user button and LED, and a 6-axis motion sensor with 3-axis accelerometer and 3-axis magnetometer.
 
MIMXRT1010-EVK peripherals
Location of the peripherals on the MIMXRT1010-EVK. (Source: NXP)

Arduino Shields Are Supported Too

Arduino-UNO-style extension headers are available too, but in a special way as they consist of double-row headers instead of single-row. The inside rows are Arduino shield compatible, while some of the outside rows provide access to the motor control interface.

Debugging Made Easy

To facilitate application development, the EVK comes with built-in debug support. Besides a JTAG header, there is also a Freelink Interface (a leftover from Freescale) with a USB port (also provides power to the board). This interface is supported by MCUXpresso, NXPs Eclipse-based integrated software development platform.

Subscribe
Tag alert: Subscribe to the tag Debugging and you will receive an e-mail as soon as a new item about it is published on our website!

MCUXpresso and Examples

This brings us to software development. As said above, MCUXpresso is the cheapest way to get started with the MIMXRT1010-EVK as it is free of charge. It comes with an extensive SDK providing many examples for almost all the peripherals available on the MCU and on the EVK. All you need to do is import the example you are interested in, compile it, and upload it to the board.

Many examples come in three versions: ‘bm’, ‘lite_bm’ and ‘freertos’. ‘BM’ stands for bare metal, i.e. without an operating system like FreeRTOS. The lite examples are bare metal examples but with a minimal USB stack. The more complex examples come with some documentation, but deeply hidden away in a subfolder of a folder with the name of the board (‘evkmimxrt1010’) which also holds a precompiled executable.
 
MCUXpresso debug session
Stepping through a code example in MCUXpresso.

I tried a few examples, and they all worked without a hitch. Once uploaded, you can immediately run or debug the code by stepping through it or by setting breakpoints.

A Surprising Demo

A curious example that I tried is ‘evkmimxrt1010_dev_audio_generator_bm’ that emulates a USB audio playback device. After compiling and uploading the code, Windows discovers a ‘USB AUDIO DEMO’ device that you can listen to. However, instead of playing some sweet music, the demo cries: “Out! Out! Out! Out! ...”.

Of course, the EVK and the iMX RT1010 processor are also supported by the established tool chain manufacturers.

Documentation?

Because getting started with a new processor is always a bit daunting, and even more so when it comes packed with many complex peripherals, good documentation is important. This is, unfortunately, the weak spot of the MIMXRT1010-EVK. There isn’t much and what there is, doesn’t tell you a lot. It does, however, include the board design files with a schematic in PDF, so you can find out how e.g. the extension ports are wired. For everything else, you should consult the MCU’s datasheet.

Get the Book!

As documentation is lacking, you may want to read the new Elektor book entitled ‘Get Started with the NXP iMX RT1010 Development Kit’ by Dogan Ibrahim. The book describes the processor, the evaluation board, and how to develop applications for it with MCUXpresso in much more detail than NXP, so it is a great way to get started.