HYF*_*HYF 6 flash controller nor
有很多NOR QSPI FLASH芯片支持XIP(eXecute In Place)。在这种模式下,嵌入式CPU(或MCU)可以直接执行存储在闪存中的代码。但众所周知,qspi flash每个周期只能输出4位数据,而许多MCU,例如ARM Cortex-M系列,每个周期需要32位指令。所以MCU要等待至少8个周期才能得到有效指令,看起来很慢。此外,nor qspi flash芯片的最高频率往往低于150MHz,而STM32F407的频率为168MHz,这意味着CPU接收有效指令的延迟较长。
不知道我的理解是否有误,我实在是找不到太多关于XIP的细节。STM32Fxxx的技术参考手册只说有嵌入式flash并支持XIP,但没有显示任何细节。此外,我想我们还需要在MCU中实现一个非常复杂的QSPI控制器来支持XIP。
谁能给我一些关于这个问题的指导?
据我所知,MCU 使用 RAM 中的缓冲区从外部闪存读取指令,然后执行它们。它以块的形式读取它们。现在,一个块的大小很大程度上取决于每个供应商的实现(即有多少 RAM 可用、闪存如何连接:SPI、双 SPI、四 SPI、八进制 SPI、是否可以直接内存访问 (DMA)、闪存是否支持连续读取模式)。因此,如果块很小,那么核心将停止等待指令。如果块很大,那么就会耗尽 RAM,并且在分支时,已经加载到 RAM 中的块将被重新加载以用于新代码。
假设闪存与双 SPI 连接并且可以使用 DMA。然后,对于 XiP,控制器将通过执行一些引导加载程序代码(通常来自某些内部 ROM 存储器)来启动。引导加载程序设置 QSPI 闪存控制器和内核的 DMA,以将指令从外部闪存复制到 RAM 缓冲区。然后它将开始执行DMA 现在会将指令异步复制到 RAM。这意味着实际的 MCU 内核几乎不会浪费时间来复制代码。
您说您找不到有关 XiP 的更多详细信息。对我来说最好的信息来源是各个制造商的应用说明。这些实现有所不同,但有很多共同点。
以下是 3 个示例文档:
Microchip AN44065 概述了 XiP:http://ww1.microchip.com/downloads/en/AppNotes/Atmel-44065-Execute-in-Place-XIP-with-Quad-SPI-Interface-SAM-V7-SAM- E7-SAM-S7_应用说明.pdf
ST.com AN5188 第 15 页对 RAM 中的指令与外部闪存中的指令进行了性能比较,这可能特别令人感兴趣:https://www.st.com/content/ccc/resource/technical/document/application_note/group0/d8/ 39/10/2f/ee/c9/4b/19/DM00514974/files/DM00514974.pdf/jcr:content/translations/en.DM00514974.pdf
ST.com AN4760 第 26 页详细描述了如何实现速度改进和 XiP 架构,它也有一些很酷的公式:https ://www.st.com/content/ccc/resource/technical/document/application_note/group0 /b0/7e/46/a8/5e/c1/48/01/DM00227538/files/DM00227538.pdf/jcr:content/translations/en.DM00227538.pdf
| 归档时间: |
|
| 查看次数: |
7313 次 |
| 最近记录: |