QSPI(Quad Serial Peripheral Interface)是一種基于 SPI(串行外設接口)的高速數據通信協議.它的全稱是Quad SPI,即四路串行外設接口。QSPI通常用于與外部存儲設備(如NOR Flash或NAND Flash)進行高速數據傳輸,并具備以下幾個特點:
1.高速啟動
QSPI通過四條數據線并行傳輸數據,數據吞吐量比傳統SPI高4倍,適合快速加載大塊數據(如固件\操作系統鏡像)。例如,ZYNQ\MPSOC\VERSAL等SoC(系統級芯片)可通過QSPI Flash在系統上電時直接加載FSBL\PLM(第一階段引導程序),顯著縮短啟動時間。 ?
2.可靠性高
QSPI Flash屬于非易失性存儲器,斷電后數據不會丟失,適合存儲系統參數、校準數據等需要長期保留的信息。其寫入壽命(通常10萬次擦寫)優于傳統NAND Flash,適合高頻寫入場景。
3.接口靈活
QSPI僅需4個引腳(時鐘線\片選線\四條數據線),引腳占用少,適合空間受限的嵌入式設備。
4.動態重構能力
在ZYNQ\MPSOC\VERSAL等可編程邏輯設備中,QSPI支持運行時加載不同配置文件(如PL比特流),實現動態重構邏輯功能,適用于需要靈活配置的工業控制系統。 ?
5.兼容性強
QSPI協議與SPI兼容,可無縫遷移至支持傳統SPI的設備。
硬件環境
本文基本AMD Versal系統的評估套件VCK190進行開發部署,VCK190 是首款 Versal? AI Core系列評估套件,可幫助設計者使用AI和DSP引擎開發解決方案,與當前服務器級CPU相比,這些引擎能夠提供超過100倍的計算性能。憑借各種連接選項和標準化的開發流程,Versal AI Core系列VC1902自適應SoC為云、網絡和邊緣應用提供出色的AI推理和信號處理吞吐量。
由于VCK190主板并沒有QSPI器件,所以需要額外連接套件中的X-EBM-01小板進行QSPI啟動引導。其中X-EBM-01小板中使用了兩片1Gb MT25QU01GBBB8E12-0SIT的QSPI芯片。
QSPI Flash分區
1. boot分區存放BOOT.BIN,大小根據BOOT.BIN大小進行分配;
2. bootenv分區存放啟動環境變量,一般256K左右足夠使用;
3. kernel分區image.ub內核、文件系統文件,大小根據image.ub大小進行分配;
4. bootscr分區放啟動腳本,一般64K左右足夠使用。

Linux QSPI驅動
從petalinux2023.2開始,QSPI的驅動使用parallel-memories和stacked-memories屬性來代替原來的is-dual和num-cs來控制QSPI Flash的數量及模式,具體的system-user.dtsi的配置參考如下:

Petalinux配置
1.使用petalinux-config進行配置,在petalinux-config->Subsystem Hardware Settings->Flash Settings位置進行分區配置,具體大小和偏移可以參考上圖;

2.petalinux-config->Image Packaging Configuration->Root filesystem type進行文件系統類型選擇,這里使用INITRD類型;

3.在petalinux-config->u-boot Configuration → u-boot script configuration 中的QSPI\OSPI和JTAG配置啟動腳本中的偏移位置,這個需要和分區對應起來;

4.在u-boot的配置中配置BootSrc的起始位置,命令是petalinux-config -c u-boot;

編譯打包
$petalinux-build
$petalinux-package boot --plm --psmfw --u-boot --dtb --kernel –force
燒錄
使用vitis,在菜單中選擇[Vitis]→[Program Flash],將boot.pdi替換成petalinux工程目錄下的image/linux/BOOT.BIN

啟動
根據UG1366將VCK190配置成QSPI32啟動方式進行啟動,具體如下:

如果您了解更多關于AMD器件在QSPI Flash引導Petalinux的應用,歡迎聯系:
simonyang@comtech.cn
charlesxu@comtech.cn

