下面描述了启动i.MX7Dual Sabre的步骤。
开发套件包含:
图1. i.MX7Dual Sabre正面
图2. i.MX7Dual Sabre背面
该套件带有含预建恩智浦Linux二进制演示镜像的SD卡。无需修改SD卡内的二进制文件,从该SD卡启动将提供具有某些功能的默认系统,在Linux上构建其他应用。下面的部分介绍了该软件。
将所提供的USB线缆的micro-B端连接到调试UART端口J11
。将线缆的另一端连接到主机。
如果您不确定如何使用终端应用,请尝试以下教程之一,具体取决于主机的操作系统:
要查看随SD卡镜像二进制文件提供的用户界面,请通过HDMI接头(J9
)连接显示器。
点击此处查看启动开关设置
将5V电源线与5V DC电源插头(J1
)连接。
翻转开关为板通电(SW1
)。处理器开始执行片上ROM的代码。使用默认开关启动设置,代码读取保险丝,定义可能有可启动镜像的介质。在SD卡上找到可启动镜像后,U-Boot执行应自动开始。
信息打印在Cortex-A7数量较少的串行控制台中(Windows上以COM9
为示例,在Linux上为/dev/ttyUSB*
)。如果不停止U-boot流程,就会继续启动Linux内核。
Windows上的运行作为示例
一旦启动了Linux,使用用户名root
进行登录,无密码。
提示:要转至U-Boot,在U-Boot环境变量bootdelay
值降低和超时(默认3秒)之前,按任意键。如果停止U-boot流程,可运行以下命令来继续Linux启动流程:
# boot
在Linux主机上命令提示符上,运行以下命令以确定端口号:
$ ls /dev/ttyUSB*
较小的数适用于Cortex-A7,较大的数适用于Cortex-M4。
使用以下命令安装串行通信程序(以minicom
为例):
$ ls /dev/ttyUSB*
$ sudo minicom /dev/ttyUSB* -s
图3. Minicom配置
i.MX7Dual上的FTDI USB串行芯片将枚举两个串行端口。假设这些端口为COM9和COM10。较小的端口号( COM9)适用于来自Cortex-A7的串行控制台通信,而较大的端口号(COM10)适用于Cortex-M4。串行转USB驱动程序在http://www.ftdichip.com/Drivers/VCP.htm.提供。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows器件管理器并在端口(COM和LPT)中查找“USB串行端口”
它是一个款受欢迎的开源终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。
i.MX7Dual上的FTDI USB串行芯片将枚举两个串行端口。假设这些端口为COM9和COM10。较小的端口号( COM9)适用于来自Cortex-A7的串行控制台通信,而较大的端口号(COM10)适用于Cortex-M4。串行转USB驱动程序在http://www.ftdichip.com/Drivers/VCP.htm.提供。
注:要确定i.MX板虚拟COM端口的端口号,请打开Windows器件管理器并在端口(COM和LPT)中查找“USB串行端口”
PuTTY是一款广受欢迎的终端仿真应用。此程序显示从恩智浦开发平台的虚拟串行端口中发送的信息。
115200
。本部分仅适用于试图将Linux操作系统加载到板的情况。
i.MX Linux板级支持包(BSP)是一系列二进制文件、源代码和支持文件,可用来启动特定i.MX开发平台上的Embedded Linux镜像。
当前Linux二进制演示文件版本可在i.MX Linux下载页面找到。Linux用户指南和Linux参考手册提供更多信息。i.MX Linux文档包或i.MX软件和开发工具的Linux部分提供其他文档。
Linux操作系统内核在i.MX板上启动前,需要将Linux镜像复制到启动器件(SD卡、eMMC等),而启动开关需要设置为启动此器件。
为不同的板、启动器件和下载Linux BSP镜像有多种方法。
对于本入门指南,仅列出了将Linux BSP镜像传输到SD卡的几种方法。经验丰富的Linux开发人员可探究其他选项。
i.MX 8QuadMax MEK最新的预构建镜像在Linux下载页面提供。The file L4.14.78_1.0.0_ga_images_MX7DSABRESD.zip gathers every artifact required to boot the board.
预建的恩智浦Linux二进制演示镜像提供典型系统和基本的功能集,用于使用和评估处理器。无需修改系统,用户就可以评估硬件接口、测试SoC功能并运行用户空间应用。
当需要更多灵活性时,SD卡可逐一与单个组件(引导加载程序、内核、dtb文件和roofs文件)一起加载,或者可加载.sdcard镜像,并且特定组件可以覆盖单个部件。
In addition to the connections from Out of box chapter, connect the J25
to the host machine using the proper USB cable.
为电路板断电。Consult Boot switch setup and configure the board to boot on SDP (Serial Download Protocol) mode.
根据主机中使用的操作系统,将Linux BSP镜像传输到SD卡的方式可能会有所不同。
从下面的选项中进行选择,获取详细指导:
从UUU GitHub页面下载最新的stable文件。有关UUU的详细教程可在https://github.com/NXPmicro/mfgtools/wiki中找到。
By default, this procedure flashes the image to the SD card flash. 查看UUU GitHub页面,了解如何将镜像闪存到其他器件。
Open a terminal application and change directory to the location where uuu and the latest Linux distribution for i.MX7Dual Sabre are located. 向uuu文件添加执行权限并执行。Uuu等待USB设备连接
$ chmod a+x uuu
$ sudo ./uuu L4.14.78_1.0.0_ga_images_MX7DSABRESD.zip
为电路板通电,uuu开始将镜像复制到电路板。
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SD card.
从UUU GitHub页面下载最新的stable文件。有关UUU的详细教程可在https://github.com/NXPmicro/mfgtools/wiki中找到。
By default, this procedure flashes the image to the SD card flash. 查看UUU GitHub页面,了解如何将镜像闪存到其他器件。
Open the Command Prompt application and navigate to the directory where the uuu.exe file and the Linux release for the i.MX7Dual Sabre are located.
> uuu.exe L4.14.78_1.0.0_ga_images_MX7DSABRESD.zip
为电路板通电,uuu开始将镜像复制到电路板。
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SD card.
本节介绍了带嵌入式Android系统镜像的i.MX7Dual Sabre板的启动过程,并简介了如何构建软件组件,创建您自己的系统镜像。如需了解构建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 BSP镜像传输到SD卡的方式可能会有所不同。
预建恩智浦Android演示镜像将为默认系统提供某些功能,以便进行评估。无需修改系统,用户可以执行一些基本操作,并与系统交互来测试硬件接口,并在用户空间开发软件应用。
数据包中的预建镜像可根据启动器件来分类,并连同器件名放入目录。最新的预建镜像文件可在i.MX软件和开发工具的Android部分找到,也可在演示镜像下载链接中找到。
In addition to the connections from Out of box chapter, connect the J25 to the host machine using the proper USB cable.
为电路板断电。Consult Boot switch setup and configure the board to boot on SDP (Serial Download Protocol) mode.
从下面的选项中进行选择,获取详细指导:
从UUU GitHub页面下载最新的stable文件。有关UUU的详细教程可在https://github.com/NXPmicro/mfgtools/wiki中找到。
从NXP.com下载Android演示文件。
将已下载的文件提取到已知目录。
By default, this procedure flashes the image to the SD card flash. 查看UUU GitHub页面,了解如何将镜像闪存到其他器件。
将名为uuu的文件从“下载UUU on Linux”一节复制到提取的Android演示目录。
向uuu文件添加执行权限并执行。uuu等待USB设备连接。
$ chmod a+x uuu
$ sudo ./uuu {UUU_ANDROID_FILE}
在串行下载模式为电路板通电,uuu开始将镜像复制到电路板。要将电路板置于串行下载模式,遵循启动开关设置一节的说明。
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SD card.
从UUU GitHub页面下载最新的stable文件。有关UUU的详细教程可在https://github.com/NXPmicro/mfgtools/wiki中找到。
从NXP.com下载Android演示文件。
将已下载的文件提取到已知目录。
By default, this procedure flashes the image to the SD card flash. 查看UUU GitHub页面,了解如何将镜像闪存到其他器件。
将名为uuu
的文件从“下载UUU on Windows”一节复制到提取的Android演示目录。
向uuu文件添加执行权限并执行。uuu等待USB设备连接。
> uuu.exe {UUU_ANDROID_FILE}
在串行下载模式为电路板通电,uuu开始将镜像复制到电路板。要将电路板置于串行下载模式,遵循启动开关设置一节的说明。
When it finishes, turn off the board, and consult Boot switch setup to configure the board to boot from SD card.
本节描述如何下载面向i.MX7Dual的FreeRTOS。FreeRTOS是一个可选的实时操作系统(RTOS),在我们的一些产品中恩智浦用其启用Cortex-M内核。启用Cortex-M内核是一个可选步骤。如果您此时不想在i.MX7Dual上启用Cortex-M4,则可跳过本节。
面向i.MX7Dual的FreeRTOS BSP具有一套耐用的外设驱动程序和多核通信机制,旨在简化并加快i.MX7Dual处理器上的应用开发。
面向i.MX7Dual的FreeRTOS BSP包含开源许可下的完整源代码,适用于所有演示、示例、中间件和外设驱动程序软件。
面向i.MX7Dual的FreeRTOS BSP包含以C
语言编写的以下运行时软件组件:
The demos/examples in FreeRTOS BSP are built for on-chip Tightly Coupled Memory (TCM) in the Arm® Cortex®-M4® core.
恩智清FreeRTOS BSP和源代码的当前版本可以在下面的链接中找到。可以选择下载适用于Windows操作系统的 自解压安装程序或适用于Linux操作系统的tarball。
FreeRTOS BSP树形图的安装目录下有四个主要方面,可用来为每个演示应用提供完整源代码:
示例
文件夹包含所有演示/示例源代码和板配置文件。所有21种应用按板名称分类。中间件
文件夹包含演示/示例所用的所有中间件的源代码。中间件文件夹包含开源多核通信协议栈RPMsg。平台
文件夹包含CMSIS标头文件、外设驱动程序、启动、实用工具和链接器文件等主要组件的源代码。实时操作系统
文件夹包含市场领先的实时操作系统FreeRTOS的源代码。FreeRTOS BSP带有丰富的演示应用和启动程序示例。To see what’s available, browse the BSP examples
folder and select the i.MX7Dual Sabre board
(
).
To learn more about demo applications or driver examples, open the FreeRTOS i.MX7Dual Demo Application User’s Guide, located in
.
如果您对其中的一个或几个演示应用或驱动程序示例感兴趣,您可能想知道如何自己完成构建和调试。FreeRTOS BSP快速入门指南按步骤介绍了如何轻松地为SDK支持的所有工具链配置、构建和调试演示。
根据主机使用的操作系统,构建和部署演示的方式可能有所不同。
从下面的选项中进行选择,获取详细指导:
从launchpad.net/gcc-arm-embedded
下载并运行安装程序。这是我们实际要用的工具链。该工具链包含编译器、链接器等。GCC工具链应当对应最新的支持版本,参见已下载包中的FreeRTOS BSP版本说明。
将工具链导出至ArmGCC_DIR
。
$ export ArmGCC_DIR=/usr
注:/usr
是您apt-get gcc-arm-none-eabi
时的常用安装目录。如果它发生了改变,则需要更改目录。
确保安装了cmake
:
$ sudo apt-get install cmake
$ sudo apt-get install gcc-arm-none-eabi
将命令窗口的目录更改为demoarmgcc
目录并运行build命令:
$ cd /examples/imx7d_sdb_m4/demo_apps//armgcc
$./build_all.sh
每个FreeRTOS BSP项目支持两种项目配置(构建目标):
编译器优化设置为低,生成可执行文件的调试信息。选择此目标是为了开发和调试。
编译器优化设置为高,不生成调试信息。选择此目标是为了最终应用部署。
注:提供脚本文件,用来构建这两种配置。在本示例中,构建Debug
目标并在命令行中键入build_debug.sh
。如想选择Release
目标,则键入build_release.sh
。
上一个命令生成调试和版本二进制文件(.bin
),以启动Cortex- M4。这些文件位于调试目录和版本目录中。将其中一个二进制文件复制到SD卡的启动区。
从launchpad.net/gcc-arm-embedded下载并运行安装程序。这是我们实际要用的工具链。该工具链包含编译器、链接器等。GCC工具链应当对应最新的支持版本,参见已下载包中的FreeRTOS BSP版本说明。
Minimalist GNU for Windows (MinGW)开发工具提供了一套不依赖第三方C-Runtime DLL (如Cygwin)的工具。FreeRTOS BSP所用的构建环境无需使用MinGW Build工具,但充分利用了MinGW和MSYS的基础安装。MSYS为与Unix类似的接口和工具提供基本的Shell。
从https://sourceforge.net/projects/mingw/files/Installer/下载最新的MinGW mingw-get-setup安装程序。
运行安装程序。推荐的安装路径为C:\MinGW
,但是,您可以将其安装到任何位置。
注:此安装路径不包含任何空格。
确保在Basic Setup下选择了mingw32-base
和msys-base
。
图13. MinGW文件
点击Installation
(安装)菜单中的Apply Changes
(应用更改),并按照其余指令完成安装。
图14. 应用更改
添加相应项目到Windows操作系统的Path环境变量。在"Environment Variables..."部分的Control Panel → System and Security → System → Advanced System Settings下可找到它。The path is:
重要提示:假设默认安装路径为C:\MinGW
,此例如下所示。如果路径设置不正确,工具链将不起作用。
如果您的PATH
变量中包含C:\MinGW\msys\x.x\bin
(根据KSDK 1.0.0要求),删除该路径以确保新的GCC构建系统正常工作。
创建新的系统
环境变量并命名为ArmGCC_DIR。此变量的值应当指向Arm GCC嵌入式工具链安装路径,此例中的安装路径为:C:\Program Files (x86)\GNU Tools Arm Embedded\4.8 2014q3
参考GNU Arm GCC嵌入式工具的安装文件夹,获得确切的安装路径名。
图15. 变量名称
从https://www.cmake.org/cmake/resources/software.html下载CMake 3.0.x
安装CMake前,确保选择了Add CMake to system PATH选项。由用户选择是为所有用户还是只为当前用户将其安装到PATH。在本示例中,假设为所有用户安装了此应用。
图16. 安装CMake
注:可能需要重启系统,才能使PATH更改生效。
打开GCC Arm嵌入式工具链命令窗口。To launch the window, from the Windows operating system Start menu, go to Programs → GNU Tools Arm Embedded version> and select GCC Command Prompt.
图17. GCC命令提示符。
将命令窗口的目录更改为demoarmgcc
目录并运行build命令:
或双击Explorer中的build_all.bat
文件,执行构建。预计输出显示如图:
图18. 构建结果
每个FreeRTOS BSP项目支持两种项目配置(构建目标):
编译器优化设置为低,生成可执行文件的调试信息。选择此目标是为了开发和调试。
编译器优化设置为高,不生成调试信息。选择此目标是为了最终应用部署。
注:提供脚本文件,用来构建这两种配置。在本示例中,构建Debug
目标并在命令行中键入build_debug.bat
。如想选择Release
目标,则键入build_release.bat
。
上一个命令生成调试和版本二进制文件(.bin
),以启动Cortex- M4。这些文件位于调试文件夹和版本文件夹中。将其中一个二进制文件复制到SD卡的启动区。
本部分介绍了采用SD卡和i.MX处理器的预建U-Boot镜像运行应用的步骤。
hello_world.bin
)复制到SD卡的FAT分区。通过USB线缆连接板上的“DEBUG UART”插槽与PC。Windows操作系统自动安装USB驱动程序,Ubuntu操作系统也将找到串行器件。
有关串行通信应用的更多说明,请参阅开箱即用的串行通信控制台设置部分。
115200
bps,数据位为8
,无奇偶校验位,并接通板电源。在U-Boot倒计时到零之前按任意键,接通板电源并停止启动过程。在第一个终端仿真器的U-Boot提示符处,键入U-Boot的以下命令。
=> fatload mmc 2:1 0x7F8000
=> dcache flush
=> bootaux 0x7F8000
这些命令将FreeRTOS存储器镜像文件从SD卡的第一个分区复制到Cortex-M4存储器,并从复位中释放M4。
在FreeRTOS BSP中,以ddr
或ocram
名称结尾的一些应用应当在DDR或OCRAM中运行。以qspi
结尾的名称应从外部QSPI闪存中来启动。
有关如何从其他存储启动的说明,请参阅6.2和6.3部分《FreeRTOS快速入门》 -- 在“下载恩智浦FreeRTOS源文件和演示”部分的文件包中可以找到。
提供的演示和示例应用是为了演示外设驱动程序、FreeRTOS内核、RPMsg用途,并突出i.MX7Dual处理器的主要特性。
FreeRTOS BSP提供两种类型的软件应用:
i.MX7Dual传感器演示是一个简单的演示程序,可使用恩智浦提供的FreeRTOS和一套驱动程序。它可以获取板当前的重力加速度、温度、高度和磁场强度。这个演示是为了展示,如何采用作为主器件的I2C驱动程序与其他I2C从器件通信。
在Cortex-M4的第二个终端仿真器中,您应该看到一些文字来显示“传感器示例正在运行”(如下所示)。选择一个传感器演示,并通过移动板或移动它附近的磁场东西来影响给定的传感器。
-------------- 板上的iMX7D SDB传感器示例 --------------
请选择您要运行的传感器演示:
[1].FXAS21002 3轴陀螺仪传感器
[2].FXOS8700 6轴加速度及磁力传感器
[3].MPL3115压力传感器
此演示应用演示了FreeRTOS操作系统上运行的RPMsg远程协议栈。它与Linux RPMsg主端一起运行,来回传送整数值。
首先,执行名称服务握手功能,创建通信通道。
其次,Linux操作系统将第一个整数传送给FreeRTOS操作系统。接收端为此整数加1,然后将其传回。此循环可继续演示RPMsg协议栈的稳定性。
消息会立即开始输出到每个控制台上。
fdt_file
以启用内核上的M4核心,然后运行boot
命令: => setenv fdt_file imx7d-sdb-m4.dtb
=> boot
在Linux用户空间上,探测 imx_rpmsg_pingpong
模块以启动内核之间的通信:
Linux侧:
root@imx7dsabresd:~# modprobe imx_rpmsg_pingpong
imx_rpmsg_pingpong rpmsg0: new channel: 0x400 -> 0x1!
root@imx7dsabresd:~# get 1 (src: 0x1)
get 3 (src: 0x1)
get 5 (src: 0x1)
get 7 (src: 0x1)
get 9 (src: 0x1)
get 11 (src: 0x1)
FreeRTOS侧:
Name service handshake is done, M4 has setup a rpmsg channel [1 ---> 1024]
Get Data From A7 : 0
Get Data From A7 : 2
Get Data From A7 : 4
Get Data From A7 : 6
Get Data From A7 : 8
Get Data From A7 : 10
在使用嵌入式系统时,请务必记住文档的广泛性和多样性。有多种级别的文档很常见。i.MX7Dual Sabre板有一些文档。但该板的处理器是i.MX7Dual,它与SoC级文档一起归档。可用的BSP与BSP级别文档一起归档。
从下面的选项中进行选择,获取相关文档:
对于i.MX7Dual Sabre,提供以下文档。
表4. i.MX7Dual Sabre板相关文档列表
文档 | 描述 |
Board Schematics [English] | i.MX7Dual Sabre电子原理图文件。 |
i.MX7Dual Sabre硬件用户指南 | 本文档旨在帮助硬件工程师设计和测试基于imx7d系列处理器的设计。它提供有关板布局建议设计清单的信息,确保一次便可成功,还提供避免板启动问题的方法。它还提供有关板级测试和模拟的信息,例如使用BSDL进行板级测试,使用IBIS模型进行电气完整性模拟等。 |
对于i.MX7Dual SoC,提供以下文档。
表5. i.MX7Dual芯片相关文档列表
文档 | 描述 |
i.MX7Dual DataSheet [English] | 描述SoC物理和电气特性、部件编号含义。 |
i.MX7Dual参考手册 | 列出SoC支持的内容、寄存器和存储器映射。介绍了每个寄存器位的特性、工作流程、启动流程和含义。 |
列出了该SoC的硬件问题。可能是Arm内核或i.MX内核问题。可能有临时解决方案,也可能没有。 | |
i.MX7Dual安全参考手册 | 注册,请求访问i.MX7Dual安全参考手册。下载链接通过电子邮件发送。 |
对于i.MX7Dual Sabre,提供以下BSP。
每个BSP都有一组文档,下表中描述了所有BSP文档。文档在表中出现的顺序是推荐的读取顺序。
表6. i.MX7Dual Sabre BSP Linux文档
文档 | 说明 |
L4.9.88_2.0.0文档包 | 将此处列出的所有i.MX Linux BSP文件下载为一个tarball。 |
i.MX Linux版本说明: [English] | 如果您不知从哪里开始,就从这里开始吧!它列出了支持的板、支持的功能、软件包版本和已知问题列表。 |
i.MX Linux用户指南: [English] | 描述下载、构建和部署i.MX Linux BSP的步骤。例如,详细说明如何从不同的介质配置、构建和部署U-Boot引导。 |
i.MX Yocto Project Linux用户指南: | 描述下载、构建、部署和配置Yocto Project元数据以及构建镜像的步骤。 |
i.MX BSP Linux移植指南: [English] | 介绍将i.MX Linux BSP移植到自定义板或平台的步骤。 |
i.MX Linux参考手册: [English] | 介绍i.MX BSP Linux内核驱动程序、功能以及如何配置内核。另外还介绍了驱动程序是如何工作的。 |
i.MX Linux图形用户指南: [English] | 介绍如何为自定义用例测试和配置GPU。 |
表7. i.MX7Dual Sabre BSP Android文档
文档 | 描述 |
imx-o8.0.0_1.0.0_ga文档包 | 将此处列出的所有i.MX Android BSP文件下载为一个tarball。 |
Android版本说明: [English] | 如果您不知从哪里开始,就从这里开始吧!它列出了支持的板、支持的功能、软件包版本和已知问题列表。 |
Android快速入门指南: [English] | 介绍板、i.MX Android BSP中的文件、如何使用不同的显示器部署和调整镜像。 |
Android用户指南: [English] | 该文档包含有关如何设置Linux设备以构建Android、如何构建、配置和部署i.MX Android BSP的说明。 |
介绍了将i.MX Android BSP移植到自定义板或平台的步骤;包括配置多媒体和显示器的步骤。 | |
i.MX Android图形用户指南: [English] | 介绍如何为自定义用例测试和配置GPU。 |
Android常见问题解答: [English] | 列出了Android常见问题。 |
表8. i.MX7Dual Sabre BSP FreeRTOS文档
文档 | 描述 |
面向Linux的FreeRTOS文档包 | 下载面向Linux主机的i.MX FreeRTOS BSP。该文档在doc/ 文件夹中提供。 |
下载面向Windows主机的i.MX FreeRTOS BSP。该文档在doc/ 文件夹中提供。 |
借助i.MX板上运行的Linux,您可以评估i.MX SoC提供的特殊功能:本教程展示了下列演示的分步讲解。
从下面的选项中进行选择,获取详细指导:
本示例显示如何挂起到低功耗模式并恢复正常操作。
# echo enabled > /sys/class/tty/ttymxc0/power/wakeup
# echo mem > /sys/power/state
PM: Syncing filesystems ...
冻结用户空间进程... (用时0.005秒)完成。
冻结剩余的可冻结任务... (用时0.001秒)完成。
挂起控制台(使用no_console_suspend进行调试)
PM: suspend of devices complete after 637.926 msecs
PM: suspend devices took 0.640 seconds
PM: late suspend of devices complete after 1.966 msecs
PM: noirq suspend of devices complete after 1.864 msecs
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 1.104 msecs
PM: resume of devices complete after 99.689 msecs
PM: resume devices took 0.110 seconds
Restarting tasks ... done.
将耳机插入i.MX7Dual Sabre板上的音频插孔。
如果您的耳机包含麦克风功能(带有四个触点的TRRS),请不要将麦克风插孔推到底。在外面留一个接触环。
# gst-launch-1.0 audiotestsrc ! alsasink
将管道设置为PAUSED ...
将管道设置为PREROLLING...
将管道设置为PREROLLED...
禁用不启动CPU ...
将管道设置为PLAYING ...
新时钟:GstAudioSinkClock
在耳机里应该能听到提示音。
听完提示音后,按下kbd:[Ctrl+C],完成命令行
本示例非常简单易懂。它显示了audiotestsrc
和alsasink
之间的链路。
本示例说明如何只解码视频文件中的音频。将视频文件复制到您的SD卡rootfs分区上的/home/root/
,从SD卡启动板,然后运行下面的命令:
注:您可从Big Buck Bunny网站免费获得本示例中使用的文件。
# gst-launch-1.0 filesrc location=Big_Bucky_Bunny.mov ! qtdemux \
! beepdec ! alsasink
将管道设置为PAUSED ...
管道正在PREROLLING ...
====== BEEP: 4.0.9 build on Sep 22 2016 18:44:36. ======
file: /usr/lib/imx-mm/audio-codec/wrap/lib_mp3d_wrap_arm12_elinux.so.3
CODEC: BLN_MAD-MMCODECS_MP3D_Arm_02.13.00_CORTEX-A8 build on Apr 10 2014 15:26:15.
将管道设置为PREROLLED ...
将管道设置为PLAYING ...
新时钟:GstAudioSinkClock
此示例显示了使用CAAM作为恩智浦提供的加密卸载引擎的优势。
与许多恩智浦i.MX处理器一样,i.MX7Dual Sabre板包含加密加速与保证模块(CAAM模块),可通过CryptoDev使用,借助硬件加快加密和解密过程。建议在处理大量数据时或在性能要求较高的任何应用中使用此模块。
OpenSSL是一个开源项目,定义安全协议SSL (安全套接字层)和TLS (传输层安全)。它有一个软件库,可用于需要安全信息传输的应用,以防止窃听。
OpenSSL包括一个速度命令,用于测试所需加密算法的加密性能。对于本示例,使用的算法为aes-128-cbc
,实现高级加密标准(AES)加密算法,支持密码块链(CBC)运行模式和128位块。
使用以下命令可观看OpenSSL速度测试:
# openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 3992233 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 1151356 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 299139 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 75534 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 9469 aes-128-cbc's in 2.99s
OpenSSL 1.0.2d 9 Jul 2015
built on: reproducible build, date unspecified
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) blowfish(ptr)
compiler: arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/home/bamboo/buM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128-cbc 21291.91k 24562.26k 25526.53k 25782.27k 25943.16k
加载cryptodev
模块,再次运行openssl
命令。这次应该能够看到时间值显示加速值。随着块尺寸的增加,所用的时间减少:
# modprobe cryptodev
cryptodev: driver 1.8 loaded.
root@imx6ulevk:~# openssl speed -evp aes-128-cbc -engine cryptodev
engine "cryptodev" set.
Doing aes-128-cbc for 3s on 16 size blocks: 91936 aes-128-cbc's in 0.14s
Doing aes-128-cbc for 3s on 64 size blocks: 88205 aes-128-cbc's in 0.15s
Doing aes-128-cbc for 3s on 256 size blocks: 70223 aes-128-cbc's in 0.09s
Doing aes-128-cbc for 3s on 1024 size blocks: 50836 aes-128-cbc's in 0.10s
Doing aes-128-cbc for 3s on 8192 size blocks: 11174 aes-128-cbc's in 0.03s
OpenSSL 1.0.2d 9 Jul 2015
built on: reproducible build, date unspecified
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) blowfish(ptr)
compiler: arm-poky-linux-gnueabi-gcc -march=armv7-a -mfloat-abi=hard -mfpu=neon-mtune=cortex-a7 --sysroot=/home/bamboo/buM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128-cbc 10506.97k 37634.13k 199745.42k 520560.64k 3051246.93k
使用下面的命令可列出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, hmacWithMD5, hmacWithSH A1, RIPEMD160, MD5, SHA1]
要使用i.MX7Dual Sabre连接Linux上的互联网,请执行以下步骤:
将以太网线缆连接到板RJ-45连接器上。
启动板,等待Linux提示。
在板上输入以下命令:
# ifconfig eth0
Ping任何网站以证实其功能
# 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=56 time=9.22 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=56 time=6.13 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=56 time=6.30 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=56 time=9.26 ms
没问题!您的板是旧封装,闪存存储器中预装了不同的开箱即用演示。
您将会看到红色和绿色LED指示灯来回切换。您准备就绪时,就可以进行下一步
试着按步骤继续操作,获得板上运行的其他示例应用。如果仍有问题,请通过恩智浦网络社区与我们联系。
安装MDK工具后,必须安装Cortex®微控制器软件接口标准(CMSIS)器件包,才能从调试角度来说完全支持器件。这些器件包包括存储器映射信息、寄存器定义和闪存编程算法。按照这些步骤安装相应的CMSIS包。
打开名为µVision的MDK IDE。在IDE中,选择"Pack Installer"图标。
在对话框左侧出现的“Devices”选项卡中,展开“NXP”类别。然后,展开“KLxx Series”类别,并点击选中“KL4x”。
请注意:
这个流程需要互联网连接才能成功完成。
安装完成后,关闭Pack Installer窗口并返回到µVision IDE。
这些步骤显示了如何在µVision中打开演示工作区、如何构建演示所需的平台库,以及如何构建演示应用。
使用此路径可找到演示区文件:
此演示区文件命名为
演示区打开后,显示两个项目:一个用于KSDK平台库,一个用于演示。默认情况下,演示项目被选为活动项目。
将平台库项目选为活动项目,因为该库是构建演示应用所需的要素。要将平台库项目选为活动项目,右击并选择"Set as Active Project"。活动项目的项目名带有黑框。平台库项目成为活动项目后,会突出显示。
每个KSDK项目支持两种项目配置(构建目标):
此工具用于根据活动项目选择构建目标,因此,要更改平台库的配置,平台库必须是活动项目。选择适当的构建目标:从下拉菜单中选择"Debug"或"Release"。
在这个示例中,选择"ksdk_platform_lib Debug"配置。
左击"Rebuild"按钮,重建项目文件,用红色突出显示。
KSDK演示应用基于前面构建的Kinetis SDK平台库中提供的软件构件来构建。如果平台库不存在,链接器将显示一个错误,表示无法找到该库。如果平台库二进制没有构建或不存在,可以按照第2页的步骤构建。否则,继续以下步骤来构建所需的演示应用。
如果还未完成,在以下路径中打开所需的演示应用工作区:
The workspace file is named
使演示成为活动项目。
要构建演示项目,请选择"Rebuild"按钮,用红色突出显示。
构建将完成,并且不会报错。
FRDM-KL46Z板出厂时预装了mbed/CMSIS-DAP调试接口。如果您已经更改了板上的调试OpenSDA应用,请访问http://www.nxp.com/opensda了解如何更新板或将板恢复到出厂状态。
通过板上"SDAUSB" USB端口和PC USB接头之间的USB线缆,将开发平台连接到PC。
打开PC上的终端应用(如PuTTY或Tera Term),并连接到您之前确定的调试COM端口。采用以下设置配置终端:
应用构建完成后,点击"Download"按钮,将应用下载到目标。
点击"Download"按钮后,此应用下载到目标并开始运行。如需调试应用,请点击"Start/Stop Debug Session"按钮,用红色突出显示。
单击"Run"按钮运行代码,以启用应用。
hello_world应用开始运行,标语显示在终端上。如未显示,请检查您的终端设置和连接。
使用带KSDK的KDS IDE之前,必须应用KSDK Eclipse更新。没有此更新,Eclipse就无法生成KSDK兼容项目。
Mac操作系统所需的步骤与Windows的是相同的,唯一不同的是,IDE看起来略有不同。
安装KDS后,检查可用的更新。仅安装来自恩智浦的Processor Expert 3.0.1更新 - 不要安装任何其他更新。要检查更新,选择 “Help” -> “Check for Updates”。
选择"Help" -> "Install New Software"。
在Install New Software对话框中,点击右上角的"Add"按钮。然后,在Add Repository对话框中,选择"Archive"按钮。
在Repository存档对话框中,浏览KSDK安装目录
Enter the
点击"Open",然后点击Add Repository对话框中的"OK"按钮。
KSDK更新将显示在原安装对话列表中
勾选KSDK Eclipse更新左侧的方框,并点击右下角的"Next"按钮。
按照其余指令完成更新安装。
应用更新后,重启KDS以使更改生效。
使用Ubuntu 14.04执行以下指令。这些步骤可能与其他Linux分布略有不同。
作为根用户从命令行中启动KDS IDE。在命令行中,使用此命令,假定默认KDS IDE安装路径如下:
user@ubuntu:~$ sudo /opt/NXP/KDS_x.x.x/eclipse/kinetis-design-studio
KDS IDE版本(如上所示为x.x.x)应当反映计算机上安装的版本,例如3.0.0版本。
提示您输入根密码。
安装KDS后,检查可用的更新。仅安装来自恩智浦的Processor Expert 3.0.1更新 - 不要安装任何其他更新。要检查更新,选择 “Help” -> “Check for Updates”。
选择"Help" -> "Install New Software"
在Install New Software对话框中,点击右上角的"Add"按钮添加。然后,在Add Repository对话框中,选择"Archive"存档。
在Repository存档对话框中,浏览KSDK安装目录。
Enter the
点击"Open",然后点击Add Repository对话框中的"OK"。
KSDK更新将显示在原安装对话列表中。
勾选KSDK Eclipse更新左侧的方框,并点击右下角的"Next"按钮。
按照其余指令完成更新安装。
应用更新后,重启KDS IDE以使更改生效。
KDS IDE重启后,关闭IDE;然后启动KDS IDE,作为非根用户来重启IDE。为了实现重启,按照步骤1中的命令操作,但无需执行"sudo"命令。
以下步骤显示如何在KDS IDE中打开并构建平台库。该演示需要平台库,否则将无法构建。
注:
Linux和Mac操作系统所需的步骤与Windows相同。
从KDS IDE菜单选择"File->Import"。在显示的窗口中,展开"General"文件夹并选择"Existing Projects into Workspace"。然后,点击"Next"按钮。
点击"Select root directory:"选项旁边的"Browse"按钮浏览。
为相应器件指出平台库项目,可使用此路径寻找:
指向正确目录后,您的"Import Projects"窗口显示如下图 。点击"Finish"按钮完成。
每个KSDK项目支持两种项目配置(构建目标):
选择适当的构建目标,"Debug"或"Release",方法是点击锤子图标旁的向下箭头,如下所示。在这个示例中,选择"Debug"目标。
选择构建目标后,平台库开始构建。未来重建该库时,只需点击锤子图标(假定会选择同一构建目标)。
要构建演示应用,可重复“构建平台库”部分所列步骤,注意需使用演示应用项目而不是平台库项目。演示应用项目位于此文件夹:
在这个例子中,路径为:
注:
Linux和Mac操作系统所需的步骤与Windows相同。
FRDM-KL46Z板出厂时预装了mbed/CMSIS-DAP调试接口。如果您已经更改了板上的调试OpenSDA应用,请访问http://www.nxp.com/opensda了解如何更新板或将板恢复到出厂状态。
Mac用户必须安装J-Link OpenSDA应用,才能使用KDS IDE下载并调试板。
通过板上"SDAUSB" USB端口和PC USB接头之间的USB线缆,将开发平台连接到PC。
打开PC上的终端应用(如PuTTY或Tera Term),并连接到您之前确定的调试COM端口。采用以下设置配置终端:
以下命令仅适用于Linux操作系统用户,在终端运行。根据KDS IDE所需,将libudev安装到您的系统,以便启动调试器。
user@ubuntu:~$ sudo apt-get install libudev-dev libudev1
user@ubuntu:~$ sudo ln —s /usr/lib/x86_64-linux-gnu/libudev.so /usr/lib/x86_64-linux-gnu/libudev.so.0
确保调试器配置与您想要连接的目标相符。查询附录B,了解关于KSDK支持的各种硬件平台上的默认调试器应用的更多信息。
为了查看可用的调试器配置,点击绿色"Debug"按钮旁向下的小箭头,并选择"Debug Configurations"。
在Debug Configurations对话框中,选择与您正在使用的硬件平台对应的调试配置。对于Windows或Linux用户,选择OpenOCD下的CMSIS-DAP/DAPLink选项。对于Mac用户,选择J-Link。
选择调试器接口后,点击"Debug"按钮启动调试器。
此应用下载到目标并自动运行到main()函数:
点击"Resume"按钮启动应用:
hello_world应用开始运行,标语显示在终端上。如未显示,请检查您的终端设置和连接。
为i.MX 6SoloX处理器准备Linux BSP数据包带预建U-Boot镜像的SD卡。
将SD卡插入PC,并将您想运行的应用镜像(例如hello_world.bin)复制到SD卡的FAT分区。
从PC中安全地取出SD卡
将SD卡插入目标板。确保使用默认的SD启动插槽,并双重检查DIP开关配置。验证板的默认配置从SD1启动,在SABRE板上,只有一个SD插槽可用来启动。
通过USB线缆连接板上的“DEBUG UART”插槽与PC。Windows操作系统自动安装USB驱动程序,Ubuntu操作系统也将找到串行器件。
如需串行通信应用的更多介绍,参见“开箱即用”步骤3
打开i.MX 6SoloX Sabre板第二个枚举的串行端口的第二个终端仿真器。这是Cortex-M4的串行控制台。设置速率为115200 bps,数据位为8,无奇偶校验位,并接通板电源。
将应用镜像从SD卡加载到DDR RAM:
fatload mmc 2:1 0x7F8000
将缓存内容清理到DDR RAM:
dcache flush
将Cortex-M4镜像从DDR RAM复制到TCM:
cp.b 0x80000000 0x7F8000 0x8000
将缓存内容清理到TCM:
dcache flush
从TCM中启动Cortex-M4内核:
bootaux 0x7F8000
在第一个终端仿真器的U-Boot提示符处,键入U-Boot的以下命令。这将EmbeddedAndroid存储器镜像文件从SD卡的第一个分区复制到Cortex-M4紧密耦合存储器(TCM),并从复位中释放M4。
在EmbeddedAndroid BSP中,以“ddr”或“ocram”名称结尾的一些应用应当在DDR或OCRAM中运行。以"qspi"结尾的名称应从外部QSPI闪存中来启动
如需了解如何从其他存储中启动的更多说明,请查阅面向i.MX 6SoloX的EmbeddedAndroid BSP快速入门中第6.2和6.3部分。
如需详情,请参考i.MX Android™快速入门指南“3.3 下载板镜像”
您可以采用USB线缆连接调试UART端口和电脑,并打开串行通信程序进行控制台输出。
如需了解详情,请参阅i.MX Linux®用户指南“4.2制造工具”。
您可以采用USB线缆连接调试UART端口和电脑,并打开串行通信程序进行控制台输出。
i.MX板的启动模式由板上启动配置开关来控制。
下表显示了DIP开关设置(在启动过程中优先),以便从i.MX7Dual Sabre板上标有SD1/J6的SD卡插槽来启动。
表1. 从i.MX7Dual Sabre-SD上的SD1/J6进行启动
Boot Media | SW2 [D1-D8] |
SW3 [D1-D2] |
---|---|---|
SD card (SD1 ) |
00100000 | 10 |
eMMC | 01010000 | 10 |
NAND | 011XXXX0 | 10 |
QuadSPI | 10000000 | 10 |
SDP | XXXXXXXX | 01 |