作者:Longley Zhang,AMD工程師;來源:AMD開發者社區
就地執行(eXecute In Place,下面簡稱XIP),即芯片內執行,是指應用程序可以直接在非易失存儲器或閃存中取指然后譯碼、執行,不必再把代碼讀到系統RAM中。它是使用共享內存的擴展,以減少所需的總內存量。AMD的軟核處理器Microblaze可以通過AXI Quad SPI IP實現XIP的功能。AMD提供參考設計XAPP1176(見Ref 1,Ref 2),介紹使用 Vivado 通過 AXI Quad SPI 進行就地執行(XIP)。用戶可以通過這個參考設計了解Microblaze實現XIP功能的基本概念和設計思路。然而這篇文檔使用的Vivado版本是2013.2,這個版本已經很舊了,文檔里面提到的一些工具(如:IMPACT) 以及命令(XMCSUTIL)在新版本的Vivado都已經不支持了,并且XAPP1176里提供的bootloader比較復雜。
本博客提供了基于2023.2 Vivado的參考工程,展示如何使用Microblaze就地執行(XIP)程序,并提供一個簡單的bootloader。
下面是工程創建流程和程序運行步驟:
1. 修改2023.2 AC701 Petalinux BSP里自帶的Vivado工程,使能AXI Quad SPI IP里的XIP模式。
或者創建一個基于AC701的Vivado工程運行,然后運行附件的tcl文件。
2. 構建Vivado工程,生成bit文件并導出包含bitstream的xsa文件。
3. 在Vitis里,基于導出的xsa文件創建platform工程,創建兩個工程,一個是bootloader,另外一個是XIP的用戶程序。
這個bootloader只是一個運行在BRAM里的簡單程序,作用是把PC跳轉到XIP程序的起始位置。
XIP程序可以是任何用戶程序,用戶需要在linker script里把.text等只讀的section放到QSPI flash的地址段,把.data/.bss等讀寫的section放到BRAM。
如果.data section里有已經初始化的變量,用戶需要在用戶程序里把.data section復制到BRAM里。
4. 分別右鍵點擊bootloader工程和XIP工程里的src文件夾,導入附件的工程文件。(在本博客的工程里,bootloader工程文件在bootloader_ar的文件夾里,XIP工程文件在dhry_0文件夾里。)
5. 在XSCT里運行mb-objcopy把xip工程的elf文件轉換成bin文件(下面命令把dhry_0.elf轉換成dhry_0.b)。
mb-objcopy -O binary -R .vectors.reset -R .vectors.sw_exception -R .vectors.interrupt -R .vectors.debug_sw_break -R .vectors.hw_exception dhry_0.elf dhry_0.b
6. 在Vitis里,通過菜單Vitis -> Program Device把bootloader.elf更新到bit文件里,生成新的download.bit。
7. 在Vivado里,通過菜單Tools -> Generate Write Memory Configuration File把download.bit和XIP工程的bin文件合并成一個mcs文件(這里相當于XAPP1176里的Merging Two MCS Files)。
8. 把生成的mcs文件燒寫到AC701的QSIP flash里,連接UART線,把AC701設置為QSPI flash啟動模式并上電啟動。這樣就能看到串口的打印輸出了,輸出內容是DHRYSTONE測試的結果。
-
閃存
+關注
關注
16文章
1805瀏覽量
115145 -
存儲器
+關注
關注
38文章
7530瀏覽量
164403 -
程序
+關注
關注
117文章
3798瀏覽量
81457 -
MicroBlaze
+關注
關注
3文章
68瀏覽量
21609
原文標題:如何使用Microblaze 就地執行(XIP)程序
文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何將AXI VIP添加到Vivado工程中
請問CYW20829能否通過Quad SPI連接固件、用戶數據和Quad SPI SRAM?
在AXI QUAD SPI的綜合放置中遇到錯誤
Vivado無法放置任何時鐘資源
[放置30-73]SPI接口IP,如何解決這個嚴重警告?
[放置30-73] axi_quad_spi版本3.2的寄存器'IO1_I_REG'的約束無效
怎么使用AXI Quad SPI IP Core對帶有PROM文件的SPI Flash進行編程
Axi quad spi怎么作為從屬設備?
如何使用Vivado Design Suite IP Integrator的調試AXI接口
基于Vivado/SDK 2018.3的XIP參考設計
怎么樣利用AXI Quad SPI快速打通Linux至PL端SPI從設備?
![怎么樣利用<b class='flag-5'>AXI</b> <b class='flag-5'>Quad</b> <b class='flag-5'>SPI</b>快速打通Linux至PL端<b class='flag-5'>SPI</b>從設備?](https://file.elecfans.com/web1/M00/EA/50/pIYBAGBwI7WAa6LiAAA5tX6ltqQ100.png)
【ZYNQ實戰】利用AXI Quad SPI快速打通Linux至PL端SPI從設備
![【ZYNQ實戰】利用<b class='flag-5'>AXI</b> <b class='flag-5'>Quad</b> <b class='flag-5'>SPI</b>快速打通Linux至PL端<b class='flag-5'>SPI</b>從設備](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論