RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

使用Vivado通過AXI Quad SPI實現(xiàn)XIP功能

Hack電子 ? 來源:AMD開發(fā)者社區(qū) ? 2024-10-29 14:23 ? 次閱讀

作者:Longley Zhang,AMD工程師;來源:AMD開發(fā)者社區(qū)

就地執(zhí)行(eXecute In Place,下面簡稱XIP),即芯片內(nèi)執(zhí)行,是指應用程序可以直接在非易失存儲器或閃存中取指然后譯碼、執(zhí)行,不必再把代碼讀到系統(tǒng)RAM中。它是使用共享內(nèi)存的擴展,以減少所需的總內(nèi)存量。AMD的軟核處理器Microblaze可以通過AXI Quad SPI IP實現(xiàn)XIP的功能。AMD提供參考設計XAPP1176(見Ref 1,Ref 2),介紹使用 Vivado 通過 AXI Quad SPI 進行就地執(zhí)行(XIP)。用戶可以通過這個參考設計了解Microblaze實現(xiàn)XIP功能的基本概念和設計思路。然而這篇文檔使用的Vivado版本是2013.2,這個版本已經(jīng)很舊了,文檔里面提到的一些工具(如:IMPACT) 以及命令(XMCSUTIL)在新版本的Vivado都已經(jīng)不支持了,并且XAPP1176里提供的bootloader比較復雜。

本博客提供了基于2023.2 Vivado的參考工程,展示如何使用Microblaze就地執(zhí)行(XIP)程序,并提供一個簡單的bootloader。

下面是工程創(chuàng)建流程和程序運行步驟:

1. 修改2023.2 AC701 Petalinux BSP里自帶的Vivado工程,使能AXI Quad SPI IP里的XIP模式。

或者創(chuàng)建一個基于AC701的Vivado工程運行,然后運行附件的tcl文件。

8a50db4e-95a6-11ef-a511-92fbcf53809c.png

2. 構(gòu)建Vivado工程,生成bit文件并導出包含bitstream的xsa文件。

3. 在Vitis里,基于導出的xsa文件創(chuàng)建platform工程,創(chuàng)建兩個工程,一個是bootloader,另外一個是XIP的用戶程序。

這個bootloader只是一個運行在BRAM里的簡單程序,作用是把PC跳轉(zhuǎn)到XIP程序的起始位置。

XIP程序可以是任何用戶程序,用戶需要在linker script里把.text等只讀的section放到QSPI flash的地址段,把.data/.bss等讀寫的section放到BRAM。

如果.data section里有已經(jīng)初始化的變量,用戶需要在用戶程序里把.data section復制到BRAM里。

4. 分別右鍵點擊bootloader工程和XIP工程里的src文件夾,導入附件的工程文件。(在本博客的工程里,bootloader工程文件在bootloader_ar的文件夾里,XIP工程文件在dhry_0文件夾里。)

5. 在XSCT里運行mb-objcopy把xip工程的elf文件轉(zhuǎn)換成bin文件(下面命令把dhry_0.elf轉(zhuǎn)換成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。

8a732bd6-95a6-11ef-a511-92fbcf53809c.png

7. 在Vivado里,通過菜單Tools -> Generate Write Memory Configuration File把download.bit和XIP工程的bin文件合并成一個mcs文件(這里相當于XAPP1176里的Merging Two MCS Files)。

8aa52ff0-95a6-11ef-a511-92fbcf53809c.png

8. 把生成的mcs文件燒寫到AC701的QSIP flash里,連接UART線,把AC701設置為QSPI flash啟動模式并上電啟動。這樣就能看到串口的打印輸出了,輸出內(nèi)容是DHRYSTONE測試的結(jié)果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 閃存
    +關注

    關注

    16

    文章

    1782

    瀏覽量

    114892
  • 存儲器
    +關注

    關注

    38

    文章

    7484

    瀏覽量

    163760
  • 程序
    +關注

    關注

    117

    文章

    3785

    瀏覽量

    81001
  • MicroBlaze
    +關注

    關注

    3

    文章

    68

    瀏覽量

    21548

原文標題:如何使用Microblaze 就地執(zhí)行(XIP)程序

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何將AXI VIP添加到Vivado工程中

    在這篇新博文中,我們來聊一聊如何將 AXI VIP 添加到 Vivado 工程中,并對 AXI4-Lite 接口進行仿真。隨后,我們將在仿真波形窗口中講解用于AXI4-Lite 傳輸事
    發(fā)表于 07-08 09:27 ?2002次閱讀

    請問CYW20829能否通過Quad SPI連接固件、用戶數(shù)據(jù)和Quad SPI SRAM?

    我計劃在下圖所示的配置中使用 CYW20829。 是否可以使用 Quad SPI 連接固件、用戶數(shù)據(jù)和 Quad SPI SRAM?
    發(fā)表于 07-03 06:25

    AXI QUAD SPI的綜合放置中遇到錯誤

    我在AXI QUAD SPI的綜合/放置中遇到以下錯誤我為ext_spi_clk創(chuàng)建了外部端口,為SPI_O創(chuàng)建了接口端口。[放置30-57
    發(fā)表于 10-18 14:37

    Vivado無法放置任何時鐘資源

    )無法通過放置階段,會產(chǎn)生大量的放置錯誤,如下所示。基本上,Vivado不能放置與時鐘相關的任何原語 -BUFG,BUFH,PLLE2_ADV,GTHE2_COMMON等。設計針對xc7vx690t
    發(fā)表于 11-02 11:32

    [放置30-73]SPI接口IP,如何解決這個嚴重警告?

    - 工具:VIVADO 2017.1 -IP名稱:AXI Quad SPI - 目標設備:Artix 7 - 消息:[放置30-73]寄存器'dsp / Load_Database
    發(fā)表于 11-02 11:34

    [放置30-73] axi_quad_spi版本3.2的寄存器'IO1_I_REG'的約束無效

    你好,我們正在收到執(zhí)行重要警告w.r.t. axi_quad_spi核心的MISO或Io1_i引腳。問題出現(xiàn)是因為核心期望輸入端口被放置在IOB中。這也在支持產(chǎn)品文檔中說明。不幸的是,我們無法將輸入
    發(fā)表于 11-12 14:41

    怎么使用AXI Quad SPI IP Core對帶有PROM文件的SPI Flash進行編程

    AXI總線,由AXI主機(PCIe)控制,從主機PC接收其事務。我的想法是能夠通過PCIe鏈路發(fā)送PROM bistream到使用新PROM文件對SPI閃存進行編程的
    發(fā)表于 03-14 13:53

    Axi quad spi怎么作為從屬設備?

    大家好。當我在zynq-7000中使用axi quad spi ip core作為從設備時,我遇到了一個問題。我將slave axi quad
    發(fā)表于 04-17 10:13

    vivado hls axi接口問題

    你好!如果我想使用vivado hls來合成具有axi流接口的代碼,是否有必須遵循的標準編碼風格?
    發(fā)表于 04-21 10:23

    如何使用Vivado功能創(chuàng)建AXI外設

    了解如何使用Vivado的創(chuàng)建和封裝IP功能創(chuàng)建可添加自定義邏輯的AXI外設,以創(chuàng)建自定義IP。
    的頭像 發(fā)表于 11-29 06:48 ?7136次閱讀
    如何使用<b class='flag-5'>Vivado</b><b class='flag-5'>功能</b>創(chuàng)建<b class='flag-5'>AXI</b>外設

    如何使用Vivado Design Suite IP Integrator的調(diào)試AXI接口

    了解如何使用Vivado Design Suite IP Integrator有效地調(diào)試AXI接口。 本視頻介紹了如何使用該工具的好處,所需的調(diào)試步驟和演示。
    的頭像 發(fā)表于 11-29 06:00 ?4013次閱讀

    基于Vivado/SDK 2018.3的XIP參考設計

    Without External Memory,把代碼和只讀數(shù)據(jù)放在QSPI Flash中運行程序,這就是execute in place (XIP)。 上述XIP參考設計工作正常,但是只更新到了Vivado
    的頭像 發(fā)表于 10-09 10:09 ?3334次閱讀

    怎么樣利用AXI Quad SPI快速打通Linux至PL端SPI從設備?

    [導讀] 前面寫過篇介紹ZYNQ基本情況的文章,今天來肝一篇實戰(zhàn)文章介紹AXI quad SPI 使用方法,如果你正使用ZYNQ的這個IP,希望對你有所幫助。 初識AXI
    的頭像 發(fā)表于 04-09 17:45 ?7998次閱讀
    怎么樣利用<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>從設備?

    【ZYNQ實戰(zhàn)】利用AXI Quad SPI快速打通Linux至PL端SPI從設備

    [導讀] 前面寫過篇介紹ZYNQ基本情況的文章,今天來肝一篇實戰(zhàn)文章介紹AXI quad SPI 使用方法,如果你正使用ZYNQ的這個IP,希望對你有所...
    發(fā)表于 01-26 17:01 ?7次下載
    【ZYNQ實戰(zhàn)】利用<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>從設備

    AMD MicroBlaze中通過AXI Timer獲取時間戳

    硬件的Vivado Block design設計中,添加AXI Timer
    的頭像 發(fā)表于 06-08 09:21 ?690次閱讀
    RM新时代网站-首页