痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(8)- 从Serial(1-bit SPI) NOR恢复启动
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的1-bit SPI NOR恢复启动。
在前几篇里痞子衡介绍的Boot Device都属于主动启动的Master Boot Device(Serial(Multi-IO) NOR, SD/eMMC),试想一下如果遇到这样的情况,你选择启动的某个Master Boot Device正常工作一段时间后某次开机突然因为某种未知原因无法启动了,此时系统无法正常工作,但如果你希望系统能够有一定的容错/鲁棒能力,即使这种场合下也能够保证基本工作,那应该怎么做?别担心,i.MXRTxxx BootROM提供了一种解决方案,即Recovery Boot机制,BootROM支持Serial NOR作为Recovery Boot Device,你只需要将备份application事先放进Recovery Boot Device即可,任何主动启动的Master Boot Device启动失败,BootROM会自动启动Recovery Boot Device中的备份application保证系统能正常工作,是不是觉得recovery boot很贴心?今天痞子衡就为大家介绍Recovery Boot:
一、支持的Serial NOR
i.MXRTxxx支持加载恢复启动的主要是1-bit SPI接口(其实Multi-IO也行,只要支持1bit read/normal read模式)的NOR Flash。Serial NOR厂商非常多,对应Serial NOR芯片型号也很多,如果你在选型时不确定到底该为i.MXRTxxx选择哪一款Serial NOR时,可选用下面三款芯片,痞子衡均实测过:
Adesto AT25SF641-SUB-T (NOR Flash, Multiple I/O, 104MHz, 256B Page/4-32-64KB Sector/64Mb Device)
Micron MT25QL128ABA1ESE-OSIT (NOR Flash, Multiple I/O, 133MHz-STR, 64B Page/4-32-64KB Sector/128Mb Device)
Spansion S25FL129P (NOR Flash, Multiple I/O, 80MHz, 256B Page/4-8-64-256KB Sector/128Mb Device)
Note1: BootROM固定使用SPI Mode(0,0)(即CPOL=0, CPHA=0),24MHz SPI Clk去访问外部NOR。
Note2: 在BootROM的Device Boot模式下想要启动NOR不需要知道任何Flash属性参数(如Sector/Page Size),因此Device Boot模式下仅需要指定SPI Port连接即可。
Note3: 在BootROM的Serial ISP模式下擦写NOR时需要知道其Sector/Page Size,ROM支持两种方式获取Sector/Page Size,一是手工填写参数,另一个是利用SFDP。
Note4: BootROM主要支持3bytes(存储范围为1Mb - 128Mb)地址的外部NOR,其实市面上3bytes地址位的EEPROM也可以用作Recovery Boot Device(不过BootROM仅能在Device Boot模式下启动(读)EEPROM,但不支持Serial ISP模式下擦写EEPROM)。
二、Serial NOR硬件连接
确定了Serial NOR芯片选型后,底下便进入Serial NOR硬件电路设计及与i.MXRTxxx的信号连接环节:
i.MXRTxxx对于Serial NOR的底层接口支持是通过内部Flexcomm SPI这个IP实现的,i.MXRTxxx内部一共有8个Flexcomm SPI,BootROM对这8组Flexcomm SPI都支持,具体pinmux如下(适用RT600):

如下是典型的QSPI NOR硬件连接设计,示例NOR芯片是AT25SF641-SUB-T,该NOR芯片为Multiple I/O,数据线为DQ[3:0],当用作1-bit SPI模式时,仅需连接DQ[1:0]:

Note: 当使用QSPI Flash作为1bit SPI Flash使用时,空置的引脚IO[3:2]必须上拉,否则Flash无法正常访问。
三、Serial NOR加载启动过程
确保Serial NOR硬件相关设计无误之后,底下便是下载更新Bootable Image进Serial NOR以供BootROM加载启动了,在下载Bootable image之前有必要先了解Serial NOR的加载启动过程:
痞子衡在启动系列文章的第五篇 博客园主页、CSDN主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。