Getting Started with the MCIMX8M-EVK | NXP 半导体

MCIMX8M-EVK快速入门

上次修改时间: 2022-12-06 13:29:00支持 i.MX 8M评估套件

1. 开箱即用

Video Player is loading.
Current Time 0:00
Duration 4:31
Loaded: 3.67%
Stream Type LIVE
Remaining Time 4:31
 
1x
  • Chapters
  • descriptions off, selected
  • captions off, selected
  • en (Main), selected

以下说明将指导您如何启动i.MX 8M评估工具包中预加载的Android镜像。

开发套件包含:

  • 面向智能设备的i.MX8MQuad EVK板
  • USB线缆(Micro-B至Standard-A)
  • 线缆——组件, USB 3.0 A型公头, USB micro-B型公头, 屏蔽线, 1米
  • 线缆——组件, USB 2.0 A型公头, USB C型公头, 屏蔽线, 1米
  • 12 V/5 A通用电源
  • 快速入门指南
  • Android BSP闪存到eMMC中

1.1 熟悉板

GS-MCIMX8EVK-BOARD

GS-MCIMX8EVK-BOARD

GS-MCIMX8EVK-BOARD-BACK

GS-MCIMX8EVK-BOARD-BACK

1.2 从eMMC启动

i.MX8MQuad EVK配备一个预置的恩智浦Android二进制演示镜像,在eMMC上闪存。无需修改内部的二进制文件,从eMMC启动将提供具有某些功能的默示认系统,在Android上构建其他应用。

如需了解有关恩智浦嵌入式Linux®、嵌入式Android或MCUXpresso SDK的更多详情,请继续阅读后续章节。

1.3 连接USB调试线缆

将所提供的USB线缆的micro-B端连接到调试UART端口J901。将线缆的另一端连接到主机。

如果您不确定如何使用终端应用,请根据主机的操作系统尝试以下任一教程: Minicom教程Tera Term教程PuTTY教程

1.4 连接HDMI线缆

要查看随镜像二进制文件提供的用户界面,请通过HDMI接头(J1001)连接显示器。

1.5 启动开关设置

默认情况下,这两个启动开关被配置为零位置。使用eMMC启动模式下的SW801开关,板从eMMC启动。

i.MX板的启动模式由板上启动配置开关来控制。

IMX 8M Chip

IMX 8M Chip

下表显示了DIP开关设置(在启动过程中优先),以便从i.MX8MQuad EVK板的EMMc来启动。

开关 D1 D2 D3 D4
SW801
SW802 - -

1.6 接通电源

将12V电源的插头与DC电源插头J902连接。将电源开关SW701滑至ON,为EVK板通电。

翻转开关为板通电(SW701)。处理器开始执行片上ROM的代码。使用默认启动开关设置,代码读取熔丝,定义可能有可启动镜像的介质。找到可启动镜像后,U-Boot执行应自动开始。

信息在Cortex-A53的较小编号串行控制台中打印(例如Windows上的COM9和Linux上的/dev/ttyUSB*)。如果不停止U-boot流程,就会继续启动Linux内核。

1.7 Android已启动

在启动过程中,Android标识会出现在HDMI显示屏上。注意,HDMI输出分辨率固定为1080P——要对其进行更改,请查看Android文档

启动过程完成后,可以看到Android用户界面。您可以用鼠标开始操作。

2. 嵌入式Linux®

本部分仅适用于试图将Linux操作系统加载到板的情况。

i.MX Linux板级支持包(BSP)是一系列二进制文件、源代码和支持文件,可用来启动特定i.MX开发平台上的Embedded Linux镜像。

当前Linux二进制演示文件版本可参见i.MXLinux下载页面Linux用户指南Linux参考手册提供更多信息。i.MXLinux文档包i.MX软件和开发工具的Linux部分提供其他文档。

2.1 概述

Linux操作系统内核在i.MX板上启动前,需要将Linux镜像复制到启动设备(SD卡、eMMC等),而启动开关需要设置为启动此设备。

为不同的板和启动设备下载Linux BSP镜像有多种方法。

本入门指南仅列出了将Linux BSP镜像传输到SD卡的几种方法。经验丰富的Linux开发人员可探究其他选项。

根据主机中使用的操作系统,将Linux BSP镜像传输到SD卡的方式可能会有所不同。

从下面的选项中进行选择,获取详细指导:

将所提供的USB线缆的micro-B端连接到调试UART端口J1701。将线缆的另一端连接到主机。

如果您不确定如何使用终端应用,请尝试以下任一教程,具体取决于主机的操作系统:

3. 嵌入式Android

本节介绍了带嵌入式Android系统镜像的i.MX8MQuad EVK板的启动过程,并简介了如何构建软件组件,创建您自己的系统镜像。如需了解构建Android平台的更多信息,请参见文档

当前版本包括演示镜像源代码文档。在i.MX软件和开发工具下的Android部分也提供上述项目。

3.1 概述

开发系统(MMC/SD或NAND)上的存储设备必须采用U-Boot启动加载程序来编程。启动过程确定了将访问哪些存储设备,具体取决于开关设置。当启动加载程序已加载并开始执行时,可读取U-Boot的环境空间,以确定如何继续启动过程。

镜像可来自预建版本数据包或使用源代码创建。无论采用哪种方式获取,所有Android镜像都包含以下组件:

  • U-Boot镜像:u-boot.imx

  • 启动镜像:boot.img

  • Android系统根镜像:system.img

  • 恢复根镜像:recovery.img

如需了解有关Android BSP的更多信息,请参见Android用户指南

根据主机中使用的操作系统,将Android BSP镜像传输到SD卡的方式可能会有所不同。

4. MCUXpresso SDK

MCUXpresso软件开发套件(MCUXpresso SDK)提供了在i.MX8MQuad M4内核中执行的全部软件源代码。如果您此时不想在i.MX8MQuad上启用Cortex-M4,则可跳过本节。

4.1 概述

MCUXpresso SDK专为Cortex-M4独立或与A内核协作使用的嵌入式应用开发而设计。除了外设驱动程序外,MCUXpresso SDK还提供了广泛而丰富的应用示例,涵盖从基本外设用例示例到演示应用的所有内容。MCUXpresso SDK还包含RTOS内核、设备软件栈以及各种其他中间件,支持快速开发。

根据主机使用的操作系统,构建和部署演示的方式可能有所不同。

从下面的选项中进行选择,获取详细指导:

网络安全和完整性

网络安全和完整性

CAAM模块示例

i.MX 8M SoC包含加密加速与保证模块(CAAM模块),可通过CryptoDev使用,借助硬件加快加密和解密过程。由于CAAM模块位于SoC上,因此i.MX8M EVK板也支持它。建议在处理大量数据时或在性能要求较高的任何应用中使用此模块。

检查速度性能

OpenSSL是一个开源项目,定义安全协议SSL(安全套接字层)和TLS(传输层安全)。它有一个软件库,可用于需要安全信息传输的应用,以防止窃听。

OpenSSL包括一个速度命令,用于测试所需加密算法的加密性能。对于本示例,使用的算法为aes-128-cbc,实现高级加密标准(AES)加密算法,支持密码块链(CBC)运行模式和128位块。

使用以下命令可观看OpenSSL速度测试:

123456789101112131415161718192021222324# 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 193627.86k 513839.78k 837089.96k 1048974.64k 1130986.42k
    

解决方案:在文档“AN12838使用CAAM安全密钥加强公钥密码”的第5.2.1节和第5.2.2节中,它描述了使用的详细信息。

有线通信

有线通信

借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:本教程将逐步说明如何使用i.MX 8M EVK在Linux上连接到互联网:

  1. 将以太网线缆连接到板RJ-45接头上。
  2. 启动板,等待Linux提示
  3. 当Linux发出提示后,输入下面的命令。
    12#Log in: root
     # ifconfig eth0
  4. Ping任何网站以证实其功能
12345678910# 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

无线连接

无线连接

电源管理

电源管理

PF4210是恩智浦针对i.MX 8M优化的14通道电源管理单元IC

低功耗模式暂停示例

借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:本示例显示如何进入低功耗模式和恢复正常操作。

输入下面的命令,启用串行TTY作为板的唤醒源:

路径:

1# echo enabled > /sys/class/tty/ttymxc0/power/wakeup

输入下面的命令,进入Suspend-To-RAM模式:

1234567891011121314# 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)
    

按下SW1701开关,唤醒板。终端上应出现以下消息:

1234567891011121314151617181920212223242526HIFsuspendwow 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 

音频

音频

简单音频示例

这个简单的例子显示了audiotestsrcalsasink之间的链路。

将耳机插入i.MX 8M EVK板上的音频插孔。

如果您的耳机包含麦克风功能(带有四个触点的TRRS),请不要将麦克风插孔推到底。在外面留一个接触环。

123456789101112131415161718192021222324#aplay -1

**** List of PLAYBACK Hardware Devices ****

card 0: imxspdif [imx-spdif], device 0: S/PDIF PCM snd-soc-dummy-dai-0 [S/PDIF PCM snd-soc-dummy-dai-0]
Subdevices: 1/1 
Subdevice #0: subdevice #0 
card 2: wm8524audio [wm8524-audio], device 0: HiFi wm8524-hifi-0 
[] 
Subdevices: 1/1 
Subdevice #0: subdevice #0 
card 2: wm8524audio [wm8524-audio], device 1: HiFi-ASRC-FE (*) 
[] 
Subdevices: 1/1 
Subdevice #0: subdevice #0 
# gst-launch-1.0 audiotestsrc ! alsasink device=plughw:2 
Setting pipeline to PAUSED ... 
Pipeline is PREROLLING ... 
Redistribute latency... 
Pipeline is PREROLLED ... 
Setting pipeline to PLAYING ... 

New clock: GetAudioSinkClock

在耳机里应该能听到提示音。

听完提示音后,按下kbd:[Ctrl+C],完成命令行

这个简单的例子显示了audiotestsrcalsasink之间的链路。

将耳机插入i.MX 8M EVK板上的音频插孔。

解码器视频音频示例

本示例说明如何只解码视频文件中的音频。将视频文件复制到您的SD卡rootfs分区上的/home/root/,从SD卡启动板,然后运行下面的命令:

注:您可从Big Buck Bunny网站免费获得本示例中使用的文件。

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192# 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
    

显示器和显卡

显示器和显卡

摄像头接口

摄像头接口

机器学习

机器学习

机器学习(ML)通常包括需要分类、识别和预测人为抽象的应用。例子包括图像识别、手势识别、异常检测、语音到文本、文本到语音、自动语音识别(ASR)、场景识别等等。本节将专门介绍应用于图像或视频流的恩智浦机器学习(ML)工具。音频部分可以参考所包括的示例。

设备管理和安全OTA

设备管理和安全OTA

机器学习(ML)通常包括需要分类、识别和预测人为抽象的应用。例子包括图像识别、手势识别、异常检测、语音到文本、文本到语音、自动语音识别(ASR)、场景识别等等。本节将专门介绍应用于图像或视频流的恩智浦机器学习(ML)工具。音频部分可以参考所包括的示例。

Minicom教程

串行控制台通信的设置

在Linux主机的命令提示符上,运行以下命令,确定端口号:

1$ ls /dev/ttyUSB* 

较小编号适用于Arm®Cortex®-A53内核,较大编号适用于Arm®Cortex®-M4内核。

Minicom

使用以下命令安装和运行串行通信程序(以minicom为例):

  1. 使用Ubuntu包管理器安装Minicom。
    1 $ sudo apt-get install minicom 
  2. 启动Minicom,使用先前确定的端口号通过控制台窗口进行
    1$ sudo minicom /dev/ttyUSB* -s 
  3. 配置Minicom,如图3 GS-MCIMX7SABRE-MINICOM
  4. 下一步是连接HDMI线缆。

Tera Term教程

串行控制台通信的设置

i.MX8MQuad上的FTDI USB串行芯片将枚举两个串行端口。假设这两个端口分别为COM9COM10。较小的端口号( COM9)适用于来自Arm®Cortex®-A7的串行控制台通信,而较大的端口号(COM10)适用于Arm®Cortex®-M4内核。串行转USB驱动程序请参见FTDI芯片驱动

Tera Term

它是一款开源终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。

  1. 下载Tera Term。下载完成后,运行安装程序,然后返回该页面继续操作。
  2. 启动TeraTerm。首次启动时,会显示以下对话。选择串行选项。假设您已插入板,列表中会自动填充一个COM端口。Tera-Term-Connection
  3. 配置串行端口设置(使用之前确定的COM端口号),波特率为115200 ,数据位为8 ,无奇偶校验且停止位为1。要进行此操作,进入Setup→Serial Port并更改设置。
  4. 确认连接已打开。如已连接,Tera Term将在标题栏中显示以下内容。Tera-Term-Console
  5. 下一步是连接HDMI线缆。

PuTTY教程

串行控制台通信的设置

i.MX8MQuad上的FTDI USB串行芯片将枚举两个串行端口。假设这两个端口分别为COM9COM10。较小的端口号(COM9)适用于来自Arm®Cortex®-A7的串行控制台通信,而较大的端口号(COM10)适用于Arm®Cortex®-M4。串行转USB驱动程序请参见FTD芯片驱动

PuTTY是一款广受欢迎的终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。

  1. 下载PuTTY下载完成后,运行安装程序,然后返回到该页面继续操作。
  2. 启动PuTTY,可双击下载的*.exe文件或从开始菜单启动,具体取决于您所选的下载类型。
  3. 配置在启动的窗口中进行。选择Serial单选按钮并输入之前确定的COM端口号。还要输入波特率,在本例中,为115200

  4. PUTTY-Configuration
  5. 点击“Open”,打开串行连接。假设板已连接,并已输入正确的COM端口,此终端窗口会打开。如果配置不正确,PuTTY将会发出提示。
  6. 下一步是连接HDMI线缆。

支持

培训

要了解帮助步骤,请先找到您的问题。如果仍需帮助,请联系恩智浦支持部。

培训 说明
i.MX 8M培训 关于恩智浦此产品的点播培训、操作指南视频和在线研讨会完整列表。

论坛

在恩智浦的一个社区网站上,可与其他工程师交流,获取专家建议,了解如何使用i.MX 8M进行产品设计。

产品论坛:

软件论坛: