admin管理员组

文章数量:1530518

2024年7月27日发(作者:)

AN12183

怎样在FLEXSPI NOR Flash模式下使能调试

Rev. 1 — 10/2019

by:NXP Semiconductors

1简介

rt系列产品是NXP生产的业界第一款跨界处理器,这篇文档将介绍如何

将一个可执行文件烧写进外部存储器。为了烧写程序进flash,并且从flash启

动和调试,首先需要新型的Dap-link固件和SDK文件。这篇文档说明了怎样去

编译,调试,和配置FLEXSPI NOR Flash。有关HyperFlash,和MfgTool资

料,可以参考

How to Enable Boot from Octal SPI Flash and SD Card

(文档

AN12107)和

How to Enable Boot from QSPI Flash

(文档AN12108)。

该文档所使用的案例基于MIMXRT1050 SDK (版本:2.3.1),开发环境是IAR

Embedded Workbench 8.22.1。使用的硬件平台是IMXRT1050-EVKB。

2MIMXRT1050 EVK设置

在这块EVK上有两块板载flash:Hyper Flash和QSPI NOR Flash。其中的默

认flash是Hyper Flash。如果需要使能板载的QSPI NOR Flash,EVK需要做

出一些修改。

2.1EVK设置

1.首先需要移除板载的Hyper Flash,否则它会影响QSPI NOR Flash的读

写时序。

Application Note

目录

1简介.................................................1

2MIMXRT1050 EVK设置..................1

2.1EVK设置......................................1

2.2EVKB设置...................................3

3XIP启动流程...................................3

4更新OpenSDA固件........................7

5例子.................................................7

5.1为XIP启动工程添加或者移除启动

头文件.........................................7

5.2将可执行文件烧录进板载Hyper

10

5.3将可执行文件烧录进板载QSPI

10

5.4烧录可执行文件进入一个新的QSPI

12

5.5使用MCUXpresso IDE烧录可执行

文件进一个新的QSPI NOR Flash

...................................................14

5.6修改启动头文件使其支持NOR flash

XIP启动....................................15

6历史版本........................................20

NXP Semiconductors

MIMXRT1050 EVK设置

图 1. 移除 Hyper Flash

2. 图 2 中的 R153-R158 位置焊接阻值为 0Ω 的电阻。

图 2. 在 R153-R158 位置焊接阻值为 0Ω 的电阻

3.替换OpenSDA固件,默认的板载固件使用的是Hyper Flash,因此需要将固件替换为QSPI NOR Flash。所需的固件可以

在NXP sebsite上下载。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note2 / 21

NXP Semiconductors

XIP启动流程

2.2 EVKB 设置

对于 EVKB,板载的 Hyper Flash 可以不必移除。

移除电阻:R356,R361-R366。

焊接 0Ω 阻值电阻的位置:R153-R158。

同 EVK 设置

的第三步,更新 OpenSDA 固件。

现在板载的 QSPI NOR Flash 就可以使用了。

3 XIP 启动流程

启动过程从上电(POR)开始,Arm

®

内核会由硬件重启,并从 boot ROM 处开始执行。Boot ROM 会根据 BOOT_MODE 寄存器

和 eFUSEs 的状态决定使用哪一个启动设备。为了方便开发,使用 eFUSEs 决定启动设备可能会被 GPIO 输入引脚所覆盖,boot

ROM 代码同样允许下载要在设备上运行的程序。这个例程是一个配置程序,它可以使用串行连接为启动设备提供新的可执行文件。

一般情况下,内部启动被选择为一般启动模式,它可以使用外部的 BOOT_CFG GPIOs 进行配置。表 1 展示了典型的启动模式和

启动设备设置。

表 1. 典型的启动模式与启动设备设置

SW7-1

OFF

OFF

ON

SW7-2

ON

OFF

OFF

SW7-3

ON

ON

ON

SW7-4

OFF

OFF

OFF

Boot device

Hyper Flash

QSPI Flash

SD Card

图 3

是 FlexSPI NOR Flash 的启动流程,ROM 需要在 Serial NOR Flash 的偏移量为 0 的位置保留 512 字节的空间储存FlexSPI

NOR 的配置参数。ROM 会在串行时钟为 30 MHz 下使用由 BOOT_CFG2[2:0]所指定的读取命令读取配置参数,Flsah 的配置参数

包括了读取命令的顺序,FlexSPI 频率,flash 使用 quad 模式的使能序列(可选)等。读者可以查阅

RT1050 Process

Reference Manual

(文档 IMXRT1050RM)的 9.6.3 小节获取更多细节。ROM 程序将会使用这些参数配置 FlexSPI。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note3 / 21

NXP Semiconductors

XIP启动流程

3. FlexSPI NOR 启动流程

之后Rom程序会获得一些应用程序的关键信息,中断向量表(IVT),启动数据和设备配置数据(DCD),这些数据构成了一份

可执行文件。

一份可以被烧写进FlexSPI NOR Flash的可执行文件由以下部分直接构成:

•Flash的配置参数:读取命令序列,FlexSPI频率,quad模式的使能序列(可选)等。读者可以参考

RT1050 Process

Reference Manual

(文档IMXRT1050RM)的9.6.3小节获取更多细节。在SDK中搜索hyperflash_config,可以看到在

SDK中的设置。

•IVT:一组位于固定位置的指针列表,用于通知ROM可执行文件的各个组件的位置。在SDK中搜索image_vector_table可

以看到IVT在SDK中是如何设置的,读者可以查阅

RT1050 Process Reference Manual

(文档IMXRT1050RM)的

9.7.1小节获取更多细节。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note4 / 21

NXP Semiconductors

XIP启动流程

•启动数据:用于指定可执行文件的位置,尺寸(字节)和标志位,在SDK中搜索boot_data可以看到启动数据在SDK中是

如何设置的。

•DCD:IC配置数据(例如:SDRAM寄存器配置)。读者可以查阅

RT1050 Process Reference Manual

(文档

IMXRT1050RM)的9.7.2小节获取更多细节。由于DCD数据是以二进制方式储存的,因此很难去理解和修改它们。DCD

工具可以帮助将配置文本文件转换为二进制文件。在SDK中搜索dcd_data[]可以看到启动数据在SDK中是如何设置的。

•用户程序与数据

图 4. 可启动文件的布局

打开链接文件MIMXRT1052xxxxx_flexspi_,就可以看到配置参数,IVT,启动数据,DCD数据在flash中的布局。

图 5. 可启动文件的地址信息

打开一份可执行文件,例如 hello_。flash 的配置参数被放置在文件开头,flash 配置参数的标签是 0x42464346,对应

的ASCII 值是 FCFB,如 图 6 所示。读者可以查阅

RT1050 Process Reference Manual

(文档 IMXRT1050RM)的 9.6.3.1

小节获取更多细节。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note5 / 21

NXP Semiconductors

XIP启动流程

图 6. 配置参数的布局位置

IVT的标签是0xD1,它的偏移量是0x1000,启动地址0x60000000被保存在偏移量0x1020处,这一地址对应着flash的起始地

址,DCD的起始地址在偏移量0x1030处,它的标签是0xD2。

7. flash 配置参数的布局位置

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note6 / 21

NXP Semiconductors

更新OpenSDA固件

4更新OpenSDA固件

在SDK 2.3.1中,几乎所有的例程都有支持XIP启动的程序,这意味着当使用默认的XIP启动例程时,原始可执行文件将会被添

加flash配置参数,IVT,启动数据和DCD。OpenSDA固件并没有使命给原始可执行文件添加这些信息。当使用板载Hyper flash

或者QSPI NOR flash时,需要升级固件才能使用这些例程。如果固件号码大于TR18132215,OpenSDA固件不会去给原始可执

行文件添加配置信息。如果固件号码小于这个序号,请前往官网升级固件。

8. 固件序列号

5 例子

5.1 为 XIP 启动工程添加或者移除启动头文件

RT1050 的 SDK 中为所有支持 XIP 启动的例程都提供了 flexspi_nor_debug 和 flexspi_nor_release 两个版本,这两个版本的

例程都会默认添加 XIP_BOOT_HEADER,ROM 可以直接在外部 flash 中启动和运行它们。

注意

当使用 Daplink 来调试这两个版本的目标(target)时,请将断点类型设置为硬件断点。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note7 / 21

NXP Semiconductors

例子

图 9. 设置硬件断点

5.1.1 启动头文件的宏

表 2 被添加到目标中以支持 XIP 启动的三个宏。

表 2. 启动头文件的宏

XIP_EXTERNAL_FLASH

1: 移除将会改变flexspi时钟频率的代码

0: 无变化

1: 在可执行文件开头添加flexspi配置时钟,IVT,启动数据,DCD(可

选)

0: 不添加

XIP_BOOT_HEADER_DCD_ENABLE

1: 为可执行文件添加设备配置信息

0: 不添加

XIP_BOOT_HEADER_ENABLE

表 3 罗列了当设置不同的宏时生成的可执行文件的区别。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note8 / 21

NXP Semiconductors

例子

表 3. 不同的宏设置下所生成的可执行文件的差异

XIP_BOOT_HEADER_DCD_ENABLE=1

X

I

P

_

E

X

T

E

R

N

A

L

_

F

L

A

S

H

=

1

•在hyperflash作为启动设备时,生

成的可执行文件可以被IDE烧录进

hyperflash中并且在上电后执行。

•SDRAM会被初始化。

XIP_BOOT_HEADER_DCD_ENABLE=0

•在hyperflash作为启动设备时,生

成的可执行文件可以被IDE烧录进

hyperflash中并且在上电后执行。

•SDRAM不会被初始化。

XIP_BOOT_HEADER_

ENABLE=1

XIP_BOOT_HEADER_

ENABLE=0

•在hyperflash作为启动设备时,生成的可执行文件在上电后不会被执行。

XIP_EXTERNAL_FLASH=0

•生成的可执行文件不会被XIP,因为这个宏被置1,它会排除掉所有可以改变flexspi时

钟的代码。

5.1.2在SDK中修改宏

拿hello_world作为例子:

图 10. 在 IAR 中修改 SDK 中的宏

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note9 / 21

NXP Semiconductors

例子

5.2将可执行文件烧录进板载Hyper Flash

1.将开关SW7_2和SW7_3置1,将其他开关置0,然后给板子上电。

2.打开

hello_world

例程,选择target为flex_nor_debug,之后可以将可执行文件编译并烧录进flash。

11. 编译并烧录

3.打开并配置串口终端:

波特率: 115200

•数据位: 8

•停止位: 1

•奇偶校验: 无

•控制流: 无

4.按下SW3重启EVK,随后串口终端会打印出hello world。

12. Hello World

5.3将可执行文件烧录进板载QSPI NOR Flash

1.将SW7-3置1,将其他开关置0,板子配置为

QSPI NOR Flash启动模式,更新OpenSDA固件为QSPI NOR Flash,

然后给EVK上电。

2.打开SDK中的hello_world例程,并选择flexspi_nor_debug,找到工程中的evkbimxrt1050_hyper_config.c。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note10 / 21

NXP Semiconductors

例子

13. evkbimxrt1050_hyper_config.c

3.注释掉const flexspi_nor_config_t hyperflash_config,并用

const flexspi_nor_config_t qspiflash_config替换,或者可以直接

使用附件中的文件替换掉工程中的

evkbimxrt1050_hyper_config.c

文件,新的文件是已经配置成使用QSPI NOR Flash的

文件了。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note11 / 21

NXP Semiconductors

例子

图 14. 替换

4.编译并烧录这个工程进入flash,上电后可以看到串口终端上打印出了Hello World。

5.4烧录可执行文件进入一个新的QSPI NOR Flash

5.4.1烧录可执行文件到GD25LQ64C

这一小节用于说明如何使用一个新的QSPI NOR Flash,以GD25LQ64C为例。

1.在工程中使用const flexspi_nor_config_t qspiflash_config替换掉const flexspi_nor_config_t hyperflash_config。

2.在附件中找到FlashIMXRT1050_EVK_FlexSPI_Example工程,并使用IAR打开,编译这个工程,在输出文件夹中找到

FlashIMXRT1050_EVK_,将这个文件复制到IAR的安装路径下。

图 15. 更新 IAR 的 flashloader

3.编译下载这个工程,上电后可以看到串口终端上打印出了Hello World。

5.4.1.1两种flash配置参数的区别

Hyper Flash与QSPI NOR Flash配置参数的不同包括:

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note12 / 21

NXP Semiconductors

例子

•Look Up Table (LUT)

LUT是一块保存了一定数量预编程的序列的内部内存,每一个序列包括高达8条的顺序执行的指令。当使用一个IP命令或者

AHB命令触发对flash的访问时,FlexSPI控制器会根据序列号从LUT中取序列,并执行它在SPI接口上形成一个有效的数

据传输。

•读取采样时钟源

Hyper Flash使用来自DQS Pad的外部输入,QSPI NOR Flash使用来自来自DQS Pad的回环输入。

•Flash类型

Hyper Flash是Octal,QSPI NOR Flash是Quad。

5.4.1.2两种flashloaders之间的不同

两者之间的不同包括:

•QE 位在 GD 和 ISSI 之间的位置

图 16 展示了两种 flash loaders 之间的主要不同。左侧是原始函数,右侧是修改后的函数。

图 16. 两种 flashloaders 之间的不同

•其他的不同可以在对比工具中找到。

注意

可以在IAR的安装路径

IAR SystemEmbedded

workbench8.0_2armsrcflashloaderNXPFlashIMXRT1050_EVK_FlexSPI

下中找到默认的flashloader。修改后

的flashloader放在附件中。

5.4.2将可执行文件烧录进GD25Q64C

这一小节介绍怎样使用一个新的QSPI NOR Flash。以GD25Q64C为例。在GD25LQ64C和GD25Q64C之间除了供电的不同,

还有一些其他的差异。

GD25Q64C使用的是3.3 V供电,但是默认的供电电压是1.8 V,因此需要改变供电电压。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note13 / 21

NXP Semiconductors

例子

17. GD25LQ64C 和 GD25Q64C 之间的不同

它们之间的区别是写状态寄存器的配置与命令格式,因此有关这些寄存器的配置需要修改。

1. 使用 IAR 打开 FlashIMXRT1050_EVK_FlexSPI_Example,找到 LUT 并修改它们的值,如 图

18 所示。

图 18. 修改 ISSI_CMD_WRSR 的值

2. 写寄存器的格式需要改为 8 位,如 图 19 所示。

图 19. 修改写寄存器的格式

3.编译项目并复制产生的

.out

文件,重复使用板载QSPI NOR Flash的步骤。

5.5使用MCUXpresso IDE烧录可执行文件进一个新的QSPI NOR Flash

选择MIMXRT10XX_SFDP_作为LinkServer flash driver,几乎所有的标准SPI NOR Flash都支持SFDP。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note14 / 21

NXP Semiconductors

例子

图 20. 选择 MIMXRT10XX_SFDP_

5.6修改启动头文件使其支持NOR flash XIP启动

参考flash的datasheet来修改evkmimxrt10xx_flexspi_nor_config.c的flexspi_nor_config_t参数。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note15 / 21

NXP Semiconductors

例子

图 21. 修改 flexspi_nor_config_t 参数

下面的例子是关于如何修改FLEXSPI_LUT_SEQ()参数,使启动模式为NOR flash XIP模式。

5.6.1ISSI IS25WP064A使用Quad SPI模式

参考ISSI IS25WP064A datasheet获取有关Fast Read Quad I/O指令代码和空时钟周期(dummy cycles)。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note16 / 21

NXP Semiconductors

例子

图 22. 进行 Fast Read Quad I/O 需要进行的参数升级

5.6.2Winbond W25Q32使用Quad SPI模式

参考Winbond W25Q32 datasheet获取有关Fast Read Quad I/O指令代码和读延迟周期(dummy cycles)。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note17 / 21

NXP Semiconductors

例子

23. 进行 Fast Read Quad I/O 需要进行的参数升级

5.6.3Winbond W25Q32使用dual SPI模式

参考Winbond W25Q32 datasheet获取有关Fast Read Dual I/O指令代码和读延迟周期(dummy cycles)。

修改结构体成员 .sflashPadType 为 kSerialFlash_2Pads。

•修改参数 FLEXSPI_LUT_SEQ() 为 FLEXSPI_2PAD。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note18 / 21

NXP Semiconductors

例子

24. 进行 Fast Read Quad I/O 需要进行的参数升级

5.6.4Winbond W25Q32使用standard SPI模式

参考Winbond W25Q32 datasheet获取有关Fast Read指令代码和空时钟周期(dummy cycles)。

•修改结构体成员.sflashPadType为kSerialFlash_1Pads。

•修改参数 FLEXSPI_LUT_SEQ() 为FLEXSPI_1PAD。

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note19 / 21

NXP Semiconductors

历史版本

图 25. 进行 Fast Read Quad I/O 需要进行的参数升级

6 历史版本

表 4. 历史版本

版本号

0

日期

2018/05

更改

最初版本

添加了使用MCUXpresso IDE烧录可执

行文件进一个新的QSPI NOR Flash与

修改启动头文件使其支持NOR flash XIP

启动

章节。

12019/10

怎样在FLEXSPI NOR Flash模式下使能调试, Rev. 1, 10/2019

Application Note20 / 21

How To Reach Us

Home Page:

Web Support:

/support

Information in this document is provided solely to enable system and software implementers to use NXP products. There

are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits based on the

information in this document. NXP reserves the right to make changes without further notice to any products herein.

NXP makes no warranty, representation, or guarantee regarding the suitability of its products for any particular purpose, nor

does NXP assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any

and all liability, including without limitation consequential or incidental damages. “Typical” parameters that may be provided

in NXP data sheets and/or specifications can and do vary in different applications, and actual performance may vary over

time. All operating parameters, including “typicals,” must be validated for each customer application by customer's technical

experts. NXP does not convey any license under its patent rights nor the rights of others. NXP sells products pursuant to

standard terms and conditions of sale, which can be found at the following address: /SalesTermsandConditions.

Right to make changes - NXP Semiconductors reserves the right to make changes to information published in this

document, including without limitation specifications and product descriptions, at any time and without notice. This

document supersedes and replaces all information supplied prior to the publication hereof.

Security — Customer understands that all NXP products may be subject to unidentified or documented vulnerabilities.

Customer is responsible for the design and operation of its applications and products throughout their lifecycles to reduce

the effect of these vulnerabilities on customer’s applications and products. Customer’s responsibility also extends to other

open and/or proprietary technologies supported by NXP products for use in customer’s applications. NXP accepts no

liability for any vulnerability. Customer should regularly check security updates from NXP and follow up appropriately.

Customer shall select products with security features that best meet rules, regulations, and standards of the intended

application and make the ultimate design decisions regarding its products and is solely responsible for compliance with all

legal, regulatory, and security related requirements concerning its products, regardless of any information or support that

aProductSecurityIncidentResponseTeam(PSIRT)(************************)

that manages the investigation, reporting, and solution release to security vulnerabilities of NXP products.

NXP, the NXP logo, NXP SECURE CONNECTIONS FOR A SMARTER WORLD, COOLFLUX,EMBRACE, GREENCHIP,

HITAG, ICODE, JCOP, LIFE, VIBES, MIFARE, MIFARE CLASSIC, MIFARE DESFire, MIFARE PLUS, MIFARE FLEX,

MANTIS, MIFARE ULTRALIGHT, MIFARE4MOBILE, MIGLO, NTAG, ROADLINK, SMARTLX, SMARTMX, STARPLUG,

TOPFET, TRENCHMOS, UCODE, Freescale, the Freescale logo, AltiVec, CodeWarrior, ColdFire, ColdFire+, the Energy

Efficient Solutions logo, Kinetis, Layerscape, MagniV, mobileGT, PEG, PowerQUICC, Processor Expert, QorIQ, QorIQ

Qonverge, SafeAssure, the SafeAssure logo, StarCore, Symphony, VortiQa, Vybrid, Airfast, BeeKit, BeeStack, CoreNet,

Flexis, MXC, Platform in a Package, QUICC Engine, Tower, TurboLink, EdgeScale, EdgeLock, eIQ, and Immersive3D are

trademarks of NXP B.V. All other product or service names are the property of their respective owners. AMBA, Arm, Arm7,

Arm7TDMI, Arm9, Arm11, Artisan, , Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle,

Keil, Mali, Mbed, Mbed Enabled, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2,

ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile are trademarks or registered trademarks of Arm Limited (or its

subsidiaries) in the US and/or elsewhere. The related technology may be protected by any or all of patents, copyrights,

designs and trade secrets. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. The

Power Architecture and word marks and the Power and logos and related marks are trademarks and

service marks licensed by .

©

NXP B.V. rights reserved.

For more information, please visit:

Forsalesofficeaddresses,pleasesendanemailto:**********************

Date of release: 10/2019

Document identifier: AN12183

本文标签: 启动配置可执行文件使用参数