linking BOOTloader apps

了解有关将 BOOTloader 应用程序与 Eclipse 和游天标记脚本链接的更多信息。

引导加载程序是一件好事。有了它们,我可以加载任何我喜欢的应用程序。电源具有一些复杂性,而仅引导加载程序本身已经是一件复杂的事情。但这也适用于应用程序部分。我需要将应用程序链接到内存空间中的特定偏移量,以便引导加载程序可以加载它,此外,应用程序通常需要添加一些额外的信息供引导加载程序使用。

本文介绍如何使用 MCUXpresso SDK 使用 Eclipse (MCUXpresso IDE) 构建引导加载程序应用程序。让我们开始吧。

您可能还喜欢:
带恩智浦基尼的K22微控制器的闪存驻留USB-HID引导加载器

Build Configuration for Bootloader Application

引导加载程序应用程序的生成配置

大纲

我使用的是基于Eclipse的MCUXpresso IDE V11.0.1。我使用内置的托管链接器脚本方式自动将应用程序重新定位到地址,而不是”黑客攻击”链接器文件。在本教程:移植 BLE_NRF Kinetis 设计工作室项目到 MCUXpresso IDE, 我已经使用了自由标记机制, 但在这里, 我展示了如何在更高的级别使用它.

所需文件可在这个想法是使用Eclipse构建配置在”无引导加载程序”和”地址引导程序应用程序”之间切换。创建新的生成配置。将其命名为”BL_lt;应用程序偏移>”,例如”BL_0xA000″:

启用引导加载程序配置

命名很重要,因为如果是引导加载程序应用程序(以”BL_”开头),并且应用程序在哪个地址也链接在其中(十进制数字),我会在脚本中识别。

引导加载程序配置

引导加载程序需要配置数据。我已经将其放入一个”引导加载程序_config.c”和”引导加载器_config.h”。将它们添加到项目中:

Bootloader Configuration 引导加载程序配置

引导加载程序配置仅用于引导加载程序应用程序,因此只需在项目设置中使用以下定义将其打开:

BL_HAS_BOOTLOADER_CONFIG

Enabling Bootloader configuration

启用引导加载程序配置

自由标记脚本

IDE 使用FreeMarker脚本,这是生成链接器脚本文件的强大方法。我们现在要扩展和覆盖一些默认文件。在项目中创建名为”链接脚本”(命名很重要!)的文件夹,并创建三个文件(可以从GitHub复制它们 ):

  • user.ldt:它包含其他脚本中使用的用户变量
  • crp.ldt: 它包含引导加载程序配置数据的位置
  • 内存.ldt:这定义了链接器内存范围

user.ldt使用生成配置名称为应用程序偏移量和配置偏移量生成链接器变量:

user.ldt 用户.ldt

这是它在生成的链接器文件中的外观:

Genearated Linker Variables

生成的链接器变量

crp.ldt用于在矢量表之后将引导加载器配置数据放置在应用程序内存中的预期偏移量 (0x340) 处。

<MCUXpresso IDE 安装路径中检查模板文件>\ide_Wizards_linker,我看到我可以”误用”crp.ldt”将引导加载程序录字程序放在矢量之后。理想情况下,IDE 将提供专用模板或挂钩。相反,我只是制作一个现有的crp.ldt的副本,并把它扩展。

after vectors placement 后矢量放置

下面,我们在链接器文件中有结果:

Bootloader Configuration Data

引导加载程序配置数据

可以验证正确的放置位置,例如使用EHEP

Bootloader Configuration Data in Binary 二进制中的引导加载程序配置数据

最后,memory.ldt在链接器文件中构建内存映射,并带有应用程序偏移量:

Memory Map with Bootloader

带引导加载程序的内存映射

因此,根据生成配置名称,它会自动将应用程序链接到正确的内存区域!

引导加载程序应用程序的生成配置

总结

使用 FreeMarker 自定义脚本和 Eclipse 生成配置,我可自动生成和链接要与引导加载程序一起使用的应用程序。我可以使用”正常”调试配置来构建和调试应用程序,而无需引导加载程序。

快乐自由标记!

引用

Comments are closed.