1
Out of the Box2
Embedded Linux3
Build, Run4
MCUXpresso SDKSign in to save your progress. Don't have an account? Create one.
The following section describes the steps to boot the i.MX 8M Mini LPDDR4 EVKB.
Development kit contains:
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.
Something went wrong! Please try again.
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.
Something went wrong! Please try again.
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.
Something went wrong! Please try again.
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.
Something went wrong! Please try again.
To see the user interface provided with the image binary connect a monitor via the HDMI connector (true
).
Something went wrong! Please try again.
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.
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.
Table 1. Boot modes available for i.MX 8M Mini LPDDR4 EVKB.
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 |
Note: Make sure the boot switch is configured to boot from eMMC.
Note: 1 = ON; 0 = OFF; X = Don't Care.
Something went wrong! Please try again.
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.
Something went wrong! Please try again.
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.
Something went wrong! Please try again.
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.
Something went wrong! Please try again.
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:
Download the latest stable files from UUU GitHub page. An extensive tutorial for UUU can be found in GitHub MFG Tools.
Add execution permission to the uuu file and execute it. Uuu waits for the USB device to connect.
$ chmod a+x uuu
$ sudo ./uuu L5.4.70_2.3.0_images_MX8MMEVK.zip
Turn on the board, uuu
starts to copy the images to the board.
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SDcard.
Download the latest stable files from UUU GitHub page. An extensive tutorial for UUU can be found in GitHub MFG Tools.
> uuu.exe L5.4.70_2.3.0_images_MX8MMEVK.zip
Turn on the board, uuu
starts to copy the images to the board.
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SDcard.
Something went wrong! Please try again.
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.imx
boot.img
system.img
recovery.img
For more information about the Android BSP, refer to the Android User Guide.
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.
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:
Download the latest stable files from UUU GitHub page. An extensive tutorial for UUU can be found in GitHub MFG Tools.
Add execution permission to the uuu file and execute it. Uuu waits for the USB device to connect.
$ chmod a+x uuu
$ sudo ./uuu L5.4.70_2.3.0_images_MX8MMEVK.zip
Turn on the board, uuu
starts to copy the images to the board.
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SD card.
Download the latest stable files from UUU GitHub page. An extensive tutorial for UUU can be found in GitHub MFG Tools.
> uuu.exe L5.4.70_2.3.0_images_MX8MMEVK.zip
Turn on the board, uuu
starts to copy the images to the board.
When it finishes, turn off the board and consult Boot switch setup to configure the board to boot from SD card.
Something went wrong! Please try again.
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 .
Something went wrong! Please try again.
This section describes how to run applications using an SD card and pre-built U-Boot image for i.MX processor.
imx8mm_m4_TCM_hello_world.bin
) to the FAT partition of the SD card
J1701
, and on EVK board there is only one SD slot which is used for bootConnect 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
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.
Something went wrong! Please try again.
Visit i.MX 8 Camera Use Cases to learn more about:
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:
RJ-45
connector# ifconfig eth0
# 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
Visit i.MX 8M Mini EVK Display Selection Guide to learn more about:
With Linux running on the i.MX board, you can evaluate special features that i.MX SoCs provide.
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
.
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:
Note: You can obtain the file used in the example for free from the Big Buck Bunny site.
# 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
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:
The i.MX 8M Mini Power Consumption Measurement application note helps developers design power management system.
This application note also illustrates the following:
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.
# echo enabled > /sys/class/tty/ttymxc0/power/wakeup
# 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)
SW901
switch to wake-up the board. The following messages should appear on terminal: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
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.
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.
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]
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.
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.
Use the following commands to install and run the serial communication program (minicom
as an example):
$ sudo apt-get install minicom
$ sudo minicom /dev/ttyUSB* -s
Figure 3. Minicom Configuration.
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 .
Note: To determine the port number of the i.MX board virtual COM port, open the Windows device manager and find USB serial Port in Ports (COM and LPT).
Is an open source terminal emulation application. This program displays the information sent from the NXP development platform’s virtual serial port.
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 settingsThe 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 .
Note: To determine the port number of the i.MX board virtual COM port, open the Windows device manager and find USB serial Port in Ports (COM and LPT)
PuTTY is a popular terminal-emulation application. This program displays the information sent from the NXP development platform’s virtual serial port.
COM
port number that you determined earlier. Also enter the baud rate, in this case 115200
COM
port, the terminal window opens. If the configuration is not correct, PuTTY alerts you
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.
Figure 4. Boot switch setup.
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.
Table 1. Boot modes available for i.MX 8M Mini LPDDR4 EVKB.
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 |
Note: Make sure the boot switch is configured to boot from eMMC.
Note: 1 = ON; 0 = OFF; X = Don't Care.
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.
Connect with other engineers and get expert advice on designing with the i.MX 8M Mini Application Processor on one of our community sites.