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

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

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

在Vitis中通過PSU DDR執(zhí)行MicroBlaze應(yīng)用

OpenFPGA ? 來源:XILINX開發(fā)者社區(qū) ? 2023-06-26 09:14 ? 次閱讀

MicroBlaze CPU 是可修改的拖入式預(yù)設(shè) 32 位/64 位 RISC 微處理器配置系列。

MicroBlaze 處理器能滿足眾多多樣化的應(yīng)用程序的不同需求,惠及工業(yè)、醫(yī)療、汽車、消費品和通信市場。MicroBlaze 使用哈佛 (Harvard) 架構(gòu),此架構(gòu)的 PL 內(nèi)通常包含雙 LMB BRAM。

但在本篇博文中,我們將探討如何在 Zynq UltraScale ZCU104 開發(fā)板上通過 PSU DDR 執(zhí)行 MicroBlaze 應(yīng)用。

退出復(fù)位時,MicroBlaze 將從 MicroBlaze 配置中的 C_BASE_VECTORS 參數(shù)內(nèi)指定的存儲器地址提取其指令。在本例中,此 C_BASE_VECTORS 將設(shè)置為 PSU DDR 內(nèi)的某個區(qū)域。

但根據(jù)采用的啟動流程,這樣可能導(dǎo)致潛在問題,即 PSU DDR 可能無法先于 PL 完成配置。這可能導(dǎo)致 MicroBlaze 掛起。為避免此現(xiàn)象,我們可以使用 MicroBlaze 上的“Reset Mode”(復(fù)位模式)信號

07255310-13b8-11ee-962d-dac502259ad0.png

在上表中,可以看到各種 reset_mode 配置。最適合我們的用例的配置為“01”,其中 MicroBlaze 將保持處于復(fù)位狀態(tài),直至我們準(zhǔn)備就緒為止。我們將在 PSU 上通過 EMIO 來使用 GPIO 對 MicroBlaze 進行解復(fù)位。

創(chuàng)建硬件

Vivado IP integrator 塊設(shè)計如下所示:

076fd67e-13b8-11ee-962d-dac502259ad0.png

用戶可以根據(jù)自己認(rèn)為合適的方式來自定義設(shè)計。

關(guān)鍵組件配置如下所述。

MicroBlaze 配置:

在 Vivado IP integrator 中使用“Block Automation”(塊自動化設(shè)置)工具來對 MicroBlaze 進行初始配置,如下所示。此處移除了本地存儲器,改為使用 64K 高速緩存:

0784ee4c-13b8-11ee-962d-dac502259ad0.png

要啟用 reset_mode 和 wakeup 管腳,用戶需在 MicroBlaze 配置中選中“Enable Discrete Ports”以啟用離散端口

07b9e732-13b8-11ee-962d-dac502259ad0.png

在 Zynq UltraScale PS 配置中,啟用兩個從端口;一個用于存儲器,另一個用于外設(shè):

07c73a7c-13b8-11ee-962d-dac502259ad0.png

通過 EMIO 啟用 GPIO,這樣就可以控制 MicroBlaze 的 wakeup 管腳:

07f32e3e-13b8-11ee-962d-dac502259ad0.png

我們還可訪問已從 MicroBlaze 啟用的所有 Zynq UltraScale IP。為此,請啟用“Address Fragmentation”(地址分段):

081efac8-13b8-11ee-962d-dac502259ad0.png

在上文中我們討論了復(fù)位模式。接下來,MicroBlaze 將保持復(fù)位狀態(tài),直至我們準(zhǔn)備就緒為止。

要使 MicroBlaze 保持復(fù)位,可以使用 IP 目錄中的“Constant IP”:

0848139a-13b8-11ee-962d-dac502259ad0.png

最后,連接 GPIO 和 Constant IP:

0854a8a8-13b8-11ee-962d-dac502259ad0.png

MicroBlaze 地址映射如下所示:

08bec346-13b8-11ee-962d-dac502259ad0.png

用戶可以右鍵單擊地址段,在地址映射中添加或排除地址段。

此操作適用于硬件配置。我們可以使用“Generate the Output Products”(生成輸出文件)、“Create the HDL wrapper”(創(chuàng)建 HDL 封裝文件)和“Generate the Bitstream”(生成比特流),然后導(dǎo)出硬件。

這將生成 XSA 以供在 Vitis 中用于生成我們的軟件。

創(chuàng)建軟件:

Vitis IDE 可用于生成 MicroBlaze 應(yīng)用。Vitis 還將自動創(chuàng)建啟動鏡像,包括 FSBL 和 PMUFW。

但由于我們想要從 FSBL 控制 GPIO EMIO,因此我們選擇不使用工具來生成啟動鏡像。

08f2344c-13b8-11ee-962d-dac502259ad0.png

生成 MicroBlaze Hello World 應(yīng)用:

091cfc90-13b8-11ee-962d-dac502259ad0.png0928327c-13b8-11ee-962d-dac502259ad0.png

我們可以添加新工程應(yīng)用,如下所示。例如,對于 Zynq FSBL:

0951a526-13b8-11ee-962d-dac502259ad0.png097ddca4-13b8-11ee-962d-dac502259ad0.png

注釋:FSBL 不支持 64 位到 32 位交接。因此,由于 MicroBlaze 為 32 位,我們也應(yīng)將 FSBL 設(shè)置為 32 位。

09b61790-13b8-11ee-962d-dac502259ad0.png09c347b2-13b8-11ee-962d-dac502259ad0.png

針對 PMUFW 重復(fù)上述操作:

09eb9af0-13b8-11ee-962d-dac502259ad0.png0a1f9724-13b8-11ee-962d-dac502259ad0.png

可看到所有應(yīng)用工程如下所示:

0a49bfae-13b8-11ee-962d-dac502259ad0.png

由于我們已將 PS UART 添加到 MicroBlaze 地址映射中,因此可在 BSP 中將其用于 STDIN/OUT。

0a62e0a6-13b8-11ee-962d-dac502259ad0.png0a95c426-13b8-11ee-962d-dac502259ad0.png

此處可以看到 MicroBlaze Hello World 連接器

0adb7cdc-13b8-11ee-962d-dac502259ad0.png

其布局位置為 DDR 基址 (0x00000000) 處。用戶創(chuàng)建啟動鏡像時,需牢記此地址,以免應(yīng)用程序發(fā)生重疊。

通過 SD 卡進行編程

首先,更新 FSBL。

我們可以使用 Xil_Out32 API 來切換 GPIO。

將 xil_io 頭文件添加到 xfsbl_handoff.c 文件:

0b0b63fc-13b8-11ee-962d-dac502259ad0.png

將此添加到 XFsbl_HandoffExit 函數(shù)

0b26647c-13b8-11ee-962d-dac502259ad0.png

同時啟用 FSBL 調(diào)試信息

0b506128-13b8-11ee-962d-dac502259ad0.png

創(chuàng)建啟動鏡像:

0ba903f0-13b8-11ee-962d-dac502259ad0.png

移除 FSBL 和 PMUFW,并使用正確的鏡像類型重新添加。

請確保分區(qū)鏡像順序正確(使用上下控件來調(diào)整其順序)。

0bedec9a-13b8-11ee-962d-dac502259ad0.png0c0eff84-13b8-11ee-962d-dac502259ad0.png

注釋:由于此處共享相同 UART,用戶可以在 Hello World 應(yīng)用中布局延遲。

通過 JTAG 進行編程:

0c5437e8-13b8-11ee-962d-dac502259ad0.png0c88ce72-13b8-11ee-962d-dac502259ad0.png

這樣可看到如下輸出:

0cb2b124-13b8-11ee-962d-dac502259ad0.png






審核編輯:劉清

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

    關(guān)注

    38

    文章

    7366

    瀏覽量

    163094
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    697

    瀏覽量

    64936
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2221

    瀏覽量

    81983
  • PSU
    PSU
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    11814

原文標(biāo)題:【Vivado那些事兒】在Vitis中通過 PSU DDR 執(zhí)行 MicroBlaze 應(yīng)用

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

收藏 人收藏

    評論

    相關(guān)推薦

    MicroBlaze串口設(shè)計

    本系統(tǒng),Basys3的MicroBlaze模塊調(diào)用基于AXI協(xié)議的UART IP核,通過AXI總線實現(xiàn)MicroBlaze-UART之間的通信,完成串口打印。
    發(fā)表于 08-02 09:32 ?1269次閱讀
    <b class='flag-5'>MicroBlaze</b>串口設(shè)計

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    的工程。 首先在更新之前需要將舊版工程更新到vitis2023.2的classic Vitis IDE,否則在執(zhí)行更新命令是會產(chǎn)生警告,這個警告也會導(dǎo)致后續(xù)更新失敗。如下: 更新到vitis
    發(fā)表于 03-24 17:14

    vivado下外部邏輯和MicroBlaze交換數(shù)據(jù)

    的方式是外部邏輯通過AXI4將數(shù)據(jù)寫到DDR3,然后microblaze將數(shù)據(jù)從DDR3讀出
    發(fā)表于 03-21 14:01

    DDR3 SDRAM的簡單代碼如何編寫

    使用microblaze處理器。我必須通過DDR3內(nèi)存發(fā)送一些固定值,如8位數(shù)據(jù)(X'FF'),即我將該數(shù)據(jù)寫入Genesys2 DDR3內(nèi)存并從內(nèi)存
    發(fā)表于 05-05 15:29

    使用Vitis EBAZ4205(ZYNQ)礦機上實現(xiàn)"Hello World!"

    ZYNQ 設(shè)置串口引腳為 24, 25 。另外一個就是需要設(shè)置 ZYNQ 的DDR3,EBAZ4205 上用的DDR3 芯片型號是 EM6GD16EWKG-12H ,
    發(fā)表于 03-06 22:59

    請問如何通過MicroBlaze訪問BRAM?

    嗨,大家好,我正在研究Vivado 2014.4,Xilinx KC705。我需要通過Microblaze讀取存儲BRAM(coe文件)的數(shù)據(jù)進行計算。我是微博閱讀部分的新手。有人
    發(fā)表于 05-20 08:38

    【正點原子FPGA連載】第一章MicroBlaze簡介--摘自【正點原子】達芬奇之Microblaze 開發(fā)指南

    使用Xilix提供的Vitis統(tǒng)一軟件平臺。Vivado我們可以Block Design搭建Mi
    發(fā)表于 10-16 16:28

    使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享

    。HLS 采用 C 和 C++ 描述并將它們轉(zhuǎn)換為自定義硬件 IP,完成后我們就可以 Vivado 項目中使用該IP。Vitis HLS創(chuàng)建一個新的 HLS 項目:通過從Linux 終端鍵入
    發(fā)表于 09-09 16:45

    PYNQMicroBlaze程序文件的加載過程

    PYNQ的base overlay 添加了MicroBlaze,通過MicroBlaze 來配置PMOD 和ardonio 接口并驅(qū)動外
    發(fā)表于 03-16 09:15 ?2197次閱讀

    怎么Vitis設(shè)定Kernel的頻率?

    Vitis中選擇平臺時可以看到默認(rèn)的時鐘頻率是300Mhz和500Mhz. Vitis Application Acceleration Development Flow 我們看到
    的頭像 發(fā)表于 06-12 14:19 ?3.7w次閱讀

    Xilinx Vitis 2020.1運行C程序時提示找不到microblaze_0

    Xilinx Vitis 2020.1里面運行C程序時提示找不到microblaze_0
    的頭像 發(fā)表于 02-16 16:21 ?3304次閱讀
    Xilinx <b class='flag-5'>Vitis</b> 2020.1運行C程序時提示找不到<b class='flag-5'>microblaze</b>_0

    Xilinx Vitis 2020.1里面MicroBlaze軟核的sleep函數(shù)卡死的問題

    Vitis里面創(chuàng)建了一個LwIP工程,調(diào)試的時候發(fā)現(xiàn),BRAM里面運行正常,但如果改到DDR3內(nèi)存里面運行,啟動時就會卡死sleep函
    的頭像 發(fā)表于 02-16 16:21 ?2627次閱讀
    Xilinx <b class='flag-5'>Vitis</b> 2020.1里面<b class='flag-5'>MicroBlaze</b>軟核的sleep函數(shù)卡死的問題

    Vitis調(diào)試ARM可信固件和U-boot

    本篇博文中,我們將探討如何在 Vitis 調(diào)試 Zynq UltraScale 器件啟動鏡像。這些啟動鏡像包括 ARM 可信固件 (ATF) 和 U-boot。
    的頭像 發(fā)表于 08-02 10:14 ?3283次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Vitis</b><b class='flag-5'>中</b>調(diào)試ARM可信固件和U-boot

    Vitis通過PSU DDR執(zhí)行MicroBlaze應(yīng)用

    MicroBlaze CPU 是可修改的拖入式預(yù)設(shè) 32 位/64 位 RISC 微處理器配置系列。
    的頭像 發(fā)表于 06-21 09:39 ?612次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Vitis</b><b class='flag-5'>中</b><b class='flag-5'>通過</b><b class='flag-5'>PSU</b> <b class='flag-5'>DDR</b><b class='flag-5'>執(zhí)行</b><b class='flag-5'>MicroBlaze</b>應(yīng)用

    UCC25640XLED照明PSU的優(yōu)勢

    電子發(fā)燒友網(wǎng)站提供《UCC25640XLED照明PSU的優(yōu)勢.pdf》資料免費下載
    發(fā)表于 08-27 10:21 ?0次下載
    UCC25640X<b class='flag-5'>在</b>LED照明<b class='flag-5'>PSU</b><b class='flag-5'>中</b>的優(yōu)勢