大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间

  本篇是i.MXRT1170启动时间评测第三弹了,前两篇分别给大家评测了Raw NAND启动时间(基于A0芯片的EVK)、Serial NOR启动时间(基于B0芯片和EVB),今天痞子衡拿到了B0芯片配套的EVK (Rev.C),其实i.MXRT1170系列EVK还有个区别于i.MXRT10xx系列EVK的地方就是首次放了Secondary Boot Flash(挂在LPSPI接口上),老规矩,痞子衡继续为大家测一测从LPSPI Flash的恢复启动时间(这里指在ITCM执行,暂不考虑在SDRAM执行)。

一、准备工作

1.1 知识储备

  在开始测试之前,你需要认真读一下痞子衡的旧文 《恩智浦i.MX RT1xxx系列MCU启动那些事(13)- 从Serial(1-bit SPI) EEPROM/NOR恢复启动》,对i.MXRT从1bit NOR恢复启动的原理有一个充分认识。

  无论是Raw NAND还是Serial NOR,都属于Primary Flash,它们是一级启动设备。仅当选中的一级启动设备中没有可启动的App时(比如Flash被误擦除,比如Flash信号线有干扰,比如开启了签名但验签失败等),1bit SPI NOR才会发挥作用,BootROM会从1bit SPI NOR起始地址处加载initial image数据(4KB),再根据initial image里的IVT,Boot Data获取Application起始地址以及总长度,然后再将Application全部拷贝到相应SRAM里去启动,其过程如下图所示:

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

1.2 时间界定

  关于时间终点,参考《FlexSPI NOR启动时间》 里的1.2节,方法保持一致。

1.3 制作应用程序

  关于应用程序制作,参考《SEMC NAND启动时间》 里的1.3节。

1.4 下载应用程序

  应用程序的下载需借助痞子衡开发的 NXP-MCUBootUtility 工具(v2.4版本及以上),EVK上的Flash型号是MX25L4006,并且连接的是主芯片的LPSPI1引脚(注意并不是任意Pinmux的LPSPI1都可以的,具体请查看芯片参考手册里System Boot章节的第一段)。

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

  翻看MX25L4006的数据手册,它的总容量是512KB,Page Size是256bytes,两种Sector Size(4KB/64KB),在1bit模式下最高速度可达86MHz,因此使用 NXP-MCUBootUtility 下载时做如下配置(Spi Speed最高仅能设20MHz,这主要受限于LPSPI外设):

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

  i.MXRT1170中关于1bit SPI NOR恢复启动的eFuse配置与之前i.MXRT10xx型号有所不同(精简了SPI Address选项),我们在下载App时会顺便烧录eFuse。

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

1.5 示波器抓取信号

  一切准备就绪,可以用示波器抓1bit SPI NOR启动时间了。通道一监测主芯片POR信号,通道三监测Secondary Flash片选信号(LPSPI1_PCS0),通道四监测LED GPIO信号。为了更直观地看从Primary Flash启动失败进入Secondary Flash恢复启动的过程,痞子衡特地加了通道二监测Primary Flash片选信号(FlexSPI_A_SS0)。

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

二、开始测试

2.1 测试结果

  在公布结果之前,痞子衡先带大家分析一下示波器抓取的启动时间波形,方便大家理解后续表格里的各项组成。

  通道一连接POR引脚,电平拉高是启动计时的开始,启动后会先经历BootROM时间(CM7内核先执行ROM代码,做一些常规系统初始化,读取用户启动配置(假设启动设备选的FlexSPI NOR),然后配置好FlexSPI模块),底下经历Primary Device时间,即先尝试读一下挂在FlexSPI接口上的Flash(先读FDCB,如果没有FDCB则启动失败),通道二(FlexSPI Flash的片选)信号有短暂的拉低,底下才经历BootFlash时间(此时开始访问挂在LPSPI接口上的Flash,从Flash里读取IVT、BootData以及搬移App,所以你会看到通道三(LPSPI Flash的片选)信号持续拉低了,搬移完成之后便跳转到App里执行),最后你会看到通道四电平拉高了(App在执行)。

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

  分析完了启动时间组成,让我们看结果吧。痞子衡基于App长度一共做了2个测试,结果如下表所示(注:表中结果都是在2.5M次/秒的采样率下所得):

Flash型号

Timing模式
App长度

(bytes)
App执行位置BootROM时间PrimaryDevice时间BootFlash时间总启动时间
MX25L4006

1bit, SDR, 20MHz
18066ITCM6.940 ms0.916 ms13.88 ms21.735 ms
253586ITCM6.952 ms0.920 ms146.928 ms154.8 ms

2.2 结果分析

  根据原理和测试结果,我们有三个结论:

  至此,恩智浦i.MX RT1170 1bit SPI NOR恢复启动时间痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(13.A)- LPSPI NOR启动时间(RT1170)-LMLPHP

05-11 11:17