查看: 2577|回复: 0

i.MX RT的救援启动机制

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

    连续签到: 2 天

    [LV.8]以坛为家I

    3920

    主题

    7538

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39928
    最后登录
    2025-8-20
    发表于 2019-5-14 09:56:47 | 显示全部楼层 |阅读模式
    i.MX RT有多种主动启动的Primary Boot Device(基本启动设备),例如串行NOR/NAND、并行NOR/NAND、SD/eMMC等。
    试想一下如果遇到这样的情况,当你选择启动的某个Primary Boot Device因未知原因无法启动了,此时系统无法正常工作,有时是尴尬的事情,有时则是严重事故的问题。此时你肯定希望系统能够有一定的容错能力,即在这种场合下也能保证基本工作。
    可是怎么做到呢?
    别担心,i.MX RT的BootROM提供了一种解决方案——Recovery Boot机制,即遇到任何主动启动的Primary Boot Device启动失败时,BootROM会自动启动Recovery Boot Device(救援启动设备)中的备份程序,以保证系统能正常工作。
    下面,我们以i.MXRT1015为例,详细讲解这种容错方式。

    一、准备工作
    1.1 硬件平台——MIMXRT1015-EVK开发板
    i.MX RT1015基于i.MX RT系列跨界处理器而构建,提供低成本的LQFP封装,可以进一步让客户简化电路板的设计与布局。
    i.MX RT1015基于Arm® Cortex®-M7内核,运行频率500 MHz。
    下面是i.MX RT1015的框图。
    11.jpg

    这是该款开发板的真容:
    12.jpg

    此开发板可以从恩智浦官网上买到。开发板的所有设计文件也可以从恩智浦的官方网站下载:http://www.nxp.com/part/MIMXRT1015-EVK?

    1.2 重要角色——串行EEPROM/NOR芯片
    LPSPI(Lower Power Serial Peripheral Interface),即低功耗串行外设接口,主要支持1-位SPI接口的EEPROM,除此以外市面上有些串行(QSPI) NOR也兼容EEPROM命令集(即1bit read/normal read模式),所以这些QSPI NOR也能被i.MX RT用作救援启动。
    生产串行EEPROM/NOR厂商非常多,对应串行EEPROM/NOR芯片型号也很多,如果你在选型时不确定,到底该为i.MX RT选择哪一款串行EEPROM/NOR时,下面有几款芯片可供选择(带*号的是我们实测过的)。
    厂商 类型 型号
    Onsemi EEPROM CAT25512VI-GT3 *
    ATMEL EEPROM AT25512
    Micron 1-bit NOR Flash MT25QL128ABA1ESE-OSIT
    Spansion 1-bit NOR Flash S25FL129P
    MXIC 1-bit NOR Flash MX25L4006EM2R *

    注意:
    ①BootROM固定使用SPI Mode(0,0)(即CPOL=0, CPHA=0)去访问外部EEPROM/NOR。
    ②BootROM主要支持2字节(存储范围为4Kb - 512Kb) / 3字节(存储范围为1Mb - 128Mb)地址的外部EEPROM/NOR。

    1.3 得力助手——NXP-MCUBootUtility
    NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP MCU里BootROM功能相对应,目前主要支持i.MX RT系列MCU芯片。
    与NXP官方的标准安全加密配套工具集(OpenSSL, CST, sdphost, blhost, elftosb, BD, MfgTool2)相比,NXP-MCUBootUtility是一个真正的一站式工具,一个工具包含NXP官方所有加密配套工具的功能,并且是全图形用户界面操作。
    借助于NXP-MCUBootUtility,你可以轻松上手NXP MCU安全加密启动。
    具体下载地址以及功能手册请见(请下载最新版本v1.1.0):
    http://github.com/JayHeng/NXP-MCUBootUtility

    下面我们分别以NOR Flash以及EEPROM为例,进行1-bit NOR Flash的示例操作。




    二、NOR Flash测试
    NOR Flash:MX25L4006EM2R(4M-BIT,Page 256字节,Sector 4K字节)
    步骤1. 生成non-xip映像
    ① 打开IAR工程(此处使用i.MX RT1020的hello_world例程)。
    ② 选择debug,即程序在RAM里面跑。
    13.jpg

    ③ 修改linker文件。打开MIMXRT1021xxxxx_ram.icf ,修改链接地址为0x0000a000。
    non-xip映像需链接在SRAM里,其在Bootable image中的偏移位置是固定的(0x1000),有一点需要注意,那就是i.MX RT的应用程序的只读段(主要指ARM中断向量表)并不可以从任意地址开始链接,有一个小小的限制,必须从选定的存储器地址空间偏移0x1000之后开始链接(如选中ITCM,则必须要链接在0x00001000之后;如选中DTCM,则必须链接在0x20001000之后...)。这是因为要预留至少4KB空间给IVT、BD、DCD等数据,这个限制是BootROM自身决定的,务必要注意。此处我们修改的链接地址是0xa0000是大于0x1000。
    14.png

    ④ 编译,生成non-xip映像hello_world.out。
    步骤2. 硬件改动
    根据电路图我们在MIMXRT1015-EVK的U27处,焊接串行NOR/EEPROM(此处我们选取MX25L4006EM2R),如下图:
    14.png

    步骤3. 使用NXP-MCUBootUtility(版本需1.1.0及其以上)
    ① 打开NXP-MCUBootUtility-master\bin\NXP-MCUBootUtility.exe
    ② 在工具的左上角,选择MCU Device为i.MXRT1015,Boot Device为LPSPI NOR/EEPROM
    15.jpg

    ③ 点击Boot Device Configuration,修改存储器设置,以及选用的spi选项。
    16.jpg

    ④ 将开发板上的SW8-4拨至1,其余拨至0,J1跳帽连接3-4(5V_USB_OTG_S),用USB线连接J9和电脑。
    ⑤ 识别到USB-HID后,点击Connect to ROM,一步自动连接至1015-EVK。
    17.jpg
    ⑥ 点击Browse,选择我们在步骤1生成的non-xip映像(hello_world.out)。
    18.jpg
    ⑦ SecureBoot Type 选择 DEV Unsigned Image Boot,点击All-In-One Action即可下载代码映像到开发板上。
    19.jpg
    ⑧ 将SW8拨至0010(只要SW81-4不是0001(Serial Download 模式),i.MX RT1015主动启动失败后,启用Recovery Boot,即从LPSPI启动),将J1跳帽连接至1-2,USB线连接J41和PC,打开串口调试助手,按下SW9 Reset,串口调试助手出现字符,即表示MIMXRT1015-EVK从LPSPI接口启动成功。
    20.jpg



    三、EEPROM测试
    测试器件选用CAT25512VI-GT3(512K-BIT,128字节/页)
    步骤1、2与前面NOR Flash测试相同,生成non-xip映像,在开发板焊上EEPROM。
    步骤3. 使用NXP-MCUBootUtility
    ① 打开NXP-MCUBootUtility-master\bin\NXP-MCUBootUtility.exe
    ② 在工具的左上角,选择MCU Device为i.MXRT1015,Boot Device为LPSPI NOR/EEPROM
    21.jpg
    ③ 点击Boot Device Configuration,修改存储器设置,以及选用的spi选项。
    22.jpg
    ④ 将开发板的SW8-4拨至1,其余拨至0,J1跳帽连接3-4(5V_USB_OTG_S),用USB线连接J9和电脑。
    ⑤ 识别到USB-HID后,点击Connect to ROM,一步自动连接至MIMRT1015-EVK开发板。
    23.jpg
    ⑥ 点击Browse,选择在步骤1生成的non-xip映像(hello_world.out)。
    ⑦ Secure Boot Type 选择 DEV Unsigned Image Boot,点击All-In-One Action下载映像。
    24.jpg
    ⑧ 将SW8拨至0010(只要SW81-4不是0001(Serial Download 模式),i.MX RT1015主动启动失败后,启用Recovery Boot,即从LPSPI启动),将J1跳帽连接至1-2,USB线连接J41和PC,打开串口调试助手,按下SW9 Reset,串口调试助手出现字符即MIMXRT1015-EVK从LPSPI接口启动成功。
    25.jpg



    四、结束语
    这次对于i.MX RT的救援启动机制暂时先介绍到这里,文章主要谈了谈这种机制所需要的准备工作以及适用场景。除此之外,文章中的专为NXP MCU安全加密启动而设计的工具NXP-MCUBootUtility有没有吸引到你呢?赶紧试试吧!





    文章出处:恩智浦MCU加油站

    qiandao qiandao
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-21 06:56 , Processed in 0.081301 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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