找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3701

积分

0

好友

480

主题
发表于 3 小时前 | 查看: 2| 回复: 0

最近,关于恩智浦i.MXRT1xxx系列MCU从Serial NAND启动的咨询越来越多,使这一相对小众的启动方式受到了更多关注。根据观察,客户的主要目的是在应用中基于Serial NAND构建文件系统(在文件存储或多媒体数据应用方面,Raw NAND的传统优势正在减弱),并顺带将其用于应用程序代码的启动。

借此机会,本文将详细介绍在Serial NAND上制作、下载和启动程序的全流程方法。

Note:文中贴图与代码示例主要以 i.MXRT1050 为例,其余 i.MXRT1xxx 系列原理相似。

一、支持的Serial NAND型号

Serial NAND的供应商和具体型号非常繁多。如果你在为i.MXRT选型时感到困惑,可以考虑以下四款经过实测验证的芯片:

Macronix MX35LF2G24AD       (120MHz, x4 bits, 2KB Page/128KB Block/2Gb Device,  8-bit/544byte ECC, 3.3V)
Winbond W25N01GV            (104MHz, x4 bits, 2KB Page/128KB Block/1Gb Device,  1-bit/528byte ECC, 3.3V)
GigaDevice GD5F1GQ5UEYIG    (133MHz, x4 bits, 2KB Page/128KB Block/1Gb Device,  4-bit/528byte ECC, 3.3V)
Micron MT29F1G01ABA         (133MHz, x4 bits, 2KB Page/128KB Block/1Gb Device,  8-bit/Sector  ECC, 3.3V)

一个需要特别注意的关键点是:与《i.MXRT从Raw NAND启动》一文中既可使用软件ECC也可利用Flash自带硬件ECC不同,从Serial NAND启动必须依赖Flash自带的硬件ECC功能

二、Serial NAND的硬件连接

除了i.MXRT1010/1024/1064不支持Serial NAND启动外,其余i.MXRT1xxx系列均支持。其中,i.MXRT10xx系列仅支持一组固定的引脚连接组合,而i.MXRT11xx则支持多组组合。以i.MXRT1050为例,其BootROM支持通过以下引脚复用(PinMux)连接Serial NAND进行启动:

i.MXRT1050 ROM引导加载程序串行NAND引脚复用表

下图是IMXRT1050EVK12_Rev.A开发板上四线QSPI Flash的连接设计。板载默认的U33芯片是Serial NOR Flash,我们可以将其替换为同封装的Serial NAND。例如,可以将其更换为MX35LF2G24AD进行测试,同时需要将FLASH_VCC的供电相应地改为3.3V:

i.MXRT1050 EVK QSPI Flash原理图(可替换为Serial NAND)

三、Serial NAND的加载与启动过程

我们知道,Serial NAND中只能放置非就地执行(Non-XIP)的应用程序(这些程序需链接到内部SRAM或外部RAM空间)。其启动加载流程与《从 Serial(1-bit SPI) NOR/EEPROM恢复启动》一文中描述的流程类似(可参考该文第3节)。

i.MXRT的BootROM处理Serial NAND启动的流程与处理Raw NAND启动几乎一致,都依赖于FCB(Flash Configuration Block)和DBBT(Discovery Bad Block Table)这两个核心数据结构。当然,Serial NAND和Raw NAND对这两个数据结构的具体成员定义有所不同。关于FCB和DBBT的详细作用与机制,在《i.MXRT从Raw NAND启动》一文的第三、四小节已有清晰阐述,此处不再重复。

i.MXRT1050参考手册的System Boot章节描绘了上电启动时,BootROM代码搜索FCB和DBBT的流程图。只有成功找到这两个数据结构,应用程序才能被正常加载。这里有一个至关重要的细节:FCB和DBBT是在配套的Flashloader执行过程中动态生成的,因为它们涉及NAND Flash内部具体的坏块分布信息。这意味着我们无法像对待NOR Flash那样,在PC端预先制作出一个包含完整启动头(FCB、DBBT、IVT、BD)的NAND可启动镜像。

i.MXRT BootROM FCB与DBBT搜索流程图

四、将应用程序下载至Serial NAND

现在假设你已经制作好一个可启动镜像(Bootable image),并且使用blhost工具与Flashloader建立了基本通信,正准备开始将镜像下载到Serial NAND中。此时,我们只需要提供简化的12到44字节配置数据,即可完成Serial NAND的全部配置。以下是以MX35LF2G24AD为例的应用程序下载更新命令序列:

// 在SRAM中临时存储Serial NAND配置数据(FCB选项)
blhost -u -- fill-memory 0x20202000 0x4 0xC2000103 // searchCount=2, searchStride = 64 pages, 地址类型:块地址, 选项块大小:3个长字
blhost -u -- fill-memory 0x20202004 0x4 0x2020200C // NAND选项地址
blhost -u -- fill-memory 0x20202008 0x4 0x4004     // image0 从第4个块开始,最大长度为4个块

// 在SRAM中临时存储Serial NAND配置数据(NAND选项)
blhost -u -- fill-memory 0x2020200C 0x4 0xC0020023 // Flash容量:2Gbit, 1个平面, 每块64页, 页大小:2KB, 最大频率:60MHz

// 使用Serial NAND配置数据配置FlexSPI接口并写入完整的FCB、DBBT数据
blhost -u -- configure-memory 0x101 0x20202000

上述 fill-memory 命令中的FCB选项配置数据组织格式详见下表:

Serial NAND FCB选项数据结构布局

上述 fill-memory 命令中的NAND选项配置数据组织格式详见下表:

Serial NAND设备选项数据结构

上述表格描述的12-44字节数据主要提供了FCB和NAND设备属性的配置信息。configure-memory 命令成功执行后,后续只需从Serial NAND对应的块地址开始下载可启动镜像即可,具体步骤如下:

// 擦除Serial NAND并将镜像下载到Serial NAND中
blhost -u -- flash-erase-region 0x4 0x4 0x101     // 从第4个块开始擦除,擦除范围为4个块
blhost -u -- write-memory 0x4 bt_image.bin 0x101  // 从第4个块开始下载包含ivt、bd的镜像文件

当然,以上所有繁琐的命令行操作都可以使用MCUBootUtility工具(v5.2.1及以上版本)一键完成,其图形化界面使配置和烧录过程更加直观便捷:

NXP MCU Boot Utility v5.2.1 串行NAND设备配置界面

五、进入Serial NAND启动模式

应用程序成功下载到Serial NAND后,我们就可以开始设置芯片从Serial NAND启动了。

首先,需要确保BOOT_MODE[1:0] = 2‘b10,即芯片处于内部启动(Internal Boot)模式。然后,再来选择启动设备。启动设备由BOOT_CFG1[7:4]这四个引脚的电平输入状态决定,其中Serial NAND启动模式对应为4’b11xx。

六、配置eFuse以从Serial NAND启动

设置好芯片从Serial NAND启动的模式后,我们还需要最后关注与Serial NAND相关的具体特性配置,这些配置主要集中在芯片内部的eFuse区域0x6e0/0x450中。根据前面的配置,这里我们只需要将BOOT_SEARCH_COUNT位设置为1,其余位保持默认值0即可。

i.MX RT1050 串行NAND启动相关熔丝映射表

这里单独解释一下COL_ADDRESS_WIDTH,其默认值为0,即12位。这看起来对应了4KB的页大小,但由于ECC特性,在这种设置下,低2KB的页空间用于存储真实数据,而高2KB的页空间实际上属于所谓的“备用(Spare)”区域,会被Flash自动用于存放ECC校验码。不过,这个Spare区域的有效范围在64字节到128字节之间不等(对于MX35LF2G24AD则是128字节)。

串行NAND数据缓冲区与列地址映射示意图

完成上述所有步骤后,复位芯片,你应该就能看到存放在Serial NAND中的应用程序正常启动了。

希望这篇关于恩智浦i.MXRT1xxx系列MCU串行NAND启动的详细指南能对你的项目开发有所帮助。如果在实践过程中遇到任何问题,欢迎到专业的开发者社区与其他工程师交流探讨。




上一篇:i.MXRT1180芯片FlexSPI接口NOR Flash启动的12种硬件连接方式详解
下一篇:给Windows老用户的三个推荐:这些Linux发行版让系统迁移平滑又游戏友好
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-26 22:21 , Processed in 0.599197 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

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