查看: 4195|回复: 0

[分享] 为 RT1050 生成可启动映像文件

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3868

    主题

    7472

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39232
    最后登录
    2025-7-18
    发表于 2020-6-10 09:16:21 | 显示全部楼层 |阅读模式
    测试启动次数-生成可启动映像文件
    可启动映像文件的结构:
    可启动映像文件中包括:
    FlexSPI 配置块(FCB)
    IVT
    启动数据
    设备配置数据(DCD)
    程序映像
    CSF、证书和签名(这部分是可选的,只在高可靠启动(HAB)时需要)
    我将在下面简要说明各个内容:
    FlexSPI 配置模块(FCB)
    FCB 将配置 FlexSPI 通信的设置。确定使用多少个端口,用哪种时钟速度运行 FlexSPI 控制器,等等。因为其他所有内容都存储在闪存中,所以这是最先要做的事。为了读取其他内容,必须先配置 flash。

    映像矢量表(IVT)
    IVT 是一个表,用于告知内存所有内容的存储地址。
    启动数据
    启动数据包含指向存储器起始地址的指针。

    设备配置数据(DCD)
    DCD 包含用于配置所有外围设备的配置数据。

    程序映像
    程序映像包含您编写的进入应用程序的代码。

    CSF、证书和签名
    这些都是可选的。它们只在高可靠启动(HAB)过程中使用,本文不讨论这部分内容。
    下面是一个粗略的表格,列出了启动映像文件的这些不同部分:
    1.png
    生成可启动映像文件的软件/工具:
    1.MCUXpresso –下载 MCUXpresso IDE
    2.Flash Loader –从 RT1050 页面下载>软件和工具> Flashloader
    3.整个文件夹将包括 MFGTool ,elftosb 工具和更多文档。
    4. DCD.bin 文件:我发现此文档中包含我的文件:https: //community.nxp.com/docs/DOC340655

    生成可启动映像文件的方法概述
    MCUXpresso 可以为 Hyperflash 和 QSPI XiP 生成可启动映像文件,但是如果试图在 SDRAM或内部 SRAM 中,或是从您自己的存储器模块中启动并执行,则必须结合在 MCUXpresso上生成的 s 记录的 elf 映像文件,然后使用 flashloader 工具套件(elftosb 和 mfgtool )创建一个可启动映像文件,然后使用可引导程序下载到板上。整个过程如下所述。在后面的部分中,将分别为 Hyperflash XiP、SDRAM 和 SRAM 提供更详细的分步指南。

    MCUXpresso 配置和输出:
    从您在 MCUXpresso 中的应用程序代码开始。根据您希望从哪里启动,在 MCUXpresso 的“MCU 设置”部分的内存配置编辑器中更改内存分配。如果需要,请确保在预处理器设置中指
    定是否要在启动映像文件中启用 dcd。
    使用二进制工具在 MCUXpresso 中生成一个 s 记录 (.s) 文件。Elftosb 工具- .bin 文件生成您可以在 flashloader 中找到这个工具。对它调用 imx 命令,其输入为包含程序映像的 s 记录文件、dcd.bin 文件(可能在 s-record 中,也可能不在)、FCB 以及一个 bd_file 作为输入(取决于您的内存配置)。elftosb 工具将生成一个.bin 文件作为输出。
    Elftosb 工具-可启动映像文件的生成然后使用 kinetis 命令再次调用 elftosb 工具。这将获取.bin 文件并将其转换为 boot_image.sb文件。
    MFG tool
    然后我们可以使用 mfg 工具为目标电路板生成程序映像文件并上传。为此,必须将板 SW7 设置为 OFF-ON-OFF-ON,并将跳线从 J1(5-6)切换到 J1(3-4)。将 USB线连接到 J9,为主板供电。然后将开发板连到计算机并运行 Mfg 工具。单击开始,映像文件将被上传。
    4.png
    完成后,可启动映像文件将被上传到目标板上,您将可以开始运行!
    切记把引脚头换回来,这样目标板才能正常启动。将 J1(5-6)和 SW7 设置为 OFF-ON -ON-OFF,用来从 Hyperflash 启动。
    在接下来几节中,我将根据您要从哪个特定的存储器位置来启动,分别提供示例。
    可启动映像文件的生成– XiP Hyperflash
    请注意,这也可以在 MCUXpresso 中完成,但是为了使用自己的 dcd 文件,我使用传统的Flashloader 工具来完成这个项目。
    MCUXpresso 的配置和输出:
    首先在内存配置编辑器中更改内存分配(edit project settings >> C/C++ Build >> MCUsettings >>edit)它应类似于下图。
    2.png
    然后如果要使用 dcd.bin 文件,请转到 C/C++ Build >>settings > MCU C compiler >preprocessor,并将 XIP_boot_header enable 和 XIP_boot_header_DCD_enable 设置为 0。否则将这些字段设置为 1。
    3.png
    点击应用并关闭。
    转到调试部分,单击二进制工具程序,然后从 MCUXpresso 中生成一个 s 记录 (.s19)文件。
    5.png
    单击 build 以重新生成项目。
    复制此.s19 文件。

    Elftosb 工具- .bin 文件的生成
    在 flashloader 工具中,选择 Tools > elftosb > Win,然后将.s19 文件以及 dcd.bin 文拖放到该文件夹中。
    在管理员模式下启动命令提示符,并使用命令 cd [elftosb directory]来进入此文件夹要生成.bin 文件,请调用以下命令:
    elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned-dcd.bd -o ivt_flexspi_nor_led_blinky.bin HYPERFLASH_led_blinky.s19

    该命令本质上使用 imx-flexspinor bd linker 文件来生成一个.bin 文件,其中包含了 dcd.bin的头文件。
    注意,HYPERFLASH_led_blinky.s19 应该重命名为您从 MCUXpresso 获得的实际文件名。

    Elftosb 工具-可启动映像文件的生成
    然后我们必须生成 boot_image.sb 文件
    此时使用 kinetis 命令再次调用 elftosb 工具。这将采用.bin 文件并将其转换为 boot_image.sb文件。
    该命令是:
    elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -oboot_image.sb ivt_flexspi_nor_led_blinky_nopadding.bin
    注 意 : 我 们 执 行 的 第 一 个 imx 命 令 的 输 出 必 须 与 该 命 令(ivt_flexspi_nor_led_blinky_nopadding.bin)的输入匹配。另外,其输出必须保持命名为boot_image.sb,否则它无法正常工作。

    MFG tool
    然后我们可以使用 mfg 工具为目标电路板生成程序映像文件并上传。
    为此,必须将板上的 SW7 设置为 OFF-ON-OFF-ON,并将跳线从 J1(5-6)切换到 J1(3-4)。将USB 线连接到 J9,为主板供电。然后将开发板连到你的电脑并运行 Mfg 工具。单击开始,映像文件将被上传。

    复制我们在上一步中创建的 boot_image.sb 文件。找到目录 Tools> mfgtools-rel > Profiles>MXRT105X> OS Firmware,并将拖放到此处。
    接下来,将板上的 SW7 设置为 OFF-ON-OFF-ON,并切换底部的跳线为目标板供电。然后将 USB 线连接到 J9。这将允许您对目标电路板进行编程。返回文件夹mfgtools-rel 并打开Mfg 工具。应该显示HID- compliant vendor-defined device。

    如果没有,请仔细检查 SW7 和右下角的电源引脚。
    6.png
    点击开始,如果成功,它应该看起来像下图
    7.png
    请注意,这一步成功仅意味着它能将可启动映像文件上传到板子上,这通常很好做到。但是,如果您发现主板没有按预期执行操作,则可能是处理器的其他步骤有问题。检查以确保使用了正确的链接文件,并且正确配置了 MCUXpresso。
    按停止并退出
    记得把引脚切换回去,这样主板才能正常启动。记得设置 J1(5-6)并把 SW7 设置为 offon-on-off 以从 Hyperflash 启动。

    可引导映像文件的生成– SDRAM
    该指南基于以下链接:http://community.nxp.com/docs/DOC-340655 。下载链接里提供的文件,然后解压缩。除了该 pdf 文档的第一步不太清楚,其余一切都很好。

    MCUXpresso 的配置和输出:
    首先在 MCUXpresso 的“ MCU 设置”部分的内存配置编辑器中更改内存分配。它应该看起来像下图。
    8.png

    然后转到 settings > MCU C compiler > preprocessor,并将 XIP_boot_header enable 和XIP_boot_header_DCD_enable 都设置为 0
    点击 apply 并关闭。
    转到 C/C++ Build >> Settings >> MCU Linker >> Manage linker script,然后选中将应用程序链接到 RAM 的选择框。
    9.png
    转到调试部分,然后单击二进制工具程序,然后从 MCUXpresso 中生成一个 s 记录 (.s19)文件。
    10.png
    单击 build 以重新生成项目。
    您可以检查控制台以验证内存分配是否正确:
    12.png
    Elftosb 工具– .bin 文件的生成
    在 flashloader 工具中,转到 Tools > elftosb > Win,并将.s19 文件以及 dcd.bin 文件拖放到该文件夹中。若从 SDRAM 启动,还需另外一步。取得文件 imx-sdram-normal-unsigned-dcd.bd(包含在上述链接中)并将其拖放到 Tools > bd_file > imx10xx 中。在管理员模式下启动命令提示符,并使用命令 cd [elftosb directory] 转到此文件夹要生成.bin 文件,请调用以下命令:
    elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-sdram-normal-unsigned-dcd.bd -oevkbimxrt1050_led_blinky.bin SDRAM1_led_blinky.s19
    该命令本质上使用 imx-flexspinor bd linker 文件生成一个.bin 文件,该文件中包含 dcd.bin头文件。请注意HYPERFLASH_led_blinky.s19 应该重命名为您从 MCUXpresso 获得的实际Elftosb 工具–可启动映像文件的生成然后我们必须生成 boot_image.sb
    然后使用kinetis 命令再次调用elftosb 工具。这将采用.bin文件并将其转换为boot_image.sb文件。
    该命令是:
    elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -oboot_image.sb evkbimxrt1050_led_blinky_nopadding.bin
    我们执行的第一个 imx 命令的输出必须与此命令的输入匹配。另外,其输出必须保持名为
    boot_image.sb,否则它将无法正常工作。还要注意,这里说的是 flexspinor 映像 Hyperflash ,但这是正确的,因为从技术上来说,在将所有内容复制到 SDRAM 之前我们仍然需要先从Hyperflash 启动。
    复制 boot_image.sb 文件。
    MFG tool
    然后我们可以使用 mfg 工具为目标电路板生成程序映像文件并上传。
    为此,必须将板上的 SW7 设置为 OFF-ON-OFF-ON,并将跳线从 J1(5-6)切换到 J1(3-4)。将USB 线连接到 J9,为主板供电。然后将开发板连到计算机并运行 Mfg 工具。

    未完,查看完整版点击下载PDF
    qiandao qiandao
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 08:03 , Processed in 0.083317 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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