查看: 3175|回复: 1

i.MX RT1050采用不同存储器的启动时间

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3915

    主题

    7533

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39849
    最后登录
    2025-8-14
    发表于 2020-1-2 09:56:45 | 显示全部楼层 |阅读模式
    恩智浦的官方社区(community.nxp.com)为客户提供了一个在线技术支持的平台,在这个平台上客户之间可以互相交流,还可以得到恩智浦专家的答疑解惑。
    今天这个话题就是在社区里面的一个帖子,估计不少人都会提出这种问题,现发表在这里供大家参考。

    我曾做过一个小项目来了解当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方框图。
    67.png
    *内核时钟的速度也通过将clko1配置为输出进行验证,此时钟速度将除以8。用示波器测量这个频率,可验证其为396兆赫。


    结果
    61.png
    片选引脚信号出现的时间代表的是RT1050处理器进行第一次闪存读取的时刻。GPIO输出的时间表示启动时间。
    正如预期的那样,XiP Hyperflash比其他存储器的启动速度更快。SRAM和SDRAM存储器必须在执行前复制到可执行内存,这将花费更多的时间,因此启动得更慢。


    在下面的部分,我们将对这些测试是如何运行的,以及为什么Hyperflash XiP启动最快的原因提供更全面的解释。


    Hyperflash XiP启动


    以下是我们预计的Hyperflash XiP的启动过程的概述:


    1.上电复位(J26-1)


    2.开始访问闪存(FlexSPI_SS0)


    3.在闪存中执行(XiP)


    4.第一行代码被执行(USER_LED)



    在MCUXpresso中,map文件显示了以下内容:
    62.png
    示波器图像如下:
    63.png
    SDRAM启动


    处理器从ROM启动,ROM会把应用程序映像从NORFlash复制到SDRAM(NOR Flash使用HyperFlash通信)。我用RT的flashloader工具将应用程序加载到闪存中,并将其配置为复制到SDRAM中执行。


    可以设想复制到SDRAM比在HyperFlash中直接执行要慢,因为这样必须执行整个复制操作。
    SDRAM的启动过程如下所示:
    1.上电复位(J26-1)


    2.开始访问闪存(FlexSPI_SS0)


    3.将代码复制到SDRAM


    4.在SDRAM中执行(FlexSPI_SS0)


    5.执行第一行代码(USER_LED)



    在MCUXpresso中,map文件显示了以下内容:
    64.png
    为了运行这个测试,我遵循了以下说明:http://community.nxp.com/docs/DOC-340655
    68.png
    RAM启动


    对于SRAM,预期会出现类似SDRAM的过程。处理器将首先从内部ROM启动,然后转到HyperFlash。然后,它将所有内容从HyperFlash到复制到内部SRAM DTC内存,然后从那里开始执行。


    SRAM启动过程如下:
    1.上电复位(j26-1)


    2.开始访问闪存(FlexSPI_SS0)


    3.将代码复制到SRAM


    4.在SRAM中执行(FlexSPI_SS0)


    5.执行第一行代码(USER_LED)



    在MCUXpresso中,map文件显示了以下内容:
    65.png
    示波器图像如下:
    66.png
    后记

    恩智浦专家评语


    本文的基本思路是正确的,但也有一些概念需要澄清一下:
    1.测启动时间可以在main()里执行GPIO翻转为时间终点,更准确的是在reset handler里立刻翻转。


    2.FlexSPI XIP启动时间基本与image长度无关,但SDRAM/SRAM中Non-XIP启动时间与image长度息息相关。



    3.SEMC主频只配99MHz,稍低了一些,提高主频后性能还可提升。




    作者:NXP Community         文章出处:恩智浦MCU加油站

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    连续签到: 1 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5624
    最后登录
    2021-12-22
    发表于 2020-1-2 20:38:45 | 显示全部楼层
    建议对比一下大计算应用、大读写应用、中断在 Xip 和 SDRAM 的差别
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-15 02:54 , Processed in 0.087465 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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