MicroBlaze CPU 是可修改的拖入式預(yù)設(shè) 32 位/64 位 RISC 微處理器配置系列。
MicroBlaze 處理器能滿(mǎn)足眾多多樣化的應(yīng)用程序的不同需求,惠及工業(yè)、醫(yī)療、汽車(chē)、消費(fèi)品和通信市場(chǎng)。MicroBlaze 使用哈佛 (Harvard) 架構(gòu),此架構(gòu)的 PL 內(nèi)通常包含雙 LMB BRAM。但在本篇博文中,我們將探討如何在 Zynq UltraScale ZCU104 開(kāi)發(fā)板上通過(guò) PSU DDR 執(zhí)行 MicroBlaze 應(yīng)用。
退出復(fù)位時(shí),MicroBlaze 將從 MicroBlaze 配置中的 C_BASE_VECTORS 參數(shù)內(nèi)指定的存儲(chǔ)器地址提取其指令。在本例中,此 C_BASE_VECTORS 將設(shè)置為 PSU DDR 內(nèi)的某個(gè)區(qū)域。
但根據(jù)采用的啟動(dòng)流程,這樣可能導(dǎo)致潛在問(wèn)題,即 PSU DDR 可能無(wú)法先于 PL 完成配置。這可能導(dǎo)致 MicroBlaze 掛起。為避免此現(xiàn)象,我們可以使用 MicroBlaze 上的“Reset Mode”(復(fù)位模式)信號(hào)。
在上表中,可以看到各種 reset_mode 配置。最適合我們的用例的配置為“01”,其中 MicroBlaze 將保持處于復(fù)位狀態(tài),直至我們準(zhǔn)備就緒為止。我們將在 PSU 上通過(guò) EMIO 來(lái)使用 GPIO 對(duì) MicroBlaze 進(jìn)行解復(fù)位。
創(chuàng)建硬件:
Vivado IP integrator 塊設(shè)計(jì)如下所示:
用戶(hù)可以根據(jù)自己認(rèn)為合適的方式來(lái)自定義設(shè)計(jì)。
關(guān)鍵組件配置如下所述。
MicroBlaze 配置:
在 Vivado IP integrator 中使用“Block Automation”(塊自動(dòng)化設(shè)置)工具來(lái)對(duì) MicroBlaze 進(jìn)行初始配置,如下所示。此處移除了本地存儲(chǔ)器,改為使用 64K 高速緩存:
要啟用 reset_mode 和 wakeup 管腳,用戶(hù)需在 MicroBlaze 配置中選中“Enable Discrete Ports”以啟用離散端口:
在 Zynq UltraScale PS 配置中,啟用兩個(gè)從端口;一個(gè)用于存儲(chǔ)器,另一個(gè)用于外設(shè):
通過(guò) EMIO 啟用 GPIO,這樣就可以控制 MicroBlaze 的 wakeup 管腳:
我們還可訪(fǎng)問(wèn)已從 MicroBlaze 啟用的所有 Zynq UltraScale IP。為此,請(qǐng)啟用“Address Fragmentation”(地址分段):
在上文中我們討論了復(fù)位模式。接下來(lái),MicroBlaze 將保持復(fù)位狀態(tài),直至我們準(zhǔn)備就緒為止。
要使 MicroBlaze 保持復(fù)位,可以使用 IP 目錄中的“Constant IP”:
最后,連接 GPIO 和 Constant IP:
MicroBlaze 地址映射如下所示:
用戶(hù)可以右鍵單擊地址段,在地址映射中添加或排除地址段。
此操作適用于硬件配置。我們可以使用“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 還將自動(dòng)創(chuàng)建啟動(dòng)鏡像,包括 FSBL 和 PMUFW。
但由于我們想要從 FSBL 控制 GPIO EMIO,因此我們選擇不使用工具來(lái)生成啟動(dòng)鏡像。
生成 MicroBlaze Hello World 應(yīng)用:
我們可以添加新工程應(yīng)用,如下所示。例如,對(duì)于 Zynq FSBL:
注釋?zhuān)篎SBL 不支持 64 位到 32 位交接。因此,由于 MicroBlaze 為 32 位,我們也應(yīng)將 FSBL 設(shè)置為 32 位。
針對(duì) PMUFW 重復(fù)上述操作:
可看到所有應(yīng)用工程如下所示:
由于我們已將 PS UART 添加到 MicroBlaze 地址映射中,因此可在 BSP 中將其用于 STDIN/OUT。
此處可以看到 MicroBlaze Hello World 連接器:
其布局位置為 DDR 基址 (0x00000000) 處。用戶(hù)創(chuàng)建啟動(dòng)鏡像時(shí),需牢記此地址,以免應(yīng)用程序發(fā)生重疊。
首先,更新 FSBL。
我們可以使用 Xil_Out32 API 來(lái)切換 GPIO。
將 xil_io 頭文件添加到 xfsbl_handoff.c 文件:
將此添加到 XFsbl_HandoffExit 函數(shù)
同時(shí)啟用 FSBL 調(diào)試信息:
創(chuàng)建啟動(dòng)鏡像:
移除 FSBL 和 PMUFW,并使用正確的鏡像類(lèi)型重新添加。
請(qǐng)確保分區(qū)鏡像順序正確(使用上下控件來(lái)調(diào)整其順序)。
注釋?zhuān)河捎诖颂幑蚕硐嗤?UART,用戶(hù)可以在 Hello World 應(yīng)用中布局延遲。
通過(guò) JTAG 進(jìn)行編程:
這樣可看到如下輸出:
審核編輯:湯梓紅
-
cpu
+關(guān)注
關(guān)注
68文章
11011瀏覽量
215212 -
Xilinx
+關(guān)注
關(guān)注
73文章
2179瀏覽量
123918 -
微處理器
+關(guān)注
關(guān)注
11文章
2358瀏覽量
83619 -
RISC
+關(guān)注
關(guān)注
6文章
477瀏覽量
84532 -
Vitis
+關(guān)注
關(guān)注
0文章
147瀏覽量
7773
原文標(biāo)題:開(kāi)發(fā)者分享|在Vitis中通過(guò) PSU DDR 執(zhí)行 MicroBlaze 應(yīng)用
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
MicroBlaze串口設(shè)計(jì)

Vitis2023.2使用之—— updata to Vitis Unified IDE
vivado下外部邏輯和MicroBlaze交換數(shù)據(jù)
DDR3 SDRAM的簡(jiǎn)單代碼如何編寫(xiě)
使用Vitis 在EBAZ4205(ZYNQ)礦機(jī)上實(shí)現(xiàn)"Hello World!"
請(qǐng)問(wèn)如何通過(guò)MicroBlaze訪(fǎng)問(wèn)BRAM?
【正點(diǎn)原子FPGA連載】第一章MicroBlaze簡(jiǎn)介--摘自【正點(diǎn)原子】達(dá)芬奇之Microblaze 開(kāi)發(fā)指南
使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享
PYNQ中MicroBlaze程序文件的加載過(guò)程
怎么在Vitis中設(shè)定Kernel的頻率?
Xilinx Vitis 2020.1運(yùn)行C程序時(shí)提示找不到microblaze_0

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

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

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

UCC25640X在LED照明PSU中的優(yōu)勢(shì)

評(píng)論