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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

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

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

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

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

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

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

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

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

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

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

5. 在XSCT里運(yùn)行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文件合并成一個(gè)mcs文件(這里相當(dāng)于XAPP1176里的Merging Two MCS Files)。

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

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

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

    關(guān)注

    16

    文章

    1796

    瀏覽量

    115018
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7518

    瀏覽量

    164072
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3793

    瀏覽量

    81215
  • MicroBlaze
    +關(guān)注

    關(guān)注

    3

    文章

    68

    瀏覽量

    21576

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    AXI QUAD SPI的綜合放置中遇到錯(cuò)誤

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

    Vivado無法放置任何時(shí)鐘資源

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

    [放置30-73]SPI接口IP,如何解決這個(gè)嚴(yán)重警告?

    - 工具:VIVADO 2017.1 -IP名稱:AXI Quad SPI - 目標(biāo)設(shè)備: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)是因?yàn)楹诵钠谕斎攵丝诒环胖迷贗OB中。這也在支持產(chǎn)品文檔中說明。不幸的是,我們無法將輸入
    發(fā)表于 11-12 14:41

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

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

    Axi quad spi怎么作為從屬設(shè)備?

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

    vivado hls axi接口問題

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

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

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

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

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

    基于Vivado/SDK 2018.3的XIP參考設(shè)計(jì)

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

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

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

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

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

    AMD MicroBlaze中通過AXI Timer獲取時(shí)間戳

    硬件的Vivado Block design設(shè)計(jì)中,添加AXI Timer
    的頭像 發(fā)表于 06-08 09:21 ?716次閱讀