发表于: 2016-12-16 11:50:19 | 显示全部楼层

使用命令行工具来构建应用程序是一项巨大的工程。 但是如果我可以使用标准的Eclipse环境以及GNU工具,生产力就会提高。 本教程主要介绍关于如何使用标准并且免费的GNU和Eclipse工具在i.MX7上为ARM Cortex-M4构建我的FreeRTOS应用程序。

kinetis-design-studio-building-i-mx7-arm-cortex-m4f-freertos-application.png

概述

在我之前的文章中(参见“教程:在NXP i.MX7Dual Cortex-M4F上运行FreeRTOS”),我使用cmake、cygwin和ARM Launchpad GNU工具链构建了一个演示应用程序。这很好,但为了真正有效,首选一个像Eclipse这样的IDE。恩智浦和Toradex为IAR Embedded Workbench和ARM DS-5提供了一些示例。 IAR IDE和工具链是专有的(不是Eclipse)并且非常昂贵(有一个免费的32k字节版本)。另一方面,ARM DS-5是基于Eclipse的,但也是非常昂贵。恩智浦提供了无限制且免费的基于Eclipse的 Kinetis Design Studio(KDS),但由于未知原因,恩智浦并没有为i.MX器件提供任何示例项目:-(因此您需要花费很多的钱,或者只使用命令行工具。

在本教程中我使用的是KDS V3.2.0,它使用GNU ARM Eclipse插件和GCC ARM Embedded(启动)工具。比较棒的是,因为KDS使用标准组件,我可以自己使用工具链和插件构建这样的IDE(请参阅“进入Mars:为ARM嵌入式微控制器构建DIY Eclipse IDE”)。

我将在后续步骤中展示“hello world”项目所需的项目设置。这个项目可以在我的GitHub网站上找到:https://github.com/ErichStyger/freertos-toradex/tree/colibri-imx7-m4-freertos-v8/

准备工作

■     用于ARM开发的基于Eclipse的IDE(例如Kinetis Design Studio V3.2.0)

■     GCC ARM嵌入式工具链(launchpad)工具链(包含在KDS中)

■     GNU ARM Eclipse插件(包含在KDS中)

■     用于i.MX的带FreeRTOS的BSP(可以从Toradex或从我的GitHub获得)


创建项目

使用向导创建一个新的C / C ++项目,使用标准设置:

creating-default-project.png

文件

将FreeRTOS和应用程序文件添加到项目中。 下面显示了'hello world'演示应用程序的文件,其中我使用了Eclipse虚拟组和链接文件。 但是,当然你也可以复制这些文件。

application-and-freertos-files.png

项目设置

在项目设置中,将目标处理器配置为带有硬件浮点单元的ARM Cortex-M4:

target-processor-settings.png

在优化选项设置中,打开以下项:

■     -ffunction-section

■     -fdata-sections

■     -ffreestanding

■     -fno-builtin

optimization-settings.png

编译器

在编译器预处理器设置中,添加了以下两个定义:

  1. CPU_MCIMX7D_M4
  2. __DEBUG
复制代码

对于“发布版本”的构建,可以使用__NDEBUG而不是__DEBUG。

preprocessor-settings.png

为了让编译器找到头文件,请指定所需的所有路径。 如何指定它们取决于如何组织源文件。 对于'hello world'演示程序,我使用的是项目目录({$ ProjDirPath})的相对路径。 您可以复制并覆盖以下路径:

  1. ${ProjDirPath}/../../../../../examples/imx7_colibri_m4/demo_apps/hello_world
  2. ${ProjDirPath}/../../../../../examples/imx7_colibri_m4
  3. ${ProjDirPath}/../../../../../platform/CMSIS/Include
  4. ${ProjDirPath}/../../../../../platform/devices
  5. ${ProjDirPath}/../../../../../platform/devices/MCIMX7D/startup
  6. ${ProjDirPath}/../../../../../platform/devices/MCIMX7D/include
  7. ${ProjDirPath}/../../../../../platform/drivers/inc
  8. ${ProjDirPath}/../../../../../platform/utilities/inc
  9. ${ProjDirPath}/../../../../../rtos/FreeRTOS/Source/include
  10. ${ProjDirPath}/../../../../../rtos/FreeRTOS/Source/portable/GCC/ARM_CM4F
复制代码

include-paths.png

链接器

在链接器设置中,指定要与-T选项一起使用的链接器文件(我用的是下面的使用紧耦合存储器(TCM)的连接器文件):

  1. "MCIMX7D_M4_tcm.ld"
复制代码

linker-file.png

链接器文件的路径使用-L选项指定:

  1. "${ProjDirPath}/../../../../../platform/devices/MCIMX7D/linker/gcc"
复制代码

path-to-linker-file.png

使用带有nosys选项(-specs = nosys.specs)的newlib-nano library:

nano-library.png

二进制文件

使用u-boot我们加载bin(二进制)文件。 要创建它,请在工具链选项卡下启用“创建Flash映像”。 按下“应用”按钮。

create-flash-image.png

返回Tool Settings,指定创建的原始二进制文件:

raw-binary.png

构建

构建该应用程序,你应该会得到二进制文件,可以用u-boot进行加载(参见教程:在NXP i.MX7Dual Cortex-M4F上运行FreeRTOS)。

binary-file.png

总结

使用商业IDE会花费大量的金钱,相反我们可以使用免费的开源工具在恩智浦i.MX上建立ARM Cortex-M4的FreeRTOS应用程序。 它需要的只是一个基本的项目设置,使用本文中提到的GNU ARM Eclipse插件可以很容易地来完成。


参考链接

■     Tutorial: First Steps with NXP i.MX7 and Toradex Colibri Board

■     Tutorial: Running FreeRTOS on NXP i.MX7Dual Cortex-M4F

■     Tutorial: Updating Embedded Linux on Toradex i.MX7 Colibri Module using SD Card

■     所有文件的GitHub存储库:https://github.com/ErichStyger/freertos-toradex

■     Toradex NXP i.MX7D 模块: https://www.toradex.com/computer ... /nxp-freescale-imx7

■     Going to Mars: Building a DIY Eclipse IDE for ARM Embedded Microcontrollers

■     GNU ARM Eclipse插件: http://gnuarmeclipse.github.io

■     GNU/GCC ARM Embedded: https://launchpad.net/gcc-arm-embedded

■     Eclipse: http://www.eclipse.org/

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 13 | 回复: 15



手机版|

GMT+8, 2024-3-29 20:13 , Processed in 0.099696 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表