经验之谈:i.MX RT1050采用不同存储器的启动时间
我曾做过一个小项目来了解当RT1050从不同类型的存储器来启动时,性能如何。我使用SDK中的LED_Blinky代码作为基础,并在EVKB板上运行了一些测试。下面将介绍我收集的数据,以及更多的测试过程的细节。
测试过程
启动时间的定义是从处理器刚开始上电到它执行main()函数中的第一行代码的时间。
使用示波器(Tektronix TDS,2014)测量了从POR_B①信号的上升沿到以下两点之间的时间:
1、FlexSPI_CS②发生(ROM首次读取FlexSPI)
2、应用程序代码中的GPIO口③切换(代码执行信号的开始)。
① POR_B信号可通过J26-1接插头进行检测。
② FlexSPI_CS信号可通过电路板上的一个小上拉电阻R356检测到。在这个电阻的旁边焊接了一小根电线,并连接到示波器的探针。
③ 所使用的GPIO引脚与连接到USER_LED(低电平有效)的引脚相同。这个引脚可以通过J22-5接插头来检测。
TP2、3、4和5可以用于将示波器的探头接地。所有这些都是在EVKB评估板上做的。
下面是关于本次测试过程中的几个值得注意的点:
本报告主要强调POR_B信号的上升沿与执行第一行代码之间的时间。然而,在电路板接通电源和POR_B系统上电之间仍有一段时间。这是电源器件的问题,且会根据用户的应用和设计而变化。有鉴于此,这份报告不会对此给予太大的重视。
应用程序的第一部分代码其实上是配置处理器的几个引脚。只有在这些引脚被处理之后,GPIO口才会切换到低电平并且在示波器上显示时间。然而,这几行配置代码的执行速度非常快,所以这段时间在测试中可以被忽略不计。
时钟配置
在所有三种情况下,启动映像文件都被写入RT1050的闪存。之后,在MCUXpresso中,把调试器的“Attach Only”配置设置为真。然后启动调试进程,处理器执行完代码后,停下来读取寄存器的数值,参见RT1050参考手册第18章中的CCM方框图。
启动配置 |
内核时钟 (MHz)* |
FlexSPI 时钟(MHz) |
SEMC 时钟(MHz) |
FlexSPI |
130 |
99 |
|
SDRAM |
396 |
130 |
99 |
SRAM |
396 |
130 |
99 |
*内核时钟的速度也通过将clko1配置为输出进行验证,此时钟速度将除以8。用示波器测量这个频率,可验证其为396兆赫。
结果
片选引脚信号出现的时间代表的是RT1050处理器进行第一次闪存读取的时刻。GPIO输出的时间表示启动时间。
正如预期的那样,XiP Hyperflash比其他存储器的启动速度更快。SRAM和SDRAM存储器必须在执行前复制到可执行内存,这将花费更多的时间,因此启动得更慢。
在下面的部分,我们将对这些测试是如何运行的,以及为什么Hyperflash XiP启动最快的原因提供更全面的解释。
Hyperflash XiP启动
以下是我们预计的Hyperflash XiP的启动过程的概述:
上电复位(J26-1)
开始访问闪存(FlexSPI_SS0)
在闪存中执行(XiP)
第一行代码被执行(USER_LED)
在MCUXpresso中,map文件显示了以下内容:
示波器图像如下:
SDRAM启动
处理器从ROM启动,ROM会把应用程序映像从NORFlash复制到SDRAM(NOR Flash使用HyperFlash通信)。我用RT的flashloader工具将应用程序加载到闪存中,并将其配置为复制到SDRAM中执行。
可以设想复制到SDRAM比在HyperFlash中直接执行要慢,因为这样必须执行整个复制操作。
SDRAM的启动过程如下所示:
上电复位(J26-1)
开始访问闪存(FlexSPI_SS0)
将代码复制到SDRAM
在SDRAM中执行(FlexSPI_SS0)
执行第一行代码(USER_LED)
在MCUXpresso中,map文件显示了以下内容:
为了运行这个测试,我遵循了以下说明:https://community.nxp.com/docs/DOC-340655。
RAM启动
对于SRAM,预期会出现类似SDRAM的过程。处理器将首先从内部ROM启动,然后转到HyperFlash。然后,它将所有内容从HyperFlash到复制到内部SRAM DTC内存,然后从那里开始执行。
SRAM启动过程如下:
上电复位(j26-1)
开始访问闪存(FlexSPI_SS0)
将代码复制到SRAM
在SRAM中执行(FlexSPI_SS0)
执行第一行代码(USER_LED)
在MCUXpresso中,map文件显示了以下内容:
示波器图像如下:
后记
恩智浦专家评语
本文的基本思路是正确的,但也有一些概念需要澄清一下:测启动时间可以在main()里执行GPIO翻转为时间终点,更准确的是在reset handler里立刻翻转。
FlexSPI XIP启动时间基本与image长度无关,但SDRAM/SRAM中Non-XIP启动时间与image长度息息相关。
SEMC主频只配99MHz,稍低了一些,提高主频后性能还可提升。
(转自恩智浦MCU加油站)
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。