下面描述了启动i.MX 8M Mini LPDDR4 EVKB的步骤。
开发套件包含:
跟着演示视频,采用i.MX 8M Mini EVKB开始开发你的应用。如需了解更多信息,请访问i.MX 8M小型应用处理器文档。
Something went wrong! Please try again.
i.MX 8M Mini EVKB套件配备一个IMX-MIPI-HDMI子卡,用于展示板视频功能。将子卡连接到Mini-SAS电缆并连接到标有DSI MIPI的连接器,直至听到咔嗒声。
Something went wrong! Please try again.
i.MX 8M Mini EVKB配备一个预置的恩智浦Android二进制演示镜像,在eMMC上闪存。无需修改内部的二进制文件,从eMMC启动将提供具有某些功能的默示认系统,在Android上构建其他应用。
如需了解有关恩智浦嵌入式Linux®、嵌入式Android™或MCUXpresso SDK的更多详情,请继续阅读下一节。
Something went wrong! Please try again.
将所提供的USB线缆的micro-B端连接到调试UART端口J901
。将线缆的另一端连接到主机。
如果您不确定如何使用终端应用,请根据主机的操作系统尝试以下任一教程: Minicom教程、 Tera Term教程、 PuTTY教程。
Something went wrong! Please try again.
要查看随镜像二进制文件提供的用户界面,请通过HDMI接头(true
)连接显示器。
Something went wrong! Please try again.
启动顺序参见《 i.MX 8M Mini参考手册》。简言之,i.MX板的启动模式由启动配置开关来控制。
这些开关设置启动介质(具体取决于板,例如SD卡、eMMC、NAND)、串行下载协议模式(SDP)或电熔丝的值设置。
SDP也是启动介质的后备,换句话说,当开关配置为从SD卡启动但SD卡插槽为空,或者SD卡二进制文件内容不可启动时,启动顺序转为SDP启动。
下表列出了i.MX 8M Mini EVK板的启动开关设置。i.MX 8M Mini参考手册和开关附近板上的丝印层也提供相同的信息。
表1. i.MX 8M Mini LPDDR4 EVKB可用的启动模式
开关 | SW1101 [D1-D10] |
SW1102 [D1-D10] |
---|---|---|
eMMC/uSDHC3(默认) | 0110110001 | 0001010100 |
MicroSD/SDHC2 | 0110110010 | 0001101000 |
QSPI NOR闪存 | 0110xxxxxx | 00000x0010 |
串行下载模式 | 1010xxxxxx | xxxxxxxxx0 |
注:确保启动开关配置为从eMMC启动。
注:1 =打开;0 =关闭;X =无所谓
Something went wrong! Please try again.
将电源线插入电源接头(J302
)。
翻转开关为板通电(SW101
)。
处理器开始执行片上ROM的代码。使用默认启动开关设置,代码读取熔丝,定义可能有可启动镜像的介质。找到可启动镜像后,U-Boot执行应自动开始。
信息在Cortex®-A53上数字较小的串行控制台中打印。如果不停止U-boot流程,就会继续启动Linux内核。
Something went wrong! Please try again.
在启动过程中,Android标识会出现在HDMI显示屏上。注意,HDMI输出分辨率固定为1080P——要进行更改,请查看Android文档。
启动过程完成后,可以看到Android用户界面。您可以用鼠标开始操作。
在Linux主机的命令提示符上,运行以下命令,确定端口号:
$ ls /dev/ttyUSB*
较小的数适用于Arm®Cortex®-A53 内核,较大的数适用于Arm®Cortex®-M4内核。
使用以下命令安装和运行串行通信程序(以minicom
为例):
$ sudo apt-get install minicom
$ sudo minicom/dev/ttyUSB* -s
图3. Minicom配置
i.MX 8M Mini上的FTDI USB串行芯片将枚举两个串行端口。假设这两个端口分别为COM9
和COM10
。较小的端口号(COM9
)适用于来自Arm®Cortex®-A7的串行控制台通信,而较大的端口号(COM10
)适用于Arm®Cortex®-M4内核。如需获取串行转USB驱动程序请访问http://www.ftdichip.com/Drivers/VCP.htm。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows设备管理器并在端口(COM a class="metadata"nd LPT)中查找“USB串行端口”
它是一款开源终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。
COM
端口号),波特率为115200
,数据位为8
,无奇偶校验且停止位为1
。要进行此操作,进入class="metadata"o Setup → Seri class="metadata"al Port并更改设置。 i.MX 8M Mini上的FTDI USB串行芯片将枚举两个串行端口。假设这两个端口为COM9
。这表示来自Arm®Cortex®-A53内核的串行控制台通信。如需获取串行转USB驱动程序请访问http://www.ftdichip.com/Drivers/VCP.htm。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows设备管理器并在端口(COM a class="metadata"nd LPT)中查找“USB串行端口”
PuTTY是一款广受欢迎的终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。
COM
端口号。还要输入波特率,在本例中,为115200
。COM
端口,此终端窗口会打开。如果配置不正确,PuTTY将会发出提示。启动顺序参见《 i.MX 8M Mini参考手册》。简言之,i.MX板的启动模式由启动配置开关来控制。
这些开关设置启动介质(具体取决于板,例如SD卡、eMMC、NAND)、串行下载协议模式(SDP)或电熔丝的值设置。
SDP也是启动介质的后备,换句话说,当开关配置为从SD卡启动但SD卡插槽为空,或者SD卡二进制文件内容不可启动时,启动顺序转为SDP启动。
图4. 启动开关设置
下表列出了i.MX 8M Mini EVK板的启动开关设置。i.MX 8M Mini参考手册和开关附近板上的丝印层也提供相同的信息。
表1. i.MX 8M Mini LPDDR4 EVKB可用的启动模式
开关 | SW1101 [D1-D10] |
SW1102 [D1-D10] |
---|---|---|
eMMC/uSDHC3(默认) | 0110110001 | 0001010100 |
MicroSD/SDHC2 | 0110110010 | 0001101000 |
QSPI NOR闪存 | 0110xxxxxx | 00000x0010 |
串行下载模式 | 1010xxxxxx | xxxxxxxxx0 |
注:确保启动开关配置为从eMMC启动。
注:1 =打开;0 =关闭;X =无所谓
Something went wrong! Please try again.
本部分仅适用于将Linux操作系统加载到板的情况。
i.MX Linux板级支持包(BSP)是一系列二进制文件、源代码和支持文件,可用来启动特定i.MX开发平台上的Embedded Linux镜像。
当前Linux二进制演示文件版本请参见i.MX Linux下载页面。Linux用户指南和Linux参考手册提供更多信息。i.MXLinux文档包或i.MX软件和开发工具的Linux部分提供其他文档。
Linux操作系统内核在i.MX板上启动前,需要将Linux加载到启动设备(SD卡、eMMC等),而启动开关需要设置为启动此设备。
有多种方法为不同的板和启动设备下载Linux BSP镜像。
本入门指南仅列出了将Linux BSP镜像传输到SD卡的几种方法。经验丰富的Linux开发人员可探究其他选项。
Something went wrong! Please try again.
i.XM 8M Mini EVKB最新的预构建镜像在Linux下载页面提供。镜像文件收集启动板所需的每个工件。
预建的恩智浦Linux二进制演示镜像提供典型系统和基本的功能集,用于使用和评估处理器。无需修改系统,用户就可以评估硬件接口、测试SoC功能并运行用户空间应用。
当需要更多灵活性时,SD卡可逐一与单个组件(启动加载程序、内核、dtb文件和roofs文件)一起加载,或者可加载.sdcard镜像,并且特定组件可以覆盖单个部件。
从下面的选项中进行选择,获取详细指导:
如需下载最新的stable文件请访问UUU GitHub页面。有关UUU的详细教程请参见https://github.com/NXPmicro/mfgtools/wiki。
向uuu文件添加执行权限并执行。Uuu等待USB设备连接。
$ chmod a+x uuu
$ sudo ./uuu L5.4.70_2.3.0_images_MX8MMEVK.zip
为板通电,uuu
开始将镜像复制到板。
完成后,将板断电,并参考启动开关设置,配置板从SD卡启动。
如需下载最新的stable文件请访问UUU GitHub页面。有关UUU的详细教程可参见https://github.com/NXPmicro/mfgtools/wiki。
> uuu.exe L5.4.70_2.3.0_images_MX8MMEVK.zip
为板通电,uuu
开始将镜像复制到板。
完成后,将板断电,并参考启动开关设置,配置板从SD卡启动。
Something went wrong! Please try again.
本节介绍了带嵌入式Android系统镜像的i.MX 8M Mini EVKB板的启动过程,并简介了如何构建软件组件,创建您自己的系统镜像。如需了解构建Android平台的更多信息,请参见https://source.android.com/source/building.html
当前版本包括演示镜像、源代码和文档。这些也可以在i.MX应用处理器的Android操作系统中找到。
开发系统(MMC/SD或NAND)上的存储设备必须采用U-Boot启动加载程序来编程。启动过程确定了将访问哪些存储设备,具体取决于开关设置。当启动加载程序已加载并开始执行时,可读取U-Boot的环境空间,以确定如何继续启动过程。
镜像可来自预建版本数据包或使用源代码创建。无论采用哪种方式获取,所有Android镜像都包含以下组件:
U-Boot镜像:u-boot.imx
启动镜像:boot.img
Android系统根镜像:system.img
恢复根镜像:recovery.img
如需了解有关Android BSP的更多信息,请参见Android用户指南。
预建恩智浦Android演示镜像将为默认系统提供某些功能,以便进行评估。无需修改系统,用户就可以执行一些基础操作并与系统交互来测试硬件接口,还可以在用户空间开发软件应用。
数据包中的预建镜像可根据启动设备来分类,并连同设备名放入目录。最新的预建镜像文件可参见i.MX软件和开发工具的Android部分,也可参见演示镜像下载链接。
除了“开箱即用”章节的连接外,使用USB线缆将J301
连接到主机。
为板断电。参考启动开关设置,配置板在SDP(串行下载协议)模式启动。
根据主机中使用的操作系统,将Android BSP镜像传输到SD卡的方式可能会有所不同。从下面的选项中进行选择,获取详细指导:
如需下载最新的stable文件请访问UUU GitHub页面。有关UUU的详细教程请参见https://github.com/NXPmicro/mfgtools/wiki。
向uuu文件添加执行权限并执行。Uuu等待USB设备连接。
$ chmod a+x uuu
$ sudo ./uuu L5.4.70_2.3.0_images_MX8MMEVK.zip
为板通电,uuu
开始将镜像复制到板。
完成后,将板断电,并参考启动开关设置,配置板从SD卡启动。
如需下载最新的stable文件请访问UUU GitHub页面。有关UUU的详细教程可参见https://github.com/NXPmicro/mfgtools/wiki。
> uuu.exe L5.4.70_2.3.0_images_MX8MMEVK.zip
为板通电,uuu
开始将镜像复制到板。
完成后,将板断电,并参考启动开关设置,配置板从SD卡启动。
Something went wrong! Please try again.
MCUXpresso软件开发套件(MCUXpresso SDK)提供了在i.MX 8M Mini M4内核中执行的全部软件源代码。如果您此时不想在i.MX 8M Mini上启用Cortex®-M4,则可跳过本节。
MCUXpresso SDK专为Cortex®-M4独立或与A内核协作使用的嵌入式应用开发而设计。除了外设驱动程序外,MCUXpresso SDK还提供了广泛而丰富的应用示例,涵盖从基本外设用例示例到演示应用的所有内容。MCUXpresso SDK还包含RTOS内核、设备软件栈以及各种其他中间件,支持快速开发。
本指南介绍如何运行4.14.78_1.0.0_ga
版本提供的imx8mm_m4_TCM_hello_world.bin
演示。有关MCUXpresso SDK及如何构建和部署自定义演示的详细信息,请参见MCUXpresso SDK套件。
Something went wrong! Please try again.
本部分介绍了采用SD卡和i.MX处理器的预建U-Boot镜像运行应用的步骤。
imx8mm_m4_TCM_hello_world.bin
)复制到SD卡的FAT分区。 J1701
启动,在EVK板上,只有一个SD插槽可用来启动。通过USB线缆连接板上的“DEBUG UART”接头与PC。Windows操作系统自动安装USB驱动程序,Ubuntu操作系统也将找到串行设备。
有关串行通信应用的更多说明,请参阅“开箱即用”的“连接USB调试线缆”部分。
在U-Boot倒计时到零之前按任意键,接通板电源并停止启动过程。在第一个终端的U-Boot提示符处,键入以下命令。
=> fatload mmc 0:1 0x7e0000 imx8mm_m4_TCM_hello_world.bin
=> bootaux 0x7e0000
这些命令将镜像文件从SD卡的第一个分区复制到Cortex®-M4’的存储器,并从复位中释放Cortex®-M4。
Something went wrong! Please try again.
访问i.MX 8摄像头用例,了解更多信息:
借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:本教程将逐步说明如何使用i.MX 8M Mini EVKB在Linux上连接到互联网:
RJ-45
接头上。# 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
访问i.MX 8M Mini EVK显示器选型指南,了解更多:
借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:
将耳机插入 i.MX 8M Mini EVKB板上的音频插孔。
如果您的耳机包含麦克风功能(带有四个触点的TRRS),请不要将麦克风插孔推到底。在外面留一个接触环。
# 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
在耳机里应该能听到提示音。
听完提示音后,按下kbd:[Ctrl+C],完成命令行
本示例非常简单易懂。它显示了audiotestsrc
和alsasink
之间的链路。
本示例说明如何只解码视频文件中的音频。将视频文件复制到您的SD卡rootfs分区上的/home/root/
,从SD卡启动板,然后运行下面的命令:
注:您可从Big Buck Bunny网站免费获得本示例中使用的文件。
# 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
请访问i.MX 8 Gstreamer用户指南,了解如何在 i.MX 8M Mini EVKB上使用Gstreamer 1.0版本的更多信息。
网络社区帖子还包括以下内容:
i.MX 8M Mini功耗测量应用笔记可帮助开发人员设计能源管理系统。
本应用笔记还说明了以下内容:
借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:本示例显示如何挂起到低功耗模式并恢复正常操作。
# 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
开关,唤醒板。终端上应出现以下消息: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
借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:此示例显示了使用CAAM作为恩智浦提供的加密卸载引擎的优势。
与许多恩智浦i.MX处理器一样,i.MX 8M Mini EVK板包含加密加速与保证模块(CAAM模块),可通过CryptoDev使用,借助硬件加快加密和解密过程。建议在处理大量数据时或在性能要求较高的任何应用中使用此模块。
aes-128-cbc
,实现高级加密标准(AES)加密算法,支持密码模块链(CBC)运行模式和128位模块。 使用以下命令可观看OpenSSL速度测试:
# 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
使用下面的命令可列出CryptoDev支持的加密算法:
# 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]
本应用笔记提供了使用DM Crypt在模块级别运行透明存储加密的步骤,该加密利用i.MXs加密加速器和保证模块(CAAM)提供的安全密钥功能。
i.MX 8M和i.MX 8M Mini上的增强型OpenSSL本应用笔记介绍了如何在OpenSSL之上使用加密加速器和保证模块(CAAM)添加对加速OP-TEE OS的支持。最终的结果是增强型OpenSSL能够通过OP-TEE以安全的方式加速加密算法。
在Linux主机的命令提示符上,运行以下命令,确定端口号:
$ ls /dev/ttyUSB*
较小的数适用于Arm®Cortex®-A53内核,较大的数适用于Arm®Cortex®-M4内核。
使用以下命令安装和运行串行通信程序(以minicom
为例):
$ sudo apt-get install minicom
$ sudo minicom /dev/ttyUSB* -s
图3. Minicom配置
i.MX8MQuad上的FTDI USB串行芯片将枚举两个串行端口。假设这两个端口分别为COM9
和COM10
。较小的端口号(COM9
)适用于来自Arm®Cortex®-A7的串行控制台通信,而较大的端口号(COM10
)适用于Arm®Cortex®-M4内核。串行转USB驱动程序在虚拟COM端口驱动程序中提供。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows设备管理器并在端口(COM和LPT)中查找“USB串行端口”
它是一款开源终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。
COM
端口号),波特率为115200
,数据位为8
,无奇偶校验且停止位为1
。要进行此操作,进入Setup → Serial Port并更改设置。
i.MX8MQuad上的FTDI USB串行芯片将枚举两个串行端口。假设这两个端口分别为COM9
和COM10
。较小的端口号(COM9
)适用于来自Arm®Cortex®-A7的串行控制台通信,而较大的端口号(COM10
)适用于Arm®Cortex®-M4。如需获取串行转USB驱动程序请访问http://www.ftdichip.com/Drivers/VCP.htm。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows设备管理器并在端口(COM和LPT)中查找“USB串行端口”
PuTTY是一款广受欢迎的终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。
COM
端口号。还要输入波特率,在本例中,为115200
。COM
端口,此终端窗口会打开。如果配置不正确,PuTTY将会发出提示。