XMCD – i.MX RT11xx系列简单易用的特定外设配置功能

cathy的头像
cathy 发布于:周五, 10/27/2023 - 09:25 ,关键词:

从i.MX RT1160/ RT1170 B0以及后续的RT1180开始,BootROM引入了XMCD新功能,其用途与传统DCD功能(之前文章介绍过)类似。DCD可以实现对芯片指定外设的配置,常常用于配置SEMC去初始化 SDRAM。但DCD仅支持寄存器操作,因此用户需要从寄存器角度去理解去配置,这种方式较为复杂且对用户来说不够友好,对于具有复杂时序配置要求的外设来说更加难以使用。

基于此,BootROM推出了XMCD,以一种对用户更友好更直观的方式对 SDRAM/HyperRAM等外设进行配置。

不过大家可能并不熟悉该功能或者还没真正的去使用过,今天就以RT1170上的XMCD为例带大家一探究竟。


1. 何为XMCD


XMCD全称External Memory Configuration Data,是i.MX RT11xx系列芯片BootROM中的新功能,与DCD类似,用于应用程序启动前对系统外设进行特定配置。XMCD数据块位于IVT头偏移0x40的位置,由XMCD头和外设特定配置块组成。 XMCD支持配置的设备类型及相应的配置块如下所示:

  • HyperRAM/APMemory (FlexSPI接口) – FlexSPI RAM 配置块

  • SDRAM (SEMC接口) – SEMC SDRAM 配置块

XMCD头的定义如图1所示:

1.png

图1 XMCD头

其中,[19:16]和[15:11]域仅对FlexSPI接口的外设有效,当选择SEMC接口时,这些区域被忽略,设为0即可。[11:0]域用于设置XMCD数据块的总大小,等于XMCD头大小+配置块大小。

下面分别介绍两种外设配置块:


1.1 FlexSPI RAM配置块

FlexSPI RAM 配置块用于配置连接到FlexSPI接口的HyperRAM或者APMemory PSRAM外设。提供了简化版和完整版两种配置方式供用户选择。


其中,简化版配置可以满足大部分HyperRAM 或 APMemory 外设的典型应用。如图2所示,用户仅需要简单配置设备类型,频率,PINMUX等参数即可成功初始化外设。

2.png

图 2 简化版配置

当然,如果用户需要启用一些高级功能,XMCD还提供了完整的512字节FlexSPI RAM配置块以支持灵活的配置。具体的配置内容详见RT1170 Reference Manual的10.8.2.2章节。


1.2 SEMC SDRAM配置块
SEMC SDRAM配置块用于配置连接到SEMC接口的SDRAM设备。与FlexSPI类似,也提供了简化版和完整版两种配置方式供用户选择。


XMCD提供了68字节数据结构用于SDRAM配置,图3展示了数据结构的前10字节内容。当选择简化配置时(即图中config_option设为0x00),仅需要配置该数据结构的前9个字节,即时钟频率,设备大小和port大小,不过该配置仅适用于连接到CS0的SDRAM外设且SDRAM相关参数是固定的,若外设连接到其他CS或当前参数无法成功初始化SDRAM,则需要使用完整配置。

若选择完整配置(即图中config_option设为0xFF),则需要配置整个68字节。完整数据结构详见Reference Manual第10.8.3.1章节。

3.png

图 3 SDRAM配置数据结构(前10字节)


2. 如何使用XMCD


2.1 SDK的使用RT1170 SDK从 2.12.0开始,就已经加入了XMCD功能且boot的时候默认使用XMCD初始化SDRAM,并采用简化版配置。

任意打开一个示例工程,都会包含xmcd.c/h文件,当工程选项预编译宏里有XIP_BOOT_HEADER_XMCD_ENABLE=1时被使能。

4.png

图 4 工程文件中的XMCD

不过SDK里面仅实现了使用XMCD简化配置初始化SDRAM,对于FlexSPI外设的初始化或者完整配置需要用户参考现有XMCD代码,结合前面介绍的SEMC/FlexSPI配置块的定义进行具体配置。

2.2 使用MCUBootUtility工具


NXP-MCUBootUtility是一款功能强大的一站式安全加密启动工具,其v5.3.2版本可以支持XMCD功能进行FlexSPI和SEMC外设的配置。


下载地址:https://github.com/JayHeng/NXP-MCUBootUtility/releases/tag/v5.3.2 

该工具的XMCD配置界面如图5所示:

5.png

图5 XMCD配置界面

该工具目前只有简化配置支持界面直接配置,完整配置需要用户生成相应的XMCD bin文件(该文件由XMC头与外设配置块组成)然后导入。

选择Use XMCD option即可进行外设的简化配置,如图6所示,选择SEMC或FlexSPI接口,然后在下方对应区域填入所需参数即可。

6.png

图6 XMCD简化配置

配置完XMCD后,用户需要再准备一份应用程序,该应用程序链接到对应外设地址中,且不用带boot header,然后导入工具,执行All-In-One Action 操作就可以成功生成可启动文件并下载到板卡中去执行。

图7是读回来的可启动文件,可以看到在IVT头偏移0x40的位置便是相应的XMCD数据。

7.png

图 7 可启动文件中的XMCD数据


3. 参考资料


1. i.MX RT1170 Processor Reference Manual


2. 痞子衡嵌入式:MCUBootUtility v5.3发布,利用XMCD轻松使能外部RAM


来源: 恩智浦MCU加油站

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 14