<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

AMD FPGA的MicroBlaze固化過程詳解

Comtech FPGA ? 來源:FPGA FAE技術分享選集 ? 2024-03-21 17:08 ? 次閱讀

一、簡介

MicroBlaze是AMD FPGA推出的一款32/64位軟核嵌入式處理器,其高度可配置,可滿足通信、工業、醫療、汽車、以及消費類各場景需求。MicroBlaze是AMD FPGA嵌入式產品的重要組成部件,具有多功能互聯系統,可支持各種嵌入式應用。

MicroBlaze的易用性使得其開發如AMD其它嵌入式SoCFPGA一樣簡單??蛻粼诖罱ê琈icroBlaze IP的工程后,經常遇到的問題是,如何將.bit文件與應用程序.elf文件結合,固化到存儲器件中(一般指串型/并行FLASH)。下面將結合原理與固化過程,詳細描述此問題。

二、疑難理解

首先,要理解的一點是,AMD FPGA在配置了適當的啟動模式后,上電即會按該模式去加載配置文件。以7系列FPGA為例,假設設置模式引腳M[2:0]=3’b001,上電后FPGA會以MasterSPI方式嘗試從FLASH加載配置文件,其與工程是否含有MicroBlaze IP無關。其次,客戶經常遇到的問題是,含MicroBlaze IP的工程中,需要考慮程序的運行地址空間(涉及DDR MIG IP);需要考慮應用程序的加載(涉及AXI Quad SPI IP),在固化時某些選項配置錯誤,導致系統無法啟動。

三、固化過程詳解

思考一個問題,在含有MicroBlaze的設計中,DDR MIG IP和AXI Quad SPI IP必須同時存在嗎?帶著這個疑問,下面詳細講解MicroBlaze兩種應用場景下的固化過程。演示過程以7系列FPGA器件,以vitisv2022.2版本工具,以SPI FLASH存儲器件為例,其它系列器件和工具版本類似。

場景一,MicroBlaze運行簡單的應用。如GPIO控制,IIC、UART等低速嵌入式總線應

用,或者負責一些復雜IP和外圍IC的初始化輔助性工作。此時,FPGA固化固件組成形式如下圖所示。

cf394582-e761-11ee-a297-92fbcf53809c.png ?

在這個場景下,vivado生成的fpga.bit文件和vitis生成的應用程序app.elf文件,合并為download.bit文件,燒錄到FLASH的起始地址0x0中。此設計中,不需要借助AXI Quad SPI IP的應用搬運能力,對是否含有DDR MIG IP也無要求。下面展示該固化流程:

為增加迷惑性,設計中含有DDR MIG IP。vivado生成.bit文件后,導出.xsa文件,創建vitis軟件工程。應用程序的ld腳本默認Memory Region Mapping指向外部DDR。

cf532ed4-e761-11ee-a297-92fbcf53809c.png ?

點擊Program Device菜單生成download.bit文件將出現address mapped error錯誤,無法生成download.bit文件。

cf6aa9ba-e761-11ee-a297-92fbcf53809c.png

注意:

需要選擇應用程序生成的.elf文件(如圖示的hello.elf文件),而不是vitis默認的bootloader。

cf789b10-e761-11ee-a297-92fbcf53809c.png ?

此時需要修改工程ld腳本文件,將MemoryRegion Mapping設置為local bram,如下圖所示

cf891b5c-e761-11ee-a297-92fbcf53809c.png ?

再次點擊Program Device菜單生成download.bit文件即可。由于一般情況下,為節省FPGA block ram資源,用于MicroBlaze的local bram并不會設置很大,可使用下圖所示優化選項,減小固件的大小。

cfa53d3c-e761-11ee-a297-92fbcf53809c.png ? cfc4a578-e761-11ee-a297-92fbcf53809c.png ?

生成download.bit文件后,JTAG模式下,燒錄固件到FLASH中,注意Offset項為0x0。

cfe561fa-e761-11ee-a297-92fbcf53809c.png ?

燒錄過程log記錄:

d0013588-e761-11ee-a297-92fbcf53809c.png ?

斷電,將啟動模式設置為Master SPI,系統啟動log如下:

d015a77a-e761-11ee-a297-92fbcf53809c.png

上述展示了一個簡單的應用程序的固件固化過程。

場景二,MicroBlaze運行復雜的應用。如輕量級的網絡協議棧LwIP,加載嵌入式文件

系統等。此場景一般生成的固件達到MB級別,對內存也有一定需求,需要借助DDR來運行應用程序。此時,FPGA固化固件組成形式如下圖所示

d03b16e0-e761-11ee-a297-92fbcf53809c.png ?

在這個場景下,vivado生成的fpga.bit文件和vitis生成的應用引導程序bootloader.elf文件,合并為download.bit文件,燒錄到FLASH的起始地址0x0中;復雜的應用程序app.elf文件,燒錄到FLASH的指定offset地址中。

此設計中,必須借助AXI Quad SPI IP的應用搬運能力,復雜應用程序一般對DDR也有要求,也即設計需要DDR MIG IP。下面展示該固化流程:

首先在vivado中,需要對AXI Quad SPI IP做正確的設置,選擇FLASH的型號,使能STARTUPPrimitive選項。

d047a13a-e761-11ee-a297-92fbcf53809c.png ?

然后創建bootloader引導工程,如下

d0632fa4-e761-11ee-a297-92fbcf53809c.png

vitis工程引導界面提示修改合適的應用程序offset address。

d09a40ac-e761-11ee-a297-92fbcf53809c.png ?

查看bootloader工程的ld腳本,確定bootloader工程的Memory Region Mapping指向為local bram。

d0cadc80-e761-11ee-a297-92fbcf53809c.png ?

同時需要修改應用程序在FLASH中的程序地址,根據FLASH的容量大小,選擇合適的偏移地址。這里修改為0x800000(起始地址偏移8MB空間)。

d0e4db62-e761-11ee-a297-92fbcf53809c.png

點擊Program Device菜單生成download.bit文件,注意選擇的是bootloader.elf文件。

備注:

vitis IDE中,此菜單項包含Generate和Program選項,一般JTAG未連接板卡時選擇Generate選項;連接JTAG在線調試時,選擇Program。但是無論是否連接JTAG,兩個選項都能生成download.bit文件。

d0fd1d08-e761-11ee-a297-92fbcf53809c.png ?

將生成的download.bit文件燒錄到FLASH的0x0地址中。

d10abcc4-e761-11ee-a297-92fbcf53809c.png ?

斷電,將啟動模式設置為Master SPI ,可驗證bootloader是否燒錄成功,其啟動log如上。

log顯示bootloader將從00800000地址中加載應用程序固件,證明bootloader燒錄成功。

接下來創建應用工程,應用工程較復雜,所需運行內存較大,應用工程的ld腳本文件Memory Region Mapping指向外部DDR。

d117e386-e761-11ee-a297-92fbcf53809c.pngd12ed19a-e761-11ee-a297-92fbcf53809c.png

點擊Program Flash Memory菜單,將應用程序hello.elf燒錄到FLASH中,注意Offset項為之前bootloader工程設置的0x800000,且需要勾選SREC轉換選項。

d1434774-e761-11ee-a297-92fbcf53809c.png

燒錄過程輸出log記錄。

斷電,將啟動模式設置為Master SPI,系統啟動log如下:

d175bfe2-e761-11ee-a297-92fbcf53809c.png

上述演示了一個稍復雜的應用程序的固件固化過程。

四、總結與拓展

1. 通過燒錄過程可發現,場景二的bootloader引導應用程序即相當于場景一的用戶程序;

2. 場景二的系統啟動速度相對場景一較慢,AMD FPGA提供了一種加速方法,詳細參考

https://support.xilinx.com/s/article/75646?language=en_US

3. 從2019.2版本工具開始,FLASH的驅動程序發生了變更,詳細參考

https://support.xilinx.com/s/article/73329?language=en_US

4. 從SDK到Vitis,上述固化過程原理不變,但一些菜單選項細節稍有不同;

5. 從UltraScale系列開始支持的SPIx8模式,細節上有一些區別,詳細參考官方手冊UG570。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1608

    文章

    21367

    瀏覽量

    594653
  • DDR
    DDR
    +關注

    關注

    11

    文章

    687

    瀏覽量

    64464
  • 嵌入式處理器

    關注

    0

    文章

    251

    瀏覽量

    30542
  • GPIO
    +關注

    關注

    16

    文章

    1149

    瀏覽量

    50737
  • SPI Flash
    +關注

    關注

    1

    文章

    13

    瀏覽量

    10255

原文標題:AMD FPGA的MicroBlaze固化流程

文章出處:【微信號:Comtech FPGA,微信公眾號:Comtech FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    搭建一個通用MicroBlaze最小系統+一個外設

    MicroBlazeAMD-Xilinx提供的一個可以在FPGA中運行的嵌入式軟核IP,其本質是一個32位RISC處理器軟核。
    發表于 08-26 10:21 ?1321次閱讀

    MicroBlaze MCS和MicroBlaze的區別在哪?

    在Block Design中查找IP時輸入Microblaze,就會發現下面幾種IP,我們常規使用的就是第一個IP,是一個可以自定義外設的軟核,但是第三個MicroBlaze MCS到底是個啥,我們接下來詳解。
    的頭像 發表于 08-23 09:07 ?810次閱讀
    <b class='flag-5'>MicroBlaze</b> MCS和<b class='flag-5'>MicroBlaze</b>的區別在哪?

    【Artix-7 50T FPGA試用體驗】Vivado程序固化

    FPGA硬件程序就固化到外部配置存儲器中了,下次上電就可以通過QSPI自啟動。需要注意的是板載的配置跳線帽需要設置到QSPI模式。2、 SDK嵌入式軟件程序固化 在嵌入式使用過程中,通
    發表于 12-27 20:22

    關于使用232下載固化FPGA程序,尋求外包

    需求:不通過JTAG,使用232下載程序完成固化。具體過程如下:使用232下載jic或者sof文件到RAM,通過FPGA中轉進入EPCS或者直接進入EPCS完成程序固化。要求不使用ma
    發表于 10-11 16:00

    Virtex-5中的Microblaze和Capture-Restore過程出現問題

    - 恢復過程中訪問的變量值突然變為零。此變量損壞平均每10-15次恢復事件發生一次。其余的設計似乎完美無缺。問題:a)Microblaze設計的任何部分是否對捕獲 - 恢復過程敏感?b)任何其他想法
    發表于 01-10 11:00

    如何使用PowerPC或Microblaze重新配置FPGA?

    是否有任何教程顯示如何使用PowerPC或microblaze作為重配置控制器?我目前使用Impact工具使用部分比特流(ISE和Planahead 12.1)重新配置FPGA,但我想要一個重配
    發表于 01-22 11:05

    采用FPGAMicroBlaze進行嵌入式系統設計

    本文采用FPGAMicroBlaze 進行嵌入式系統設計,文中在分析了FFT算法后,描述了運算的蝶形單元,地址生成單元及FFT的實現過程。從實際設計出發,完成了基于FPGA的單精度
    發表于 02-22 07:36

    基于MicroBlaze 軟核的FPGA 片上系統設計

    分析軟處理器MicroBlaze 的體系結構, 給出MicroBlaze 內核在軟件無線電系統中的應用, 實現SOPC(可編程系統芯片)。
    發表于 04-15 10:16 ?22次下載

    基于MicroBlaze軟核的FPGA片上系統設計

    分析軟處理器MicroBlaze 的體系結構,給出MicroBlaze 內核在軟件無線電系統中的應用,實現SOPC
    發表于 11-30 15:02 ?31次下載

    基于MicroBlaze軟核的FPGA片上系統設計

    摘要: 分析軟處理器MicroBlaze的體系結構,給出MicroBlaze內核在軟件無線電系統中的應用,實現SOPC(可編程系統芯片)。 關鍵詞: FPGA IP Core SOP
    發表于 06-20 10:47 ?3120次閱讀
    基于<b class='flag-5'>MicroBlaze</b>軟核的<b class='flag-5'>FPGA</b>片上系統設計

    基于MicroBlaze處理器的BPIFlash操作

    本文主要介紹MicroBlazeFPGA中的應用,并結合實際工程介紹如何設計MicroBlaze微處理器與BPI Flash接口以及如何提高BPI Flash的燒寫速度,同時也簡單介紹利用
    發表于 11-17 09:41 ?3741次閱讀

    MicroBlaze性能詳解

    MicroBlaze是一個高度靈活可以配置的軟核。你可以根據你設計的需要,對MicroBlaze進行裁減,用最少的資源完成設計的需要。 MicroBlaze的基本特性: 32個32位的通用寄存器
    發表于 11-25 09:11 ?8195次閱讀

    FPGA的程序固化步驟簡析

    FPGA程序的固化,即掉電后再上電,程序仍能正常運行。
    發表于 07-19 16:41 ?1382次閱讀
    <b class='flag-5'>FPGA</b>的程序<b class='flag-5'>固化</b>步驟簡析

    TI AM57X FPGA MicroBlaze裸機案例開發

    此案例來源于:創龍科技測試板卡為:TISitara系列AM5728+XilinxArtix-7FPGA開發板前言本文主要介紹基于FPGA+MicroBlaze裸機案例的使用說明,適用開發環境
    發表于 05-23 16:56 ?10次下載

    AMD FPGAMicroBlaze固化流程詳解

    AMD FPGA在配置了適當的啟動模式后,上電即會按該模式去加載配置文件。以7系列FPGA為例,假設設置模式引腳M[2:0]=3’b001,上電后FPGA會以Master SPI方式嘗
    發表于 04-25 12:49 ?154次閱讀
    <b class='flag-5'>AMD</b> <b class='flag-5'>FPGA</b>中<b class='flag-5'>MicroBlaze</b>的<b class='flag-5'>固化</b>流程<b class='flag-5'>詳解</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>