Getting Started with the i.MX 8M Mini EVKB

Last Modified: Mar 26, 2019Supports i.MX 8M Mini Evaluation Kit

1. Out of the Box

1.1 i.MX 8M Mini EVK Out of the Box


The following section describes the steps to boot the i.MX 8M Mini LPDDR4 EVKB.

Development kit contains:

  • i.MX 8M Mini LPDDR4 EVKB board for smart devices
  • USB micro-B Cable
  • USB Type-C Cable – Type-C Male to Type-A Male
  • USB Type-C to A adapter
  • USB Type C 45 W Power Delivery Supply, 5 V/3 A; 9 V/3 A; 15 V/3 A; 20 V/2.25 A supported
  • IMX-MIPI-HDMI Daughter Card
  • Mini-SAS cable
  • Android BSP flashed into the eMMC
  • Quick Start Guide

Get started developing your application on the i.MX 8M Mini EVKB with the out-of-the-box video. For more information, please visit the i.MX 8M Mini applications processor Documentation.

1.2 Get Familiar With the Board

8MMINILPD4-EVKB-TOP-LABELS

8MMINILPD4-EVKB-TOP-LABELS

8MMINILPD4-EVKB-BACK-LABELS

8MMINILPD4-EVKB-BACK-LABELS

The i.MX 8M Mini EVKB kit comes with a IMX-MIPI-HDMI daughter card which is required to showcase the boards video capabilities. Connect the daughter card to the Mini-SAS cable and into connector labeled DSI MIPI until you hear a click.

IMX8MMINIEVK-BOARD2

IMX8MMINIEVK-BOARD2

1.3 Boot From eMMC

The i.MX 8M Mini EVKB comes with a pre-built NXP Android binary demo image flashed on the eMMC. Without modifying the binary inside, booting from the eMMC provides a default system with certain features for building other applications on top of Android.

To understand more about NXP's Embedded Linux®, Embedded Android™, or MCUXpresso SDK, continue reading the next sections.

1.4 Connect USB Debug Cable

Connect the micro-B end of the supplied USB cable into Debug UART port J901. Connect the other end of the cable to a host computer.

If you are not sure about how to use a terminal application, try one of the following tutorials depending on the operating system of the host machine: Minicom Tutorial, Tera Term Tutorial, PuTTY Tutorial.

1.5 Connect the HDMI Cable

To see the user interface provided with the image binary connect a monitor via the HDMI connector (true).

1.6 Boot Switch Setup

The boot sequence is detailed in the i.MX 8M Mini Reference Manual. In short, the boot modes of the i.MX boards are controlled by the boot configuration switches.

The switches set the boot media (depending on board, i.e. SD card, eMMC, NAND), the serial download protocol mode (SDP) or the value set on eFuses.

The SDP is also the fallback for the boot media, in other words, when the switches are configured to boot from SD card but the SD card slot is empty, or the SD card binary content is not bootable, the boot sequence continues to the SDP boot.

i.MX 8M Mini Board

The following table lists the boot switch settings on the i.MX 8M Mini EVK board. The same information can be found on i.MX 8M Mini Reference Manual and on silkscreen on the board near the switches.

Switch SW1101 [D1-D10] SW1102 [D1-D10]
eMMC/uSDHC3 (default) 0110110001 0001010100
MicroSD/SDHC2 0110110010 0001101000
QSPI NOR Flash 0110xxxxxx 00000x0010
Serial Download Mode 1010xxxxxx xxxxxxxxx0

1.7 Connect Power Supply

Connect the power supply cable to the power connector (J302).

Power the board by flipping the switch (SW101).

The processor starts executing from the on-chip ROM code. With the default boot switch setup, the code reads the fuses to define the media where it is expected to have a bootable image. After it finds a bootable image, the U-Boot execution should begin automatically.

Information is printed in the smaller number serial console for the Cortex®-A53. If you do not stop the U-Boot process, it continues to boot the Linux kernel.

1.8 Congratulations, Android has Booted

During the boot process, the Android logo appears on the HDMI display. Note that the HDMI output resolution is 1080P fixed — to change it, check the Android Documentation.

The Android UI can be seen after the boot process is finished. You can start operating with the mouse.

2. Embedded Linux®

2.1 Overview

This section is applicable ONLY if attempting to load a Linux operating system on the board.

The i.MX Linux Board Support Package (BSP) is a collection of binary files, source code, and support files that are used to boot an Embedded Linux image on a specific i.MX development platform.

Current releases of Linux binary demo files can be found on the i.MX Linux download page. The Linux User Guide and Linux Reference Manual provide additional information. Additional documentation can be found the i.MX Linux documentation bundle, or under the Linux sections on the i.MX Software and Development Tool.

Before the Linux OS kernel can boot on an i.MX board, the Linux kernel is loaded to a boot device (SD card, eMMC and so on) and the boot switches are set to boot that device.

There are various ways to download the Linux BSP image for different boards and boot devices.

For this getting started guide, only a few methods to transfer the Linux BSP image to an SD card are listed. Experienced Linux developers can explore other options.

2.2 Download an NXP Linux BSP Pre-Built Image

The latest pre-built images for the i.MX 8M Mini EVKB are available on the Linux download page. The image file gathers every artifact required to boot the board gathers every artifact required to boot the board.

The pre-built NXP Linux binary demo image provides a typical system and basic set of features for using and evaluating the processor. Without modifying the system, the users can evaluate hardware interfaces, test SoC features, and run user space applications.

When more flexibility is desired, an SD card can be loaded with individual components (boot loader, kernel, dtb file, and rootfs file) one-by-one or the .sdcard is loaded and the individual parts are overwritten with the specific components.

Choose an option below for detailed instructions:

3. Build, Run

3.1 Overview

This section describes the boot process of loading the i.MX 8M Mini EVKB board with an Embedded Android system image and introduces how to build the software components that create your own system image. For details on building the Android platform, see Build Android documentation.

The current release includes Demo Images, source code and Documentation. These can also be found in Android OS for i.MX Applications Processor.

The storage devices on the development system (MMC/SD or NAND) must be programmed with the U-Boot boot loader. The boot process determines which storage device to access based on the switch settings. When the boot loader is loaded and begins execution, the U-Boot environment space is then read to determine how to proceed with the boot process.

The images can come from pre-built release packages or be created from source code. Regardless of how you obtain them, all Android images contain the following components:

  • U-Boot image: u-boot.imx
  • boot image: boot.img
  • Android system root image: system.img
  • Recovery root image: recovery.img

For more information about the Android BSP, refer to the Android User Guide.

Download NXP Android BSP Image

The pre-built NXP Android demo image provides a default system with certain features for evaluation. Without modifying the system, users can perform some basic operations, and interact with the system to test hardware interfaces and develop software applications in the user space.

The pre-built images from the package are categorized by boot device and put in the directory with the device name. The latest pre-built image files can be found in the Android section on the i.MX Software and Development Tool, or on the demo images downloader link.

Burn NXP Android BSP Image Using UUU

In addition to the connections from out of box chapter, connect the J301 to the host machine using the proper USB cable.

Turn off the board. Consult Boot switch setup and configure the board to boot on SDP (Serial Download Protocol) mode.

Depending on the OS used in the host machine, the way to transfer the Android BSP image onto an SD card can vary. Choose an option below for detailed instructions:

4. MCUXpresso SDK

4.1 Overview

The MCUXpresso Software Development Kit (MCUXpresso SDK) provides comprehensive software source code to be executed in the i.MX 8M Mini M4 core. If you do not wish to enable the Cortex®-M4 on i.MX 8M Mini at this moment you can skip this section.

The MCUXpresso SDK is designed for the development of embedded applications for Cortex-M4 standalone or collaborative use with the A cores. Along with the peripheral drivers, the MCUXpresso SDK provides an extensive and rich set of example applications covering everything from basic peripheral use case examples to demo applications. The MCUXpresso SDK also contains RTOS kernels, and device stack, and various other middleware to support rapid development.

This guide shows how to run the imx8mm_m4_TCM_hello_world.bin demo provided by the 4.14.78_1.0.0_ga release. For detailed information on MCUXpresso SDK and how to build and deploy custom demos, please see the MCUXpresso SDK site .

4.2 Run Applications Using U-Boot

This section describes how to run applications using an SD card and pre-built U-Boot image for i.MX processor.

  1. Following the steps on the Embedded Linux® tab, prepare an SD card with a pre-built U-Boot + Linux image from the Linux BSP package for the i.MX 8M Mini processor. If you have already loaded the SD card with a Linux image, you can skip this step
  2. Insert the SD card in the host computer (Linux or Windows), and copy the application image (for example imx8mm_m4_TCM_hello_world.bin) to the FAT partition of the SD card
  3. Safely remove the SD card from the PC
  4. Insert the SD card to the target board. Make sure to use the default boot SD slot and double check the Boot switch setup. The default configuration of the validation board boots from J1701, and on EVK board there is only one SD slot which is used for boot
  5. Connect the DEBUG UART connector on the board to the PC through USB cable. The Windows OS installs the USB driver automatically, and the Ubuntu OS will find the serial devices as well.

    See Connect USB debug cable section in Out of box for more instructions on serial communication applications

  6. Open a second terminal on the i.MX 8M Mini EVKB board’s second enumerated serial port. This is the Cortex®-M4’s serial console. Set the speed to 115200 bit/s, data bits 8, no parity
  7. Power up the board and stop the boot process by pressing any key before the U-Boot countdown reaches zero. At the U-Boot prompt on the first terminal, type the following commands.

    => fatload mmc 0:1 0x7e0000 imx8mm_m4_TCM_hello_world.bin => bootaux 0x7e0000

These commands copy the image file from the first partition of the SD card into the Cortex-M4’s memory and releases the Cortex-M4 from reset.

Camera and Interface

Camera and Interface

Visit i.MX 8 Camera Use Cases   to learn more about:

  • The i.MX 8 MIPI CSI use cases
  • Advanced Gstreamer camera use cases
  • Available cameras and daughter cards supported by i.MX 8M Mini EVKB
  • Compatible Device Trees (DTS) files
  • How to enable different camera options on the i.MX 8M Mini EVKB

Connectivity

Connectivity

With Linux running on the i.MX board, you can evaluate special features that i.MX SoCs provide. This tutorial shows the step-by-step instructions on how to connect to the Internet on Linux with i.MX 8M Mini EVKB:

  1. Connect an Ethernet cable to the board RJ-45 connector
  2. Boot up the board and wait for the Linux prompt
  3. At the Linux prompt, enter the following command
    # ifconfig eth0
  4. Ping any site to corroborate functionality.
    # ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=4.81 ms 64 bytes
    from 8.8.8.8: icmp_seq=2 ttl=119 time=4.87 ms 64 bytes
    from 8.8.8.8: icmp_seq=3 ttl=119 time=4.94 ms 64 bytes
    from 8.8.8.8: icmp_seq=4 ttl=119 time=4.61 ms

Display

Display

Visit i.MX 8M Mini EVK Display Selection Guide  to learn more about:

  • i.MX 8M Mini EVKB mini-SAS connectors features
  • Supported daughter cards
  • How to change Device Tree (DTS) files or boot images
  • Enabling different display options on the board

Multimedia

With Linux running on the i.MX board, you can evaluate special features that i.MX SoCs provide.

Simple Audio Example

Connect your earphone to the Audio Jack on the i.MX 8M Mini EVKB board.

If your earphone includes a microphone feature (TRRS with four contacts), do not push the microphone jack to the end. Leave one contact ring outside.

# gst-launch-1.0 audiotestsrc ! alsasink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ... New clock: GstAudioSinkClock

You should be able to listen a tone on the earphone.

When you are done with the tone, finish the command line by pressing kbd:[Ctrl+C]

This example is very simple. It shows the link between audiotestsrc and alsasink.

Decoder Video Audio

This example explains how to decode just the audio from a video file. Copy a video file to your /home/root/ on your SD card rootfs partition, boot the board from the SD card and run the command below:

# gplay-1.0 SampleVideo_1280x720_2mb.mp4
FSL_GPLAY2_01.00_LINUX build on Mar 12 2018 11:48:19
Set VideoSink kmssink
Set TextSink fakesink ====== AIUR: 4.3.4 build on Mar 12 2018 11:47:35. ======
Core: AVI_PARSER_03.05.29 build on Aug 31 2017 09:15:57
file: /usr/lib/imx-mm/parser/lib_avi_parser_arm_elinux.so.3.1
Track 00 [video]: Disabled
Codec: 4, SubCodec: 1
-----------------------
------------------------ Track 01 [audio_0] Enabled
Duration: 0:09:56.424000000
Language: und
Mime: audio/mpeg, mpegversion=(int)1, channels=(int)2, rate=(int)48000, bitrate=(int)0
codec_data=(buffer)014d401fffe10017674d401fda014016ec0440000003004000000c83c60ca801000468ef3c80
------------------------
====== BEEP: 4.3.4 build on Mar 12 2018 11:47:45. ======
Core: MP3 decoder Wrapper build on Jan 11 2018 10:20:25
file: /usr/lib/imx-mm/audio-codec/wrap/lib_mp3d_wrap_arm_elinux.so.3
CODEC: BLN_MAD-MMCODECS_MP3D_ARM_02.13.01_ARMV8 build on Jan 11 2018 10:05:45. [Stop (No Repeated)][Vol=1.0][00:00:00/00:09:56]=========== fsl_player_play()=========== FSL_GPLAY2_01.00_LINUX build on Mar 12 2018 11:48:19
[h]display the operation Help
[p]Play
[s]Stop
[e]Seek
[a]Pause when playing, play when paused
[v]Volume
[m]Switch to mute or not
[>]Play next file
[ [r]Switch to repeated mode or not
[u]Select the video track
[d]Select the audio track
[b]Select the subtitle track
[f]Set full screen
[z]resize the width and height
[t]Rotate
[c]Setting play rate
[i]Display the metadata
[x]eXit
State changed: buffering
State changed: playing
[Playing (No Repeated)][Vol =1.0][00:00:13/00:00:13]EOS Found
getNextItem No next item!
No more media file, exit gplay!
State changed: stopped
Exit display thread
FSL_PLAYER_UI_MSG_EXIT
fsl_player_deinit

GStreamer

Visit i.MX 8 Gstreamer User Guide  to learn more about how to use GStreamer version 1.0 on the i.MX 8M Mini EVKB.

The community post also includes the following:

  • Decode examples
  • Encode examples
  • Camera examples
  • Video composition
  • Video scaling and rotation

Power Consumption

Power Consumption

The i.MX 8M Mini Power Consumption Measurement application note helps developers design power management system.

This application note also illustrates the following:

  • Current drain measurements for the i.MX 8M Mini applications processors
  • Power supply domains
  • Use case configurations and guidelines
  • Expected processor power consumption for various use cases
  • Reducing power consumption

Power Management

Power Management

With Linux running on the i.MX board, you can evaluate special features that i.MX SoCs provide. This example shows how to suspend to low-power modes and resuming to normal operation.

  1. Enter the command below in order to enable serial TTY as a wake up source for the board:
    # echo enabled > /sys/class/tty/ttymxc0/power/wakeup
  2. Enter the command below to enter Suspend-To-RAM mode:
  3. # echo mem > /sys/power/state
    PM: suspend entry (deep)
    PM: Syncing filesystems ... done.
    Freezing user space processes ... (elapsed 0.001 seconds) done.
    OOM killer disabled.
    Freezing remaining freezable tasks ... (elapsed 0.000 seconds) done.
    Suspending console(s) (use no_console_suspend to debug)
  4. Press the SW901 switch to wake-up the board. The following messages should appear on terminal:
  5. HIFsuspendwow TODO
    PM: suspend devices took 0.112 seconds
    Disabling non-boot CPUs ...
    CPU1: shutdown
    psci: CPU1 killed.
    CPU2: shutdown
    psci: CPU2 killed.
    CPU3: shutdown
    psci: Retrying again to check for CPU kill
    psci: CPU3 killed.
    Enabling non-boot CPUs ...
    Detected VIPT I-cache on CPU1
    GICv3: CPU1: found redistributor 1 region 0:0x00000000388a0000
    CPU1: Booted secondary processor [410fd034]
    cache: parent cpu1 should not be sleeping
    CPU1 is up
    Detected VIPT I-cache on CPU2
    GICv3: CPU2: found redistributor 2 region 0:0x00000000388c0000
    CPU2: Booted secondary processor [410fd034]
    cache: parent cpu2 should not be sleeping
    CPU2 is up
    Detected VIPT I-cache on CPU3
    GICv3: CPU3: found redistributor 3 region 0:0x00000000388e0000
    CPU3: Booted secondary processor [410fd034]
    cache: parent cpu3 should not be sleeping
    CPU3 is up
    PM: resume devices took 0.028 seconds
    OOM killer enabled.
    Restarting tasks ... done.
    PM: suspend exit

Security

With Linux running on the i.MX board, you can evaluate special features that i.MX SoCs provide. This example shows the advantages of using CAAM as an encryption offload engine provided by NXP.

CAAM and CryptoDev

As many of the i.MX NXP processors, i.MX 8M Mini EVKB board. includes the Cryptographic Acceleration And Assurance Module CAAM module that can be used through CryptoDev in order to accelerate by hardware the encryption and decryption process. It is recommended to use this module when working with large amounts of data or in any application where performance is important.

Checking the Speed Performance

  • OpenSSL is an open source project that defines the security protocols SSL (Secure Sockets Layer) and TLS (Transport Layer Security). It has a software library that can be used in applications that requires a secure information transmission in order to prevent eavesdropping.
  • OpenSSL includes a speed command that tests the encryption performance for a desired encryption algorithm. For this example the algorithm used is the aes-128-cbc that implements the Advanced Encryption Standard (AES) encryption algorithm, with a Cipher Block Chaining (CBC) mode of operation and 128 bits block.

The OpenSSL speed test can be seen using the following command:

# openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 43389139 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 64 size blocks: 28788614 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 11766741 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 1024 size blocks: 3674139 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 8192 size blocks: 495157 aes-128-cbc's in 3.00s
OpenSSL 1.0.2p 14 Aug 2018
built on: reproducible build, date unspecified
options:bn(64,64) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(ptr)
compiler: arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 -DL_ENDIAN -DTERMIO -O2 -pipe -g -feliminate-unused-debug-types -Wall -Wa,--noexecstack -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS
The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 232182.68k 614157.10k 1007453.41k 1258300.45k 1352108.71k

The encryption algorithms supported by the CryptoDev can be listed by the following command:

# openssl engine cryptodev -c
(cryptodev) BSD cryptodev engine
[RSA, DSA, DH, DES-CBC, DES-EDE3-CBC, AES-128-CBC, AES-192-CBC, AES-256-CBC, BF-CBC, hmacWithMD5, hmacWithSHA1, RIPEMD160, MD5, SHA1]

Helpful Application Notes

i.MX Encrypted Storage Using CAAM Secure Keys

This application note provides steps to run a transparent storage encryption at block level using DM-Crypt taking advantage of the secure key feature provided by i.MXs Cryptographic Accelerator and Assurance Module (CAAM).

Enhanced OpenSSL on i.MX 8M and i.MX 8M Mini

This application note describes how to add support for accelerated OP-TEE OS with Cryptographic Accelerator and Assurance Module (CAAM) on top of OpenSSL. The final result being an enhanced OpenSSL capable of accelerating crypto algorithms in a secure way via OP-TEE.

Minicom Tutorial

Serial Communication Console Setup

On the command prompt of the Linux host machine, run the following command to determine the port number:

 $ ls /dev/ttyUSB* 

The smaller number is for Arm® Cortex®-A53 core and the bigger number is for Arm® Cortex®-M4 core.

Minicom

Use the following commands to install and run the serial communication program (minicom as an example):

  • Install Minicom using Ubuntu package manager
     $ sudo apt-get install minicom 
  • Launch Minicom using a console window using the port number determined earlier
     $ sudo minicom /dev/ttyUSB* -s 
  • Configure Minicom as shown in Figure 3 GS-MCIMX7SABRE-MINICOM
  • The next step is to Connect the HDMI cable

Tera Term Tutorial

Serial Communication Console Setup

The FTDI USB-serial chip on i.MX8MQuad enumerates two serial ports. Assume that the ports are COM9 and COM10. The smaller numbered port ( COM9) is for the serial console communication from Arm® Cortex®-A53 and the larger numbered port (COM10) is for Arm® Cortex®-M4 core. The serial-to-USB drivers are available at Virtual COM Port Drivers .

Tera Term

Is an open source terminal emulation application. This program displays the information sent from the NXP development platform’s virtual serial port.

  • Download Tera Term . After the download, run the installer and then return to this webpage to continue
  • Launch TeraTerm. The first time it launches, it shows the following dialog. Select the serial option. Assuming your board is plugged in, there should be a COM port automatically populated in the list Tera-Term-Connection
  • Configure the serial port settings (using the COM port number identified earlier) to 115200 baud rate, 8 data bits, no parity and 1 stop bit. To do this, go to Setup → Serial Port and change the settings
  • Verify that the connection is open. If connected, Tera Term shows something like below in its title bar Tera-Term-Console
  • The next step is to Connect the HDMI cable

PuTTY Tutorial

Serial Communication Console Setup

The FTDI USB-serial chip on i.MX8MQuad enumerates two serial ports. Assume that the ports are COM9 and COM10. The smaller numbered port (COM9) is for the serial console communication from Arm® Cortex®-A53 and the larger numbered port (COM10) is for Arm® Cortex®-M4. The serial-to-USB drivers are available at VCP Drivers .

PuTTY is a popular terminal-emulation application. This program displays the information sent from the NXP development platform’s virtual serial port.

  • Download PuTTY After the download, run the installer and then return to this webpage to continue
  • Launch PuTTY by either double clicking on the executable file you downloaded or from the Start menu, depending on the type of download you selected
  • Configure In the window that launches. Select the Serial radio button and enter the COM port number that you determined earlier. Also enter the baud rate, in this case 115200
  • PUTTY-Configuration
  • Click Open to open the serial connection. Assuming the board is connected and you entered the correct COM port, the terminal window opens. If the configuration is not correct, PuTTY alerts you
  • The next step is to Connect the HDMI cable

Boot Switch Setup

Boot Switch Setup

The boot sequence is detailed in the i.MX 8M Mini Reference Manual. In short, the boot modes of the i.MX boards are controlled by the boot configuration switches.

The switches set the boot media (depending on board, i.e. SD card, eMMC, NAND), the serial download protocol mode (SDP) or the value set on eFuses.

The SDP is also the fallback for the boot media, in other words, when the switches are configured to boot from SD card but the SD card slot is empty, or the SD card binary content is not bootable, the boot sequence continues to the SDP boot.

i.MX 8M Mini Board

The following table lists the boot switch settings on the i.MX 8M Mini EVK board. The same information can be found on i.MX 8M Mini Reference Manual and on silkscreen on the board near the switches.

Switch SW1101 [D1-D10] SW1102 [D1-D10]
eMMC/uSDHC3 (default) 0110110001 0001010100
MicroSD/SDHC2 0110110010 0001101000
QSPI NOR Flash 0110xxxxxx 00000x0010
Serial Download Mode 1010xxxxxx xxxxxxxxx0

Support

Training

Want to learn more about using the i.MX 8M Mini? Check out our selection of training offerings ranging from online mini tech sessions to hands-on deep-dive training for help.

Silicon and board-related training

Forums

Connect with other engineers and get expert advice on designing with the i.MX 8M Mini Application Processor on one of our community sites.