飞思卡尔imx7 html5,MCIMX7SABRE快速入门指南

FreeRTOS?

本节描述如何下载面向i.MX7Dual的FreeRTOS。FreeRTOS是一个可选的实时操作系统(RTOS),在我们的一些产品中恩智浦用其启用Cortex-M内核。启用Cortex-M内核是一个可选步骤。如果您此时不想在i.MX7Dual上启用Cortex-M4,则可跳过本节。

面向i.MX7Dual的FreeRTOS BSP具有一套耐用的外设驱动程序和多核通信机制,旨在简化并加快i.MX7Dual处理器上的应用开发。

面向i.MX7Dual的FreeRTOS BSP包含开源许可下的完整源代码,适用于所有演示、示例、中间件和外设驱动程序软件。

4.1 概述

面向i.MX7Dual的FreeRTOS BSP包含以C语言编写的以下运行时软件组件:

Arm? Cortex微控制器软件接口标准(CMSIS)内核、DSP标准库和符合CMSIS器件标头文件,可直接访问外设寄存器和位。

一组外设驱动程序,可为封装了外设寄存器访问的API提供简单、无状态的驱动程序。

多核通信机制(RPMsg),可降低多核通信的开发困难。

FreeRTOS操作系统,可提供事件触发的抢占式调度实时操作系统。

The demos/examples in FreeRTOS BSP are built for on-chip Tightly Coupled Memory (TCM) in the Arm? Cortex?-M4? core.

4.2 下载恩智浦FreeRTOS源文件和演示

恩智清FreeRTOS BSP和源代码的当前版本可以在下面的链接中找到。可以选择下载适用于Windows操作系统的 自解压安装程序?或适用于Linux操作系统的tarball。

FreeRTOS BSP树形图的安装目录下有四个主要方面,可用来为每个演示应用提供完整源代码:

图13. MinGW文件

点击Installation (安装)菜单中的Apply Changes (应用更改),并按照其余指令完成安装。

图15. 变量名称

4.4.3 安装CMake

安装CMake前,确保选择了Add CMake to system PATH选项。由用户选择是为所有用户还是只为当前用户将其安装到PATH。在本示例中,假设为所有用户安装了此应用。

图17. GCC命令提示符。

将命令窗口的目录更改为demoarmgcc目录并运行build命令:

examplesimx7d_sdb_m4demo_apps\armgcc

或双击Explorer中的build_all.bat文件,执行构建。预计输出显示如图:

8a0d7fdfa87f75f45d31472060dd54d4.png

图18. 构建结果

每个FreeRTOS BSP项目支持两种项目配置(构建目标):

调试

编译器优化设置为低,生成可执行文件的调试信息。选择此目标是为了开发和调试。

版本

编译器优化设置为高,不生成调试信息。选择此目标是为了最终应用部署。

4.5 采用U-Boot运行应用

本部分介绍了采用SD卡和i.MX处理器的预建U-Boot镜像运行应用的步骤。

按照嵌入式Linux?选项卡的步骤,准备一张SD卡,其中包含来自i.MX7Dual处理器Linux BSP包的预建U-Boot + Linux镜像。如已加载了带有Linux镜像的SD卡,可跳过这一步。

将SD卡插入主机(Linux或Windows),并将想要运行的应用镜像(例如hello_world.bin)复制到SD卡的FAT分区。

从PC中安全地取出SD卡

将SD卡插入目标板。确保使用默认的SD启动插槽,并双重检查启动开关设置. 验证板的默认配置从SD1/J6启动,在Sabre板上,只有一个SD插槽可用来启动。

通过USB线缆连接板上的“DEBUG UART”插槽与PC。Windows操作系统自动安装USB驱动程序,Ubuntu操作系统也将找到串行器件。

有关串行通信应用的更多说明,请参阅开箱即用的串行通信控制台设置部分。

打开i.MX7Dual Sabre板第二个枚举的串行端口的第二个终端仿真器。这是Cortex-M4的串行控制台。设置速率为115200 bps,数据位为8,无奇偶校验位,并接通板电源。

在U-Boot倒计时到零之前按任意键,接通板电源并停止启动过程。在第一个终端仿真器的U-Boot提示符处,键入U-Boot的以下命令。

=> fatload mmc 2:1 0x7F8000 .bin

=> dcache flush

=> bootaux 0x7F8000

这些命令将FreeRTOS存储器镜像文件从SD卡的第一个分区复制到Cortex-M4存储器,并从复位中释放M4。

在FreeRTOS BSP中,以ddr或ocram名称结尾的一些应用应当在DDR或OCRAM中运行。以qspi结尾的名称应从外部QSPI闪存中来启动。

有关如何从其他存储启动的说明,请参阅6.2和6.3部分《FreeRTOS快速入门》 — 在“下载恩智浦FreeRTOS源文件和演示”部分的文件包中可以找到。

4.6 示例演示

提供的演示和示例应用是为了演示外设驱动程序、FreeRTOS内核、RPMsg用途,并突出i.MX7Dual处理器的主要特性。

FreeRTOS BSP提供两种类型的软件应用:

演示:这些应用意在突出i.MX7Dual SoC中Arm? Cortex?-M4内核的主要功能,重点强调FreeRTOS操作系统的特殊用例。

示例:简单应用,旨在简要说明如何在裸机环境中使用FreeRTOS BSP的外设驱动程序。

4.6.1 Cortex-M4独立传感器演示

i.MX7Dual传感器演示是一个简单的演示程序,可使用恩智浦提供的FreeRTOS和一套驱动程序。它可以获取板当前的重力加速度、温度、高度和磁场强度。这个演示是为了展示,如何采用作为主器件的I2C驱动程序与其他I2C从器件通信。

在Cortex-M4的第二个终端仿真器中,您应该看到一些文字来显示“传感器示例正在运行”(如下所示)。选择一个传感器演示,并通过移动板或移动它附近的磁场东西来影响给定的传感器。

————– 板上的iMX7D SDB传感器示例 ————– 请选择您要运行的传感器演示: [1].FXAS21002 3轴陀螺仪传感器 [2].FXOS8700 6轴加速度及磁力传感器 [3].MPL3115压力传感器

4.6.2 Cortex-A7/Cortex-M4 RPMsg乒乓演示

此演示应用演示了FreeRTOS操作系统上运行的RPMsg远程协议栈。它与Linux RPMsg主端一起运行,来回传送整数值。

首先,执行名称服务握手功能,创建通信通道。

其次,Linux操作系统将第一个整数传送给FreeRTOS操作系统。接收端为此整数加1,然后将其传回。此循环可继续演示RPMsg协议栈的稳定性。

消息会立即开始输出到每个控制台上。

要运行此演示,在使用U-Boot运行应用后,请将FreeRTOS二进制文件加载到Cortex-M4中。在U-Boot上,更改 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

内核之间互相交换消息,直到演示停止。

相关资源:鸿威台球室计费系统说明书_棋牌室管理系统-专业指导文档类资源…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月20日
下一篇 2021年5月20日

相关推荐