Запутался в функции XIP (eXecute In Place) QSPI FLASH - PullRequest
0 голосов
/ 21 января 2019

Существует множество микросхем NOR QSPI FLASH, поддерживающих XIP (eXecute In Place).В этом режиме встроенный процессор (или MCU) может напрямую выполнять коды, хранящиеся во флэш-памяти.Но, как мы знаем, флеш-память qspi может выводить только 4-битные данные за такт, в то время как многим MCU, таким как серии ARM Cortex-M, требуется 32-битная инструкция за такт.Таким образом, MCU должен ждать не менее 8 циклов, чтобы получить правильную инструкцию, которая кажется очень медленной.Кроме того, максимальная частота флеш-чипа nor qspi часто ниже 150 МГц, а частота STM32F407 составляет 168 МГц, что означает более длительную задержку для процессора, чтобы получить действительную инструкцию.

Я не знаю, насколько мое пониманиенеправильно, но я действительно не смог найти подробностей о XIP.В Технических справочных руководствах STM32Fxxx говорится только, что они имеют встроенную флэш-память и поддерживают XIP, но они не показывают никаких подробностей.Кроме того, я думаю, нам также нужно реализовать очень сложный контроллер QSPI в MCU для поддержки XIP.

Может кто-нибудь дать мне несколько советов по этому вопросу?

1 Ответ

0 голосов
/ 17 апреля 2019

Насколько я знаю, MCU использует буфер в ОЗУ для чтения инструкций из внешней флэш-памяти и затем выполняет их.Он читает их кусками.Теперь размер одного чанка очень сильно зависит от реализации каждого поставщика (то есть, сколько ОЗУ доступно, как подключена флэш-память: SPI, Dual SPI, Quad SPI, Octal SPI, возможен ли прямой доступ к памяти (DMA), поддерживает ли флэш-память)Режим непрерывного чтения).Так что, если порция мала, ядро ​​остановится в ожидании инструкций.Если чанк большой, то он использует ОЗУ, а также при ветвлении чанков, которые уже были загружены в ОЗУ, будет перезагружен новый код.

Допустим, вспышка связана с Dual SPI, и возможен DMA.Затем для XiP контроллер начал бы с выполнения некоторого кода загрузчика (обычно из некоторой внутренней памяти ПЗУ. Загрузчик настраивает контроллер флэш-памяти QSPI и DMA ядра для копирования инструкций из внешней флэш-памяти в буфер ОЗУ. Затем он начинает выполнять код вэтот буфер. DMA теперь будет асинхронно копировать инструкции в RAM. Это означает, что реальное ядро ​​MCU почти не тратит время на копирование кода.

Вы сказали, что не можете найти много деталей о XiP. Лучший источник информации дляЭто были замечания по применению различных производителей. Реализации различны, но имеют много общего.

Вот 3 примера документов:

...