1
开箱即用2
获取软件3
构建、运行4
Developer Experience (开发人员体验)下面描述了启动FRDM-IMX8MPLUS的步骤。
开发套件包含:
按照演示视频所示步骤,采用FRDM-IMX8MPLUS开始开发应用。如需了解更多信息,请访问i.MX 8M Plus应用处理器文档。
Something went wrong! Please try again.
FRDM-IMX8MPLUS配备一个预构建的Linux二进制演示镜像,被烧写到eMMC上。无需修改内部的二进制文件,从eMMC启动将提供具有某些功能的默认系统,用于在Linux上构建其他应用。
如需了解有关恩智浦Embedded Linux®的更多详情,请继续阅读后续章节。
Something went wrong! Please try again.
将随附的USB-Type C公头转Type-A公头线缆连接至调试UART端口J19,然后将线缆的另一端连接到主机。
主机上将显示两个UART连接。 第一个端口用于A53内核系统调试。
如果您不熟悉终端应用,请先查看以下任一教程,再继续步骤1.4:Minicom教程、Tera Term教程、PuTTY教程。
要在Linux下进行调试,请确保已安装CH342F Linux驱动程序 。
Something went wrong! Please try again.
SW5 [1-4]是启动配置开关。默认情况下,启动设备是eMMC/uSDHC3。
| 启动设备 | SW5-1 |
SW5-2 |
SW5-3 |
SW5-4 |
|---|---|---|---|---|
| 从内部熔丝 | 0 | 0 | 0 | 0 |
| USB串行下载 | 0 | 0 | 0 | 1 |
| uSDHC3 8位eMMC 5.1 | 0 | 0 | 1 | 0 |
| uSDHC2 4位SD3.0 | 0 | 0 | 1 | 1 |
| NAND 8位单器件256页 | 0 | 1 | 0 | 0 |
| NAND 8位单器件512页 | 0 | 1 | 0 | 1 |
| QSPI 3B读取 | 0 | 1 | 1 | 0 |
| QSPI Hyperflash 3.3V | 0 | 1 | 1 | 1 |
| ecSPI Boot | 1 | 0 | 0 | 0 |
Something went wrong! Please try again.
将HDMI线缆的一端连接至HDMI连接器J16。将该线缆的另一端连接至HDMI显示面板。
Something went wrong! Please try again.
将随附的USB-Type C公头转Type-C公头线连接至电源连接器J2,另一端连接至USB PD适配器。
此板默认设置为从eMMC启动。处理器开始从eMMC执行可启动镜像。信息在Arm® Cortex®-A53的串行控制台中打印。当板启动时,您会看到看到HDMI显示器的左上角出现4只企鹅,然后会在左上角看到Linux终端图标,在右上角看到定时器。恭喜,已顺利启动并运行。
Something went wrong! Please try again.
i.MX Linux板级支持包(BSP)包含一系列二进制文件、源代码和支持文件,可用来启动特定i.MX开发平台上的Embedded Linux镜像。
当前Linux二进制演示文件版本请参见Linux下载页面。i.MX软件和开发工具的Linux部分中的i.MX Linux文档包提供其他文档。
FRDM-IMX8MPLUS支持从eMMC和SD卡启动。
本入门指南仅概述了将Linux BSP镜像烧写到SD卡的几种方法。经验丰富的Linux开发人员可根据需要探究其他选项。
Something went wrong! Please try again.
FRDM-IMX8MPLUS的最新预建镜像可在FRDM i.MX 8M Plus开发板上获取。
预构建的恩智浦Linux二进制演示镜像提供典型系统和基本的功能集,用于使用和评估处理器。无需修改系统,用户就可以评估硬件接口、测试SoC功能并运行用户空间应用。
Something went wrong! Please try again.
除了“开箱即用”章节的连接外,使用USB线缆将USB3.0 OTG (J3)连接至主机。
给板断电。参考“1.4 启动开关设置”章节,配置板在串行下载协议(SDP)模式启动。
根据主机使用的操作系统,将Linux BSP镜像传输到SD卡的方式可能会有所不同。从下面的选项中进行选择,获取详细指导:
如需下载最新的stable文件,请访问UUU GitHub页面。 如需有关UUU的进一步帮助,请参阅本详细教程。
uuulibusb1(通过apt-get或任何其它资源包管理器)在默认情况下,本流程将镜像烧写到SD卡中。查看UUU GitHub页面 ,了解如何将镜像烧写到其他设备。
打开终端应用并将目录更改为uuu及FRDM-IMX8MPLUS最新Linux版本所在位置。向uuu文件添加执行权限并执行。uuu等待USB设备连接。
$ chmod a+x uuu
$ sudo ./uuu -b sd_all imx-image-full-imx8mpfrdm.rootfs.wic.zst确认FRDM-IMX8MPLUS启动模式已切换至串行下载模式,然后给板上电,uuu开始将镜像烧写到SD卡。
完成后,为板和终端断电。如需获得关于配置板从SD卡启动的进一步帮助,请参阅“1.4启动开关设置”。
如需下载最新的stable文件,请访问UUU GitHub页面。 如需有关UUU的进一步帮助,请参阅本详细教程。
uuu.exe在默认情况下,本流程将镜像烧写到SD卡中。查看UUU GitHub页面 ,了解如何将镜像烧写到其他设备。
打开命令提示应用,进入uuu.exe文件及FRDM-IMX8MPLUS最新Linux版本所在的目录。
uuu.exe -b sd_all imx-image-full-imx8mpfrdm.rootfs.wic.zst确认FRDM-IMX8MPLUS启动模式已切换至串行下载模式,然后给板上电,uuu开始将镜像拷贝到板上。
完成后,关闭板和命令提示应用。如需获得关于配置板从SD卡启动的进一步帮助,请参阅“1.4启动开关设置”。
Something went wrong! Please try again.
本节简要介绍了如何为FRDM-IMX8MPLUS构建Yocto BSP镜像、如何添加Matter支持以及如何构建Debian发行版镜像。
FRDM-IMX8MPLUS BSP版本基于i.MX SW 2024 Q3版本和Yocto Project 5.0 (Scarthgap)。要从源代码构建FRDM-IMX8MPLUS镜像,先查阅《i.MX Yocto Project用户指南》,熟悉Yocto Project和Yocto Build。然后,请按照以下步骤为FRDM-IMX8MPLUS构建镜像。
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml
$ repo sync$ cd ${MY_YOCTO}/sources
$ git clone https://github.com/nxp-imx-support/meta-imx-frdm.git $ cd ${MY_YOCTO}
$ MACHINE=imx8mpfrdm DISTRO=fsl-imx-xwayland source sources/meta-imx-frdm/tools/imx-frdm-setup.sh -b frdm-imx8mp$ bitbake imx-image-full$ zstdcat imx-image-full-imx8mpfrdm.rootfs.wic.zst | sudo dd of=/dev/sdx bs=1M && sync或使用uuu将镜像烧写到SD卡:
$ uuu -b sd_all imx-image-full-imx8mpfrdm.rootfs.wic.zstSW5[1:4]更改为“0011”以选择SD卡启动,插入SD卡并启动FRDM-IMX8MPLUS板Something went wrong! Please try again.
FRDM-IMX8MPLUS支持Matter。要添加Matter支持,请按照以下步骤将Matter层纳入Yocto Build。
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml
$ repo sync$ cd ${MY_YOCTO}/sources/meta-nxp-connectivity
$ git remote update
$ git checkout imx_matter_2024_q3$ cd ${MY_YOCTO}/sources
$ git clone https://github.com/nxp-imx-support/meta-imx-frdm.git $ cd ${MY_YOCTO}
$ MACHINE=imx8mpfrdm-matter DISTRO=fsl-imx-xwayland source sources/meta-imx-frdm/tools/imx-frdm-matter-setup.sh bld-xwayland-imx8mp$ bitbake imx-image-multimediaSomething went wrong! Please try again.
FRDM-IMX8MPLUS支持Debian 12操作系统。i.MX Debian Linux SDK发行版组合了恩智浦的内核和引导加载程序与Debian发行版用户空间镜像,其中包括:
有关恩智浦Debian Linux SDK发行版的更多详情,请查阅面向i.MX和Layerscape的恩智浦Debian Linux SDK发行版页面。
Something went wrong! Please try again.
要为FRDM-IMX8MPLUS创建带Debian的SD卡,请按照以下步骤操作。
$ wget http://www.nxp.com/lgfiles/sdk/lsdk2412/flex-installer
$ chmod +x flex-installer
$ sudo mv flex-installer /usr/bin# format SD card
$ flex-installer -i pf -d /dev/sdb
# automatically download and install images into SD card
$ flex-installer -i auto -d /dev/mmcblk1 -m imx8mpfrdm$ dhclient -i end0$ date -s "22 Nov 2024 09:00:00"$ debian-post-install-pkg desktop$ debian-post-install-pkg serverSomething went wrong! Please try again.
要使用Flexbuild为FRDM-IMX8MPLUS构建Debian镜像,请按照以下步骤操作。
$ git clone https://github.com/nxp/flexbuild
$ cd flexbuild && ./setup.env
#Continue to run commands below in case you need to build in Docker due to lack of Ubuntu 22.04 or Debian 12 host
$ bld docker
$ source setup.env$ bld -m imx8mpfrdm$ bld uboot -m imx8mpfrdm (compile u-boot image for imx8mpfrdm)
$ bld linux (compile linux kernel for all arm64 i.MX machines)
$ bld bsp -m imx8mpfrdm (generate BSP firmware)
$ bld boot (generate boot partition tarball including kernel, dtb, modules, distro bootscript for iMX machines)
$ bld multimedia (build multimedia components for i.MX platforms)
$ bld rfs -r debian:server (generate Debian server rootfs)
$ bld apps -r debian:server (compile apps against runtime dependencies of Debian server RootFS)
$ bld merge-apps -r debian:server (merge iMX-specific apps into target Debian server RootFS)
$ bld packrfs -r debian:server (pack and compress target debian server rootfs)Something went wrong! Please try again.
为了帮助各种技能水平的用户加速开发,恩智浦提供了丰富的示例应用,以展示该平台的各种功能和性能。
工程师可以通过应用代码中心 (ACH)资料库轻松查找由恩智浦专家开发的微控制器和处理器软件示例、代码片段和应用软件包及演示。在代码中心,可轻松快速且集中地查找微控制器和处理器应用。
ACH提供筛选和搜索选项,让您能够快速找到特定的应用。在Git功能的加持下,您可以在用户开发环境中轻松导入并使用应用。
如需了解ACH的更多详细信息,请访问此链接。
要查找FRDM-IMX8MPLUS的可用示例应用,请在“器件系列”中选择 “i.MX”,如下所示。
选择每个示例应用以查看其详细信息。
要获取每个示例应用的源代码,请点击顶部的“访问GitHub”按钮,访问恩智浦GitHub中的代码库。
Something went wrong! Please try again.
面向i.MX应用处理器的GoPoint是一款用户友好型应用,可启动Linux BSP预构建的应用,为用户提供卓越的开箱即用体验,并可亲身体验i.MX SoC的功能。GoPoint不仅突出了高级功能,还提供了实用的实现解决方案,并在GitHub上提供了应用的源代码和构建配方。
如需了解GoPoint的更多详细信息,请访问此链接。
对于FRDM-IMX8MPLUS,默认情况下GoPoint包含在BSP版本中。要打开GoPoint GUI启动器,请在FRDM-IMX8MPLUS启动后,按屏幕左上角显示的恩智浦标识,如下所示。
会显示可用的示例应用以及每个应用的屏幕截图图标。选择示例应用时,右侧会显示此示例应用的简要说明。要启动当前选定的应用,请点击“启动演示”按钮。
应用启动后,可以通过点击启动器中的“停止当前演示”按钮(应用启动后出现)强制退出。
有关每个应用用法的详细信息,请参阅《i.MX应用处理器GoPoint用户指南》。
Something went wrong! Please try again.
串行转USB驱动程序可在“CH342F Linux驱动程序”获得。
在Linux主机的命令提示符上,运行以下命令,确定端口号:
$ ls /dev/ttyCH343USB*第一个数字代表Arm® Cortex®-A53。
使用以下命令安装和运行Minicom程序:
$ sudo apt-get install minicom$ sudo minicom /dev/ttyCH343USB * -s
按照图中所示配置Minicom,并退出配置。
FRDM-IMX8MPLUS上的WCH USB串行芯片枚举两个串行端口。假设端口分别为COM11和COM12。第一个端口(COM11)用于Arm® Cortex®-A53的串行控制台通信。串行转USB驱动程序可在“CH342F Windows驱动程序”获得。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows设备管理器并在“端口”(COM和LPT)中查找“USB串行端口”。
Tera Term是一款开源终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口发送的信息。
PuTTY是一款备受欢迎的终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口发送的信息。
FRDM-IMX8MPLUS有一个运行频率高达800MHz的通用Arm® Cortex®-M7内核,可用于实时和低功耗处理。本节将指导开发人员如何为Cortex-M7内核构建、运行和调试程序。
注:Yocto build已经在rootfs /lib/firmware/文件夹下包含了几个Cortex-M7示例镜像,用于快速评估和验证。如果使用示例镜像,开发人员可以跳到“2.3运行Cortex-M7程序”一节。
Cortex-M7 MCUXpresso SDK通过MCUXpresso Web Builder工具分发。 MCUXpresso SDK包含一组灵活的外设驱动程序,旨在加速和简化嵌入式应用的开发。除了外设驱动程序外,MCUXpresso SDK还提供了广泛而丰富的应用示例,涵盖从基本外设用例示例到演示应用的所有内容。MCUXpresso SD还包含可选的RTOS集成,如FreeRTOS和Azure RTOS以及设备协议栈,以支持基于设备的快速开发。
要获取FRDM-IMX8MPLUS的MCUXpresso SDK,请按照以下步骤操作。
请查看SDK包中docs文件夹中的“Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf”文档,了解如何设置工具链和构建cortex-M7程序。
在Cortex-M7上运行编译的程序有两种方法:U-Boot bootaux和Linux remoteproc。使用bootaux或remoteproc启动了Cortex-M7内核后,可以使用remoteproc停止Cortex-M7内核,但仅用于调试目的。在生产系统中,不建议从Linux OS停止Cortex-M7内核。在启动Cortex-M7内核前,需确保其UART端口已在调试终端中打开。
在该示例中,Cortex-M7程序首先在U-Boot中从SD卡的分区1加载。然后Cortex-M7内核通过bootaux命令启动。最后,Cortex-A53内核上的Linux通过boot命令启动。请确保Cortex-M7程序二进制文件以FAT分区格式存储在SD卡的分区1中。在该示例中,二进制文件“hello_world.bin”被用作示例。
板上电后,在Cortex-A53调试终端中按任意键进入U-Boot。然后使用以下命令启动Cortex-M7内核。
u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin
u-boot=> cp.b 0x48000000 0x7e0000 20000
u-boot=> bootaux 0x7e0000如果Cortex-M7内核使用此二进制文件成功启动,则应在Cortex-M7调试终端中打印以下日志:
然后,如需要,运行以下命令启动Linux。
u-boot=> run prepare_mcore
u-boot=> boot在此示例中,Cortex-M7程序从Linux的rootfs加载,并通过remoteproc启动。这里使用二进制文件“imx8mp_m7_TCM_hello_world.elf”作为示例。
注:如果选择使用remoteproc启动Cortex-M7内核,请确保在启动Linux操作系统之前,使用“imx8mp-frdm-rpmsg.dtb”启动Linux,并在U-boot中执行“run prepare_mcore”命令,如下所示。
u-boot=> setenv fdtfile imx8mp-frdm-rpmsg.dtb
u-boot=> run prepare_mcore
u-boot=> boot在Linux启动后,在Cortex-A53的调试终端中使用下面的命令来启动Cortex-M7内核。
root@imx8mpfrdm:~# echo /lib/firmware/imx8mp_m7_TCM_hello_world.elf > /sys/class/remoteproc/remoteproc0/firmware
root@imx8mpfrdm:~# echo start > /sys/class/remoteproc/remoteproc0/state如果Cortex-M7内核使用此二进制文件成功启动,则应在Cortex-M7调试终端中打印以下日志:
FRDM-IMX8MPLUS配备神经处理单元(NPU),其最高运算性能可达2.3TOPS,用于加速神经网络机器学习推理。如需了解有关NPU硬件架构的详情,请参阅《i.MX 8M Plus应用处理器参考手册》。如需了解有关NPU软件架构的详情,请参阅《i.MX机器学习用户指南》。
要利用NPU进行加速,神经网络算子必须量化为8位(无符号或有符号)或16位(有符号)。对于模型量化,请下载最新的eIQ工具包并查看用户指南。
注:i.MX 8M Plus上的NPU针对按张量量化进行了优化。当运行按通道量化的模型时,加速器需要进行额外的计算。因此,其性能可能低于按张量量化的模型。额外的计算也可能引入微小的精度误差。对精度和延迟的实际影响取决于所使用的模型。
要评估NN模型在NPU上的性能,最简单的方法是使用LinuxBSP中的benchmark_model工具。该工具使用随机数据作为输入,并给出指定运行次数的平均推理时间。以下是一个示例:
root@imx8mpfrdm:~# /usr/bin/tensorflow-lite-2.16.2/examples/benchmark_model --graph=/usr/bin/tensorflow-lite-2.16.2/examples/mobilenet_v1_1.0_224_quant.tflite --external_delegate_path=/usr/lib/libvx_delegate.so如果运行成功,调试终端中将打印如下日志:
通过在命令中设置--enable_op_profiling=true,benchmark_model工具还可以提供算子性能分析报告。如需了解benchmark_model用法的详情,请使用--help查看。
注:对于TensorFlow Lite,模型推理的首次执行时间较长,这是因为NPU需要进行模型图初始化。这个初始化阶段称为预热。通过将首次OpenVX图处理的结果信息存储到磁盘,可以显著减少后续应用运行的该阶段耗时。为此,应使用以下环境变量:VIV_VX_ENABLE_CACHE_GRAPH_BINARY:用于启用/禁用OpenVX图缓存的标志。VIV_VX_CACHE_BINARY_GRAPH_DIR:设置缓存信息在磁盘上的存储位置。例如,在控制台上按以下方式设置这些变量:
root@imx8mpfrdm:~# export VIV_VX_ENABLE_CACHE_GRAPH_BINARY="1"
root@imx8mpfrdm:~# export VIV_VX_CACHE_BINARY_GRAPH_DIR=`pwd`通过设置这些变量,图初始化之后的迭代执行速度会快很多倍。在评估NPU上运行的NN模型时,应分别测量预热时间和推理时间。
关于如何使用C++和Python编写代码在NPU上运行模型推理,请参考GoPoint中的示例应用。
除了Tensorflow,PyTorch也是构建NN模型的主流深度学习框架。关于如何将PyTorch模型转换为TensorFlow Lite模型,请查阅应用笔记AN13769:《使用ONNX将PyTorch模型部署到恩智浦支持的推理引擎》。
FRDM-IMX8MPLUS配备了运行频率高达800MHz的Cadence® Tensilica® HiFi 4 DSP,该器件是一个高度优化的音频处理器,可高效执行音频和语音编解码器以及前后处理模块。
要对DSP进行测试,最简单的方法是使用以下命令播放MP3音频文件:
root@imx8mpfrdm:~# gplay-1.0 --audio-sink="alsasink device=sysdefault:CARD=wm8962audio" MP3_EXAMPLE_FILE.mp3 gplay-1.0将自动选择DSP作为音频解码器,并通过wm8962声卡播放MP3文件。应能在连接到3.5mm耳机插孔的耳机听到音频。
如需了解关于DSP用法的更多信息,请参阅《i.MX DSP用户指南》。
除了音频信号处理,该DSP还可通过编程用于更通用的场景。关于如何使用DSP运行机器学习推理,请参阅应用笔记AN13336:《i.MX 8M Plus HiFi4 TFLM ML使能》。关于如何在DSP上运行 Zephyr RTOS,请参阅应用笔记AN13970:《在Cadence Tensilica HiFi 4 DSP上运行Zephyr RTOS》。
FRDM-IMX8MPLUS配备包含解码器和编码器的Hantro视频处理单元(VPU),支持H.264、H.265、VP8、VP9解码和H.264/H.265编码。
要对VPU进行测试,最简单的方法是使用以下命令播放MP4视频文件:
root@imx8mpfrdm:~# gplay-1.0 MP4_EXAMPLE_FILE.mp4 gplay-1.0将自动选择VPU作为视频解码器,并在Weston桌面上播放MP4文件。如果连接了HDMI显示器,应能看到视频画面。
如需了解关于如何在应用中使用VPU API的更多详细信息,请参阅《i.MX VPU API参考手册》。
FRDM-IMX8MPLU有两个摄像头图像信号处理器(ISP)。当使用单摄像头时,两个ISP可支持12MP@30fps或4Kp45。当使用两个摄像头时,每个ISP可支持最高1080p80。
要测试ISP,可将OS08A20摄像头与FRDM-IMX8MPLUS搭配使用。
注:请确保在给板上电前,OS08A20摄像头已连接到FRDM-IMX8MPLUS的MIPI_CSI1端口。然后,请确保使用“imx8mp-frdm-os08a20.dtb”启动Linux OS。
u-boot=> setenv fdtfile imx8mp-frdm-os08a20.dtb
u-boot=> boot在FRDM-IMX8MPLUS启动且连接了OS08A20摄像头后,请运行下面的命令打开OS08A20的摄像头预览:
root@imx8mpfrdm:~# gst-launch-1.0 -v v4l2src device=/dev/video3! "video/x-raw,format=YUY2,width=3840,height=2160" ! queue ! waylandsink如果HDMI显示器上正确显示出摄像头预览画面,则证明ISP正常运行。如需了解关于ISP用法的详情,请参阅《i.MX 8M Plus摄像头和显示器指南》。
FRDM-IMX8MPLUS配备一个GC7000超精简图形处理单元(GPU),其运算速度可达16 GFLOPS (高精度),支持OpenGL ES 1.1/2.0/3.0/3.1、OpenCL 3.0、OpenVG 1.1、OpenGL 4.0、EGL 1.5、Vulkan 1.1。
要测试GPU性能,最简单的方法是运行glmark2-es2-wayland基准测试,命令如下:
root@imx8mpfrdm:~# glmark2-es2-wayland --fullscreen 除此之外,在FRDM-IMX8MPLUS的默认rootfs文件系统中,在/opt/imx-gpu-sdk/文件夹下还安装了许多其他GPU示例应用。可以直接运行该二进制文件,或通过GoPoint启动应用。
如需了解关于GPU用法的更多信息,请参阅《i.MX Graphics用户指南》。
系统安全与完整性始终是产品开发中最为关键的考虑要素之一。
FRDM-IMX8MPLUS支持安全启动功能,有效防止在设备启动序列中未经授权的软件执行。有关安全启动功能的详细说明,请参阅应用笔记AN4581:《在支持HABv4的设备上实现i.MX安全启动》。
在某些应用场景下,对设备启动时间有严格要求,即设备必须在限定时间内完成启动过程。
为优化启动时间,FRDM-IMX8MPLUS在U-Boot中支持Falcon模式。Falcon模式是U-Boot的一项功能,它允许SPL直接启动Linux内核,从而实现快速启动。它完全跳过了U-Boot的加载和初始化,从而减少在引导加载程序中花费的时间。
关于如何启用Falcon模式以及进一步优化启动时间,请参阅应用笔记AN14093:《通过Falcon模式及内核优化在i.MX 8M和i.MX 9上实现快速启动》。