我参与的一个小项目是了解 RT1050 从不同内存类型启动的性能。我使用 SDK 中的 LED_blinky 代码作为基线,并在 EVKB 板上运行了一些测试。下面描述了我收集的数据以及更详细的测试程序。
启动时间将被定义为从处理器首次接通电源到执行 main() 函数第一行代码的时间。
使用示波器(Tektronix TDS 2014)测量 POR_B* 信号上升沿到以下两点之间的时间:
*POR_B 信号可通过接头 J26-1 进行示波
**FlexSPI_CS 信号可通过电路板上的一个小上拉电阻 R356 获得。一根小电线被焊接在这个电阻器旁边,并在示波器上进行探测。
***所使用的 GPIO 引脚与连接到 USER_LED(低电平有效)的引脚相同。该引脚可通过接头 J22-5 进行定位。
TP 2、3、4、5用于将示波器探头接地。这一切都是在 EVKB 评估板上完成的。
以下是本次测试中值得注意的几点:
在这三种情况下,可引导映像均已刷入 RT1050。之后,在 MCUXpresso 中,调试器配置为将“仅附加”设置为 true。然后启动调试会话,在处理器完成代码执行后,暂停并根据 RT1050 参考手册第 18 章 CCM 框图读取寄存器值。
启动配置: | 核心时钟 (MHz) * | FlexSPI时钟(MHz) | SEMC时钟(MHz) |
FlexSPI | 130 | 99 | |
SDRAM | 396 | 130 | 99 |
SRAM | 396 | 130 | 99 |
*还通过将 clko1 配置为时钟速度除以 8 的输出来验证核心时钟速度。使用示波器测量该频率并验证其为 396 MHz。
芯片选择引脚的时间表示从 RT1050 处理器发生第一次闪存读取的时刻。到GPIO输出的时间代表启动时间。
正如预期的那样,XiP Hyperflash 的启动速度比其他内存更快。SRAM 和 SDRAM 内存在执行之前必须复制到可执行内存,这将花费更多时间,因此启动速度更慢。
在下面的部分中,我们将更详细地解释这些测试是如何运行的,以及为什么 Hyperflash XiP 预计是最快的。
以下是我们预期 Hyperflash XiP 启动过程的步骤概述:
在 MCUXpresso 中,地图文件显示以下内容:
示波器图像如下:
处理器将从 ROM 启动,并被告知将应用程序映像从串行 NOR 闪存复制到 SDRAM(串行 NOR 闪存使用 Hyperflash 通信)。RT flashloader 工具将让我将应用程序加载到闪存中,并将其配置为通过内存复制到 SDRAM 并执行。
由于必须进行整个复制操作,因此复制到 SDRAM 的速度预计会比从 Hyperflash 执行的速度慢。
SDRAM启动过程如下:
在 MCUXpresso 中,地图文件显示以下内容:
为了运行此测试,我遵循了以下说明: https://community.nxp.com/docs/DOC-340655 。
对于 SRAM,预计其工艺与 SDRAM 类似。处理器将首先从内部 ROM 启动,然后进入 Hyperflash。然后,它会将所有内容从 Hyperflash 复制到内部 SRAM DTC 内存,然后从那里执行。
SRAM 启动过程如下:
在 MCUXpresso 中,地图文件显示以下内容:
本文档由以下讨论生成: javascript:;