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

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

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

multiboot什么意思 MultiBoot的功能簡介、流程介紹

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:Ingdan FPGA ? 作者:Ingdan FPGA ? 2021-08-04 16:32 ? 次閱讀

本文主要包含MultiBoot的功能簡介、流程介紹和工程實(shí)現(xiàn)幾個(gè)部分的講解。

我們先從它的功能介紹講起來;MultiBoot功能是大部分Xilinx FPGA可以實(shí)現(xiàn)的固有特性;其主要優(yōu)點(diǎn)如下所示:

1、我們可以把多個(gè)bitstream存儲(chǔ)在配置Flash中,通過MultiBoot功能來實(shí)現(xiàn)多個(gè)bitstream之間的動(dòng)態(tài)切換,從而達(dá)到使用FPGA來實(shí)現(xiàn)多種任務(wù);

2、在一個(gè)工程里面實(shí)現(xiàn)多個(gè)功能模塊,而每個(gè)功能模塊不需要同時(shí)運(yùn)行的情況,可以通過MultiBoot功能使用相對小規(guī)模的FPGA來實(shí)現(xiàn)其功能,從而提高性價(jià)比;

3、MultiBoot和Fallback可以支持實(shí)現(xiàn)FPGA遠(yuǎn)程在線升級(jí),當(dāng)升級(jí)bit有錯(cuò)誤可以觸發(fā)Fallback來返回到Golden Image去正常運(yùn)行。

Golden Image里面正常會(huì)包含F(xiàn)PGA實(shí)現(xiàn)的基本功能,例如外設(shè)配置和初始化、遠(yuǎn)程升級(jí)等等客戶需要的基本功能;如果Golden Image損壞的情況下,F(xiàn)PGA是無法工作的,需要返回工廠重新手動(dòng)燒寫bit文件到Flash中。

Golden Image設(shè)計(jì)要求主要包含下面幾點(diǎn):

1、IPROG(Internal program) command在Golden Image里面可以通過設(shè)置bitstream setting里面的next configuration address (BITSTREAM.CONFIG.NEXT_CONFIG_ADDR),或者在HDL代碼使用ICAPE3原語來設(shè)定加載地址值;通過設(shè)置BITSTREAM.CONFIG.NEXT_CONFIG_REBOOTDISABLE來把

IPROG command關(guān)掉,在這種情況下上電后會(huì)直接去加載Golden Image;

2、跳轉(zhuǎn)地址寄存器WBSTAR(warm boot start address)可以在bitstream或者ICAP里面來設(shè)定;

3、MultiBoot Image必須存儲(chǔ)在WBSTAR設(shè)置的Flash地址位置;

4、Watchdog timer包含configuration monitor和user logic monitor兩種模式;在配置模式下面,Timer times out情況下,配置電路會(huì)去加載fallback bitstream。Watchdog Timer可以在bitstream options里面使能。

Golden Image是從Flash中的0地址開始存儲(chǔ);其幀頭會(huì)包括WBSTAR(next_config_addr)寄存器里面指定的upper address space等信息。FPGA器件上電后會(huì)從0地址開始加載Golden Image后,會(huì)根據(jù)里面的設(shè)定來決定加載Golden Image還是直接跳轉(zhuǎn)到MultiBoot Image存儲(chǔ)地址去執(zhí)行MultiBoot Image;當(dāng)MultiBoot Image加載時(shí)候遇到錯(cuò)誤,F(xiàn)allback電路會(huì)觸發(fā)去重新從0地址去加載Golden Image。

MultiBootImage是從設(shè)定好的upper address space去加載運(yùn)行;如果加載出現(xiàn)問題,F(xiàn)allback電路會(huì)去加載Golden Image。我們可以在Golden Image里面去修復(fù)Multiboot Image里面的錯(cuò)誤等等問題。所以說MultiBoot Image里面運(yùn)行的就是我們要實(shí)現(xiàn)的具體業(yè)務(wù)功能,可以是多個(gè)Multiboot Image。

Golden Image設(shè)計(jì)要求主要包含下面幾點(diǎn):

1、WBSTAR里面的值要指向MultiBoot存儲(chǔ)位置;

2、Watchdog Timer功能要bitstream options里面使能;

3、代碼里面可以通過IPROG命令去運(yùn)行ICAPE3來跳轉(zhuǎn)想要運(yùn)行其他的MultiBoot Image。

在配置過程中遇到IDCODE error、CRC error、Watchdog timer timeout error、BPI address wraparound error情況會(huì)觸發(fā)fallback。Fallback功能可以通過使能bitstream.config.configfallback enable里面的ConfigFallback選項(xiàng)來實(shí)現(xiàn)。當(dāng)fallback運(yùn)行時(shí),Watchdog TimerIPROG是disable的;另外當(dāng)fallback重新配置FPGA出錯(cuò)情況下,配置電路會(huì)停止工作同時(shí)會(huì)把INIT_BDone保持為低電平。

MultiBoot功能可以通過設(shè)置下面bitstream里面的參數(shù)來實(shí)現(xiàn)。這些參數(shù)可以通過Tcl console或者寫入到XDC文件里面來實(shí)現(xiàn)其功能。

在前面介紹其功能作用和含義等等后,下面我們開始工程實(shí)現(xiàn)。

本人使用Vivado版本為2020.2;硬件基于米聯(lián)客設(shè)計(jì)的KU040板卡。先建立Golden Image的工程,里面包括HDL文件和XDC約束。

GoldenImage的工程里面代碼主要是把led1燈點(diǎn)亮。XDC里面包括IO約束信息等等,其中0x040000是Multiboot Image存放Flash里面的物理地址。

Multiboot Image led2的工程里面代碼主要是把led1燈點(diǎn)亮。XDC里面包括IO約束和配置約束信息等等,可以看到是和Golden Image工程里面約束是有差異的。

c9ddd5f4-f497-11eb-9bcf-12bb97331649.png

在工程建立完成后開始合并bit文件并燒入到板卡里面:

1、使用下面tcl去把兩個(gè)bit文件合為一個(gè)mcs文件;

c9fa355a-f497-11eb-9bcf-12bb97331649.png

2、通過Hardware Manager去燒入到板卡的Flash中;3、燒寫完成后選擇Boot from Configuration Memory Devive去加載FPGA。4、在FPGA加載后可以看到板卡上面LED2燈點(diǎn)亮。

5、在Hardware Device Properties的BOOT_STATUS里面可以看到INTERNAL_PROG使能;由于加載沒有錯(cuò)誤,目前運(yùn)行的是Multiboot程序。CONFIG_SATUS里面可以看到DON_PIN拉高。

下面我們嘗試把multiboot image里面的IDCODE修改掉,人為的造成錯(cuò)誤來驗(yàn)證板卡是否會(huì)跳轉(zhuǎn)到Golden Image去執(zhí)行。1、使用UltraEdit把ku_multiboot_spix4.mcs打開后,搜索到Update.bit里面的KU040的IDCODE3822093,并把它修改為0;重新生成ku_multiboot_spix4 _id.mcs文件燒入到FPGA.

ca34995c-f497-11eb-9bcf-12bb97331649.png

2、按照前面流程合成bit文件后燒入到Flash中并上電;3、在FPGA加載后可以看到板卡上面LED1燈點(diǎn)亮;證明Fallback功能生效,當(dāng)Multiboot Image損壞后可以安全加載Golden Image。

4、在Hardware Device Properties的BOOT_STATUS里面可以看到INTERNAL_PROG使能,ID_ERROR拉高;這時(shí)候Multiboot Image加載遇到ID錯(cuò)誤,F(xiàn)PGA返回到Golden Image去運(yùn)行。

我們可以再嘗試把multiboot image其他部分破壞掉導(dǎo)致CRC出錯(cuò)來驗(yàn)證功能。

1、使用UltraEdit把ku_multiboot_spix4.mcs打開后,在Update.bit里面做如下修改來驗(yàn)證CRC錯(cuò)誤情況。

2、燒入到板卡上電后;由于multiboot image里面有CRC錯(cuò)誤,所以板卡還是返回到Golden Image去運(yùn)行。

除了前面我們在bitstream里面去實(shí)現(xiàn)Multiboot功能,我們還可以在代碼里面嵌入IPROG的命令來實(shí)現(xiàn)Image的跳轉(zhuǎn)功能。

我們可以在點(diǎn)亮LED2的那個(gè)工程來做相關(guān)修改:

1、我們在點(diǎn)LED2燈的MultiBoot Image LED2工程里面加入ICAPE3代碼;

2、根據(jù)前面命令流程圖在代碼里面實(shí)現(xiàn)其功能;其中Warm Boot Start Address要跟bit文件在Flash里面位置對應(yīng)起來,不然跳轉(zhuǎn)后會(huì)找不到對應(yīng)的image導(dǎo)致失敗。

cb2627f4-f497-11eb-9bcf-12bb97331649.png

3、建立點(diǎn)亮MultiBoot Image LED3工程來配合前面IPROG命令功能;這樣可以通過MultiBoot Image LED2 工程里面的IPROG命令在FPGA不斷電的情況下實(shí)時(shí)把切換MultiBoot Image LED3到工程來點(diǎn)亮LED3。

cb36413e-f497-11eb-9bcf-12bb97331649.png

4、使用下面tcl去把兩個(gè)bit文件合為一個(gè)mcs文件;

cb46eaf2-f497-11eb-9bcf-12bb97331649.png

5、燒寫完成后選擇Boot from Configuration Memory Devive去加載FPGA,然后通過外置按鍵來執(zhí)行MultiBoot Image LED2 工程里面的IPROG命令去實(shí)現(xiàn)跳轉(zhuǎn)。

編輯:jq

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

    關(guān)注

    1624

    文章

    21571

    瀏覽量

    600637

原文標(biāo)題:Xilinx FPGA的MultiBoot功能介紹和實(shí)現(xiàn)

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AMD Xilinx 7系列FPGA的Multiboot多bit配置

    Multiboot是一種在AMD Xilinx 7系列FPGA上實(shí)現(xiàn)雙鏡像(或多鏡像)切換的方案。它允許在FPGA中加載兩個(gè)不同的配置鏡像,并在需要時(shí)切換。
    的頭像 發(fā)表于 02-25 10:54 ?1127次閱讀
    AMD Xilinx 7系列FPGA的<b class='flag-5'>Multiboot</b>多bit配置

    7 series FPGAs SPI MultiBoot應(yīng)用筆記

    7 series FPGAs MultiBoot功能指讓FPGA從2個(gè)或者多個(gè)BIT文件中加載一個(gè)BIT文件運(yùn)行程序,本文檔介紹基于個(gè)人參考設(shè)計(jì)例程K7MultiBoot的應(yīng)用筆記
    發(fā)表于 04-05 00:25

    有什么辦法可以更快地為Main_multiboot.mcs獲得總的舞會(huì)校驗(yàn)和嗎?

    嗨,我使用promgen命令兩次生成我的多重引導(dǎo)文件,一次用于標(biāo)題,第二次用于黃金和多重引導(dǎo)(參見下面的命令)。我覺得找到最終mcs文件(Main_multiboot.mcs)的正確舞會(huì)校驗(yàn)和的唯一
    發(fā)表于 07-16 11:00

    如何為MultiBoot生成SPIx4模式閃存文件

    你好 我完成了一個(gè)使用SPIx1進(jìn)行MultiBoot的設(shè)計(jì)(只有比特流A和B沒有Goldenstream)。結(jié)果是我的期待。然后我用SPIx4讀命令(03-> 6B)修改ICAP
    發(fā)表于 07-29 13:50

    如何使用BPI閃存的Spartan 6 Multiboot功能

    大家好!我正在使用從BPI 16位寬閃存芯片加載的Spartan 6 slx100器件:RC28F256P33TF為了實(shí)現(xiàn)多引導(dǎo)功能,我遵循以下來自論壇的指南:http
    發(fā)表于 05-29 08:44

    如何創(chuàng)建Golden鏡像和Multiboot鏡像?

    升級(jí)?;镜姆乐棺兇u功能,即在升級(jí)過程中任何時(shí)刻,出現(xiàn)異常情況,如斷電,線纜斷開等,都應(yīng)該能保證重新上電后,還可以再次完成升級(jí)流程,防止芯片變磚。升級(jí)流程的優(yōu)化,可靠的通訊協(xié)議,例如握手、校驗(yàn)、應(yīng)答
    發(fā)表于 04-04 17:11

    Xilinx-Spartan6 FPGA實(shí)現(xiàn)MultiBoot

    通過Xilinx Spartan-6 FPGA 的Multiboot特性,允許用戶一次將多個(gè)配置文件下載入Flash中,根據(jù)不同時(shí)刻的需求,在不掉電重啟的情況下,從中選擇一個(gè)來重配置FPGA,實(shí)現(xiàn)不同功能,提高器件利用率,增加
    發(fā)表于 03-22 17:18 ?66次下載
    Xilinx-Spartan6 FPGA實(shí)現(xiàn)<b class='flag-5'>MultiBoot</b>

    如何使用FPGA的Multiboot功能實(shí)現(xiàn)系統(tǒng)升級(jí)更新

    很多產(chǎn)品都有遠(yuǎn)程升級(jí)維護(hù)的需求,那么如何對FPGA實(shí)現(xiàn)安全可靠的遠(yuǎn)程升級(jí)呢? 需要用到FPGA的multiboot功能,F(xiàn)lash中可以存儲(chǔ)2個(gè)配置程序 第一個(gè)配置程序,叫g(shù)olden程序。位于
    發(fā)表于 02-08 10:13 ?1171次閱讀
    如何使用FPGA的<b class='flag-5'>Multiboot</b><b class='flag-5'>功能</b>實(shí)現(xiàn)系統(tǒng)升級(jí)更新

    關(guān)于Xilinx公司出品的Spartan6系列FPGA的MultiBoot設(shè)計(jì)方案詳解

    ,對FPCA在系統(tǒng)重配置,實(shí)現(xiàn)不同的功能MultiBoot特性使得用戶可以在某些場合選擇較少邏輯資源的Xilinx FPGA,實(shí)現(xiàn)需要較大邏輯資源且較昂貴的FPGA或ASIC才能實(shí)現(xiàn)的功能,從而提高器件利用率及系統(tǒng)安全性、降低
    發(fā)表于 07-13 08:01 ?9943次閱讀
    關(guān)于Xilinx公司出品的Spartan6系列FPGA的<b class='flag-5'>MultiBoot</b>設(shè)計(jì)方案詳解

    屏障定時(shí)器流程測試方法以及使用此方法

    XAPP1247 是對應(yīng)使用屏障鏡像時(shí)的多重啟動(dòng) (Multiboot) 和回退 (Fallback) 的示例應(yīng)用。
    的頭像 發(fā)表于 06-09 14:51 ?1488次閱讀

    7 eries FPGAs SPI MultiBoot實(shí)現(xiàn)方式

    7 Series FPGAs MultiBoot功能指讓FPGA從2個(gè)或者多個(gè)BIT文件中加載一個(gè)BIT文件運(yùn)行程序,所以它的2個(gè)主要應(yīng)用如下: 1. 更新新的BIT時(shí),當(dāng)更新失敗或BIT出錯(cuò)會(huì)返回
    的頭像 發(fā)表于 12-11 14:58 ?1740次閱讀
    7 eries FPGAs SPI <b class='flag-5'>MultiBoot</b>實(shí)現(xiàn)方式

    在FPGA中如何通過ICAP原語實(shí)現(xiàn)Multiboot?

    FPGA的MultiBoot功能可以支持遠(yuǎn)程動(dòng)態(tài)更新bitstream images,實(shí)現(xiàn)bitstream images的實(shí)時(shí)切換。在MultiBoot配置過程中檢測到錯(cuò)誤時(shí),F(xiàn)PGA可以觸發(fā)
    的頭像 發(fā)表于 05-11 14:20 ?6184次閱讀
    在FPGA中如何通過ICAP原語實(shí)現(xiàn)<b class='flag-5'>Multiboot</b>?

    深入探究Xilinx Multiboot實(shí)例

    原理 關(guān)于Multiboot的原理參考《 Xilinx 7系列FPGA Multiboot介紹-遠(yuǎn)程更新 》,基本原理都在此文寫的很清楚,本文主要從實(shí)例出發(fā)演示Multiboot。 補(bǔ)
    的頭像 發(fā)表于 09-26 09:37 ?3657次閱讀
    深入探究Xilinx <b class='flag-5'>Multiboot</b>實(shí)例

    基于ZYNQ的multiBoot測試說明

    基于ZYNQ的multiBoot測試
    的頭像 發(fā)表于 02-16 16:21 ?5627次閱讀
    基于ZYNQ的<b class='flag-5'>multiBoot</b>測試說明

    縮短MultiBoot流程中的回跳 (Fallback)時(shí)間

    MultiBoot 是 FPGA 遠(yuǎn)程更新配置文件時(shí)一種非常普遍的應(yīng)用--為了確保安全,我們通常需要安排一個(gè) Golden Image,升級(jí)失敗后 FPGA 能回跳 (Fallback) 到此配置,從而使 FPGA 始終處于可被檢測的工作狀態(tài)。
    的頭像 發(fā)表于 12-09 09:50 ?1124次閱讀