www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > OpenFPGA

縮略詞索引:

  • K7:Kintex 7
  • V7:Vertex 7
  • A7:Artix 7

我們在正常升級的過程(只使用一個位流文件),假如:(1)因為干擾通信模塊收到了一個錯誤位;(2)或者燒寫進FLASH時突然斷電,導(dǎo)致位流文件不完整;(3)再或者使用軟核升級應(yīng)用程序時,突然斷電或者接收文件錯誤,導(dǎo)致應(yīng)用程序啟動不了;(4)再再或者外場人員燒寫了不適配本FPGA的升級程序。以上這些都是我們升級時候常見的問題,以上問題可以總結(jié)為以下幾點:

  • 位流錯誤 -- 對應(yīng)情況(1)、(2)
  • 啟動超時 -- 對應(yīng)情況(3)
  • 位流ID不匹配 -- 對應(yīng)情況(4)

所以我們使用單一的文件進行遠程升級的時候,很有可能因為各種情況導(dǎo)致FPGA不能啟動,就需要現(xiàn)場使用JTAG進行處理。所以為了避免這些情況的發(fā)生,我們需要兩個固件,其中一個在一般情況下不動,只升級另一個程序,兩個程序在以上情況發(fā)生時,就啟動第一個程序,就可以重新升級了。

以上這種應(yīng)對方式對于AMD-Xilinx FPGA來說,官方也想到了針對以上情況的解決方式-即MultiBoot。

MultiBoot介紹

其實這個理念不難理解,你從實際使用出發(fā)去理解會比直接理解要容易多,實際使用就從上面的各種情況出發(fā),就很容易理解官方為啥使用MultiBoot進行問題的規(guī)避和解決。

但是,因為每個人接受的理念不同,所以我們還是要從正面“突進”,去解釋MultiBoot。

MultiBoot 是一個FPGA實現(xiàn)的一種解決方案,支持不同位流之間切換以規(guī)避在遠程更新中出現(xiàn)的問題。

當在 MultiBoot 啟動配置過程中檢測到錯誤時,F(xiàn)PGA 會觸發(fā)回退(外國名:Fallback),這樣就可以確保已知好的設(shè)計可以加載到設(shè)備中。這種解決方案主要是在一個FLASH中燒寫兩個位流文件。其中:

  • Fallback, 別稱 “golden bitstream”
  • MultiBoot, 別稱 “update bitstream”

以上兩個文件,習慣叫Golden位流,燒寫在Golden區(qū);MultiBoot位流,燒寫在MultiBoot區(qū)。以上依個人習慣自己匹配,對應(yīng)好相關(guān)的名稱和位置就可以。

MultiBoot原理

Golden位流是從Flash中的0地址開始運行;其幀頭會包括WBSTAR(next_config_addr)寄存器里面指定的下一個啟動地址等信息。FPGA器件上電后會從0地址開始加載Golden位流后,會根據(jù)里面的設(shè)定來決定加載Golden位流還是直接跳轉(zhuǎn)到MultiBoot位流存儲地址去執(zhí)行MultiBoot位流;當MultiBoot位流加載時候遇到錯誤,F(xiàn)allback電路會觸發(fā)去重新從0地址去加載Golden 位流。MultiBoot 和 Fallback 流程如圖1所示:

圖1:MultiBoot 和 Fallback 流程 - 參考:XAPP1247

Golden位流從FLASH地址 0 開始執(zhí)行后。按照啟動流程,一旦遇到 IPROG 命令,就會跳轉(zhuǎn)到Golden位流中 WBSTAR 寄存器中指定的FLASH地址位置,配置邏輯會嘗試加載更新比特流。如果配置邏輯由于錯誤無法加載更新位流,則會發(fā)生Fallback,配置邏輯會將 INIT_B 和 DONE 拉低,清除配置內(nèi)存,并重新從地址0處加載Golden位流重新啟動配置過程,在 Fallback 期間,為了防止不斷的重新,F(xiàn)PGA 會忽略 WBSTAR 和 IPROG 命令,詳細流程見圖2.

圖2:MultiBoot  Fallback 流程和配置步驟 - 參考:XAPP1247

MultiBoot 關(guān)鍵技術(shù)

MultiBoot 關(guān)鍵技術(shù)主要主要分為以下幾種:一個指令、二種位流、三種方式、四樣錯誤。針對以上四句話我們接下來詳細分析。

一個指令

這個指令大家應(yīng)該都知道,在上一篇文章中也詳細介紹了就是IPROG 指令。這個就是MultiBoot的核心命令(實現(xiàn)MultiBoot基本),后續(xù)的內(nèi)容基本離不開這個指令,上一篇文章中《配置文件框架》介紹了這個指令的位置及在啟動流程中位于第幾步。

二種位流

這里沒有說是二“個”位流,因為在復(fù)雜架構(gòu)種不止一個位流,但是按照功能劃分就是位于Golden區(qū)的Golden位流及位于MultiBoot區(qū)的MultiBoot位流。

三種方式

這里指的是 IPROG 指令嵌入位流種的三種方式,分別為:1)通過約束腳本添加;2)通過ICAPE2原語添加;3)通過AXI HWICAP寫入IPROG指令。

這幾種方式后面的文章會在實例解析。

四樣錯誤

四樣錯誤指觸發(fā)FallBack的四種錯誤,分別為:


    1. ID Code錯誤 - 指配置文件中的器件型號和當前器件不匹配。

    1. CRC錯誤 - 指配置數(shù)據(jù)送入FPGA之后會進行校驗,如果數(shù)據(jù)不一樣則會提示CRC錯誤。

    1. Watchdog超時 - 指在規(guī)定的時間內(nèi)如果無法配置成功,則觸發(fā)Watchdog超時

    1. BPI地址越界 - BPI是只針對BPI模式的,和Watchdog有一點類似,都是在一段時間內(nèi)如果沒有加載成功,地址會逐步增加,計時器會逐步增加,超過范圍后就觸發(fā)Fallback。

ID Code錯誤指的是ID Code不對,這在器件啟動第五步種出現(xiàn)錯誤,這種情況大概率是燒寫錯誤鏡像了,所以沒什么好解釋的。

當存在Multiboot鏡像的時候,如M鏡像的內(nèi)容出現(xiàn)問題,則會觸發(fā)CRC校驗錯誤,這樣可以保證鏡像加載成功之后,數(shù)據(jù)是沒有問題的。但是如果沒有Multiboot鏡像,則CRC校驗無法進行,或者加載到一半就掛死了。這個時候就需要Watchdog來觸發(fā)Fallback。只要一定時間內(nèi)加載沒有完成,就一定會觸發(fā)Watchdog超時。所以CRC是用來保證加載正確的,Watchdog是用來保證一定會提示加載失敗的。注意,Watchdogd的計時設(shè)置,請設(shè)置好然后實際測試一下,而不要僅僅憑經(jīng)驗/文檔來推斷一個合適的值。當發(fā)生了Fallback之后,工程會反跳回0地址開始加載,從新加載G鏡像。這里,F(xiàn)PGA內(nèi)部的配置寄存器會做記錄,當發(fā)生Fallback之后,會自動忽略IPROG命令,直接加載G鏡像后續(xù)的部分,來保證G鏡像有機會被完整的加載。

BPI地址越界就和上面解釋的一樣,沒什么多說的了。

總結(jié)

MultiBoot的實現(xiàn)總結(jié)起來就:一個指令、二種位流、三種方式、四樣錯誤。接下來就是按照上面的順序?qū)嶋H操作,加深理解。



本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉