一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Xilinx7系列里的Multiboot介紹

OpenFPGA ? 來源:搜狐網(wǎng) ? 作者:搜狐網(wǎng) ? 2020-10-12 14:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在遠(yuǎn)程更新的時(shí)候,有時(shí)候需要雙鏡像來保護(hù)設(shè)計(jì)的穩(wěn)定性。在進(jìn)行更新設(shè)計(jì)的時(shí)候,只更新一個(gè)鏡像,另一個(gè)鏡像在部署之前就測(cè)試過沒問題并不再更新。當(dāng)更新出錯(cuò)時(shí),通過不被更新的鏡像進(jìn)行一些操作,可以將更新失敗的數(shù)據(jù)重新寫入Flash。這樣即使更新出錯(cuò),也能保證設(shè)計(jì)至少可以被遠(yuǎn)程恢復(fù)。

Xilinx的雙鏡像方案成為Multiboot。本文對(duì)Xilinx 7系列的Multiboot做一些簡單介紹。

Multiboot直接操作的是兩個(gè)鏡像,但實(shí)際上可以用于多個(gè)鏡像。為了便于描述,Multiboot中的兩個(gè)鏡像分別成為G鏡像(Golden)和M鏡像(Multiboot)。

遠(yuǎn)程更新的方案,有一些是通過FPGA來讀寫Flash的,例如Xilinx平臺(tái)下需要自己實(shí)現(xiàn)的Flash讀寫控制器Altera平臺(tái)下的ASML IP。當(dāng)無法提供JTAG等其他連接時(shí),F(xiàn)lash的更新就只有FPGA一種方案。

當(dāng)寫入Flash的操作出現(xiàn)錯(cuò)誤,或者Flash中部分地址中的數(shù)據(jù)出現(xiàn)錯(cuò)誤,導(dǎo)致無法正確寫入或者存儲(chǔ)的數(shù)據(jù)出現(xiàn)錯(cuò)誤,這樣會(huì)導(dǎo)致FPGA無法加載成功。

當(dāng)FPGA無法加載成功或者工作不正常的時(shí)候,F(xiàn)lash的讀寫操作也就無法得到保證。此時(shí)也就不能重新通過遠(yuǎn)程更新方案來重新讀寫Flash,糾正之前的錯(cuò)誤。所以可以看到,如果Flash直接由FPGA控制,當(dāng)遠(yuǎn)程更新出現(xiàn)錯(cuò)誤時(shí),很可能導(dǎo)致遠(yuǎn)程更新徹底失效,只能安排現(xiàn)場(chǎng)更新來修復(fù)。

對(duì)應(yīng)方案就是使用雙鏡像(多鏡像),更新的時(shí)候只更新M鏡像,更新后直接使用M鏡像。當(dāng)出現(xiàn)M鏡像更新出現(xiàn)錯(cuò)誤的時(shí)候,則啟動(dòng)G鏡像。通過G鏡像中的設(shè)計(jì)來重新更新Flash中M鏡像部分的數(shù)據(jù)。

由于G鏡像從來沒有被更新過,這樣出現(xiàn)錯(cuò)誤的概率也就非常小。這樣即使M鏡像出現(xiàn)錯(cuò)誤,可以通過G鏡像來完成一些工作(例如Flash讀寫操作),由此來保證設(shè)計(jì)一直可以使用。

從這個(gè)分析可以看出,雙鏡像的方案,需要完成兩個(gè)任務(wù)。

1.正常情況下,加載完成時(shí)應(yīng)該是M鏡像在運(yùn)行

2.出現(xiàn)錯(cuò)誤的時(shí)候,需要返回G鏡像

圖片來自UG470

從上圖可以看到,Xilinx 7系列FPGA的Multiboot方案是從基地址開始存放G鏡像,后續(xù)存放M鏡像。加載過程中是先加載M鏡像,配置完成后如果成功,則運(yùn)行M鏡像;如果運(yùn)行失敗,則重新加載G鏡像。

下面就從需要完成的兩個(gè)任務(wù),結(jié)合上圖來進(jìn)行介紹。

先看第一個(gè)任務(wù),加載M鏡像。

上電完成之后,F(xiàn)PGA就會(huì)按照設(shè)置,進(jìn)行加載操作。在主動(dòng)模式下,F(xiàn)PGA會(huì)開始對(duì)Flash的操作,嘗試讀取Flash中存儲(chǔ)的配置鏡像數(shù)據(jù)。需要注意的是,主動(dòng)模式下的這一系列操作都是FPGA自動(dòng)完成的,用戶無法控制。

所以就出現(xiàn)了第一個(gè)問題。既然讀取操作是自動(dòng)的,那么FPGA是如何知道M鏡像存儲(chǔ)在哪里,并先加載M鏡像呢?如果是從0地址開始讀取,那么應(yīng)該先完成G鏡像的加載。否則,是否使用Multiboot及M鏡像的地址,是如何傳遞給FPGA、讓FPGA知曉呢?

Xilinx的Multiboot方案中的解決辦法是使用一條加載命令:IPROG。而這條命令,是放在G鏡像中。

具體說,對(duì)于FPGA直接從0地址開始讀取,先開始加載G鏡像,但是這個(gè)G鏡像是經(jīng)過特別處理的,在鏡像數(shù)據(jù)剛開始的部分添加了IPROG命令和M鏡像的地址。當(dāng)FPGA讀取到這個(gè)命令之后,就會(huì)直接跳過后面的數(shù)據(jù),從設(shè)置的地址開始繼續(xù)加載。這樣的操作,導(dǎo)致G鏡像只是運(yùn)行了最前面的幾條加載命令,而M鏡像也只是等了幾條命令的操作就開始加載了,保證了M鏡像的直接加載。

需要說明的是IPROG這是一條命令,所以既可以在G鏡像中生效,也可以在設(shè)計(jì)中任意使用。用戶可以將IPROG命令發(fā)給ICAP,來實(shí)現(xiàn)任意時(shí)間觸發(fā)重新加載的需求。通過設(shè)置合適的地址,可以實(shí)現(xiàn)多個(gè)鏡像的切換。

圖片截取自Vivado

從vivado中的設(shè)置可以看出,Multiboot的主要設(shè)置只有這6個(gè)。第一個(gè)成為Fallback,最后一個(gè)成為Watchdog。這兩個(gè)下文會(huì)做介紹。第四個(gè)第五個(gè)是關(guān)于RS pin。等熟悉Multiboot理解之后可以查看文檔進(jìn)行理解,本文不做深入介紹。

第二個(gè)是設(shè)置跳轉(zhuǎn)到的地址、第三個(gè)是在G鏡像中加入IPROG命令。這兩個(gè)操作可以以命令的形式發(fā)給ICAP接口,從而觸發(fā)Multiboot中轉(zhuǎn)跳并加載新的鏡像數(shù)據(jù)。

看完上述的分析,應(yīng)該明白如何實(shí)現(xiàn)先加載M鏡像這個(gè)需求了。下一步就是,在加載失敗時(shí)如何回退到G鏡像。

M鏡像加載不成功,需要回退到G鏡像的操作,Multiboot方案稱這一步驟為Fallback。

Fallback在四種條件下會(huì)被觸發(fā):

1. ID Code錯(cuò)誤
2. CRC錯(cuò)誤
3. Watchdog超時(shí)
4. BPI地址越界

ID Code錯(cuò)誤是指配置文件中的器件型號(hào)和當(dāng)前器件不匹配。CRC校驗(yàn)是指配置數(shù)據(jù)送入FPGA之后會(huì)進(jìn)行校驗(yàn),如果數(shù)據(jù)不一樣則會(huì)提示CRC錯(cuò)誤。這兩個(gè)基本原理比較容易理解,至于具體細(xì)節(jié),需要能解析bit文件的內(nèi)容之后才能充分理解。

Watchdog超時(shí)是指在規(guī)定的時(shí)間內(nèi)如果無法配置成功,則觸發(fā)Watchdog超時(shí),進(jìn)而會(huì)導(dǎo)致Fallback。

BPI地址越界是指發(fā)現(xiàn)逐步增長的BPI地址超過最大值,發(fā)生溢出,回到0,則除法Fallback。

大概理解一下四個(gè)條件之后可以看到,BPI是只針對(duì)BPI模式的,和Watchdog有一點(diǎn)類似,都是在一段時(shí)間內(nèi)如果沒有加載成功,地址會(huì)逐步增加,計(jì)時(shí)器會(huì)逐步增加,超過范圍后就觸發(fā)Fallback,所以BPI就不做進(jìn)一步解釋了。

ID Code也不做進(jìn)一步解釋了,因?yàn)镮D Code不對(duì),大概率是用錯(cuò)鏡像文件了。所以也沒有太多可以分析的。

重點(diǎn)是2和3,當(dāng)存在Multiboot鏡像的時(shí)候,如M鏡像的內(nèi)容出現(xiàn)問題,則會(huì)觸發(fā)CRC校驗(yàn)錯(cuò)誤,這樣可以保證鏡像加載成功之后,數(shù)據(jù)是沒有問題的。

但是如果沒有Multiboot鏡像,則CRC校驗(yàn)無法進(jìn)行,或者加載到一半就掛死了。這個(gè)時(shí)候就需要Watchdog來觸發(fā)Fallback。只要一定時(shí)間內(nèi)加載沒有完成,就一定會(huì)觸發(fā)Watchdog超時(shí)。

所以CRC是用來保證加載正確的,Watchdog是用來保證一定會(huì)提示加載失敗的。

注意,Watchdogd的計(jì)時(shí)設(shè)置,請(qǐng)?jiān)O(shè)置好然后實(shí)際測(cè)試一下,而不要僅僅憑經(jīng)驗(yàn)/文檔來推斷一個(gè)合適的值。

當(dāng)發(fā)生了Fallback之后,工程會(huì)反跳回0地址開始加載,從新加載G鏡像。這里,F(xiàn)PGA內(nèi)部的配置寄存器會(huì)做記錄,當(dāng)發(fā)生Fallback之后,會(huì)自動(dòng)忽略IPROG命令,直接加載G鏡像后續(xù)的部分,來保證G鏡像有機(jī)會(huì)被完整的加載。

FPGA自帶一些寄存器,記錄了FPGA加載時(shí)的一些狀態(tài),通常稱為device status寄存器。當(dāng)初出現(xiàn)加載失敗的問題時(shí),可以通過JTAG查看相關(guān)寄存器來尋找一些線索,幫助定位問題。

通過這一系列復(fù)雜的操作,可以實(shí)現(xiàn)雙鏡像的配置切換。這種方法最大的優(yōu)點(diǎn)就是速度快。在配置完成之后可以快速的跳轉(zhuǎn)、加載和返回。最關(guān)鍵的雙鏡像選擇這一步是在加載初期就進(jìn)行轉(zhuǎn)跳,所以跳轉(zhuǎn)非常迅速,適合一些對(duì)配置時(shí)間有要求的場(chǎng)合。缺點(diǎn)就是原理和設(shè)置都相對(duì)麻煩了一些。

和上述方法不一樣的一個(gè)雙鏡像切換的方法就是用戶自行做切換。大致原理是用戶利用FPGA的可編程邏輯資源對(duì)ICAP模塊進(jìn)行控制,輸入需要跳轉(zhuǎn)的地址然后輸入IPROG命令,來觸發(fā)跳轉(zhuǎn)操作。這個(gè)操作是需要先加載好G鏡像并開始運(yùn)行,然后由用戶來控制什么時(shí)候進(jìn)行跳轉(zhuǎn)。

這樣操作的優(yōu)點(diǎn)有:

1.跳轉(zhuǎn)地址由用戶自行選擇,所以可以在多個(gè)鏡像中跳轉(zhuǎn),而不限于兩個(gè);

2.可以選擇在合適的時(shí)間進(jìn)行加載,用戶選擇性更大。

主要缺點(diǎn):

1.需要對(duì)配置過程、ICAP端口和控制命令有更多的理解

2.需要加載完至少一個(gè)鏡像才能使用,所以對(duì)配置時(shí)間要求高的場(chǎng)景無法使用

如果僅僅是為了遠(yuǎn)程更新,那么這個(gè)方案,并不合適。用自動(dòng)的雙鏡像方案更簡單易用一些。只要G鏡像調(diào)試完畢,整個(gè)方案對(duì)M鏡像的要求比較低。

文章基本完成的時(shí)候,發(fā)現(xiàn)Xilinx官網(wǎng)有一篇關(guān)于Multiboot的XAPP推薦一下閱讀一下,加強(qiáng)對(duì)Multiboot的理解。

https://www.xilinx.com/support/documentation/application_notes/xapp1247-multiboot-spi.pdf

這里截取一部分:


當(dāng)升級(jí)程序有錯(cuò)誤的時(shí)候,系統(tǒng)會(huì)啟動(dòng)golden bitstream

注意:需要在源工程與升級(jí)工程中添加如下約束語句

生成組合mcs文件:

責(zé)任編輯人:CC

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

    關(guān)注

    73

    文章

    2185

    瀏覽量

    125302

原文標(biāo)題:Xilinx 7系列FPGA Multiboot介紹-遠(yuǎn)程更新

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于AD9613與Xilinx MPSoC平臺(tái)的高速AD/DA案例分享

    本文主要介紹基于Xilinx UltraScale+MPSoC XCZU7EV的高速AD采集與高速DA輸出案例
    的頭像 發(fā)表于 06-03 14:22 ?244次閱讀
    基于AD9613與<b class='flag-5'>Xilinx</b> MPSoC平臺(tái)的高速AD/DA案例分享

    Xilinx Ultrascale系列FPGA的時(shí)鐘資源與架構(gòu)解析

    Ultrascale是賽靈思開發(fā)的支持包含步進(jìn)功能的增強(qiáng)型FPGA架構(gòu),相比7系列的28nm工藝,Ultrascale采用20nm的工藝,主要有2個(gè)系列:Kintex和Virtex
    的頭像 發(fā)表于 04-24 11:29 ?997次閱讀
    <b class='flag-5'>Xilinx</b> Ultrascale<b class='flag-5'>系列</b>FPGA的時(shí)鐘資源與架構(gòu)解析

    MGMF182L1C7-MINAS A6N系列 介紹 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MGMF182L1C7-MINAS A6N系列 介紹相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有MGMF182L1C7-MINAS A6N
    發(fā)表于 02-14 19:12
    MGMF182L1C<b class='flag-5'>7</b>-MINAS A6N<b class='flag-5'>系列</b> <b class='flag-5'>介紹</b> 松下

    【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】Key-test

    硬件: 一Xilinx XC7A100T FPGA開發(fā)板 二12V電源適配器 三下載器 四 win10筆記本 軟件: 一Vivado (指導(dǎo)手冊(cè)有詳細(xì)的安裝下載流程) 二官方按鍵示例工程 按鍵示例
    發(fā)表于 01-09 16:08

    西門子PLC S7-1500系列介紹

    西門子PLCS7-1500系列是西門子自動(dòng)化領(lǐng)域中的一款重要產(chǎn)品,它以其卓越的性能、強(qiáng)大的功能和高度的靈活性,在工業(yè)自動(dòng)化控制系統(tǒng)中占據(jù)了一席之地。本文將詳細(xì)介紹西門子PLC S7-1
    的頭像 發(fā)表于 12-09 18:23 ?2736次閱讀
    西門子PLC S<b class='flag-5'>7</b>-1500<b class='flag-5'>系列</b><b class='flag-5'>介紹</b>

    【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】測(cè)試一

    感謝米爾電子和電子發(fā)燒友提供的米爾-Xilinx XC7A100T FPGA開發(fā)板。 MYD-J7A100T用的 FPGA 為 XILINX 公司 ARTIX-
    發(fā)表于 12-08 08:48

    一文搞懂軟核的固化、啟動(dòng)和MultiBoot實(shí)現(xiàn)

    這也是《FPGA實(shí)現(xiàn)串口升級(jí)及MultiBoot系列中的一篇文章,作為一個(gè)專題單獨(dú)出來說明。 本篇文章分為三個(gè)主題:固化、啟動(dòng)和MultiBoot實(shí)現(xiàn)。 固化分為SPI和BPI FLASH兩種情況
    的頭像 發(fā)表于 12-07 11:23 ?2040次閱讀
    一文搞懂軟核的固化、啟動(dòng)和<b class='flag-5'>MultiBoot</b>實(shí)現(xiàn)

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有?

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有? tsw1400_lvds_dac_sample_wise_restored的代碼寫的實(shí)在太難度了,一句注釋都沒有
    發(fā)表于 11-25 06:04

    【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】+02.PCIE接口測(cè)試(zmj)

    【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】+02.PCIE接口測(cè)試(zmj) 1.FPGA程序設(shè)計(jì) PCI Express (peripheral component
    發(fā)表于 11-12 16:05

    【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】+01.開箱(zmj)

    ://www.myir-tech.com/ //------米爾-Xilinx XC7A100T FPGA開發(fā)板產(chǎn)品簡介 https://www.myir.cn/shows/141/75.html 2.開發(fā)板介紹 2.1開發(fā)板
    發(fā)表于 11-12 15:45

    Xilinx 7系列FPGA PCIe Gen3的應(yīng)用接口及特性

    Xilinx7系列FPGA集成了新一代PCI Express集成塊,支持8.0Gb/s數(shù)據(jù)速率的PCI Express 3.0。本文介紹7系列
    的頭像 發(fā)表于 11-05 15:45 ?3151次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>7</b><b class='flag-5'>系列</b>FPGA PCIe Gen3的應(yīng)用接口及特性

    如何申請(qǐng)xilinx IP核的license

    在使用FPGA的時(shí)候,有些IP核是需要申請(qǐng)后才能使用的,本文介紹如何申請(qǐng)xilinx IP核的license。
    的頭像 發(fā)表于 10-25 16:48 ?1392次閱讀
    如何申請(qǐng)<b class='flag-5'>xilinx</b> IP核的license

    Xilinx ZYNQ 7000系列SoC的功能特性

    本文介紹Xilinx ZYNQ 7000系列SoC的功能特性、資源特性、封裝兼容性以及如何訂購器件。
    的頭像 發(fā)表于 10-24 15:04 ?2717次閱讀
    <b class='flag-5'>Xilinx</b> ZYNQ 7000<b class='flag-5'>系列</b>SoC的功能特性

    Xilinx? Zynq?UltraScale?系列多處理器中的VCCINT_VCU軌供電

    電子發(fā)燒友網(wǎng)站提供《為Xilinx? Zynq?UltraScale?系列多處理器中的VCCINT_VCU軌供電.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 10:54 ?0次下載
    為<b class='flag-5'>Xilinx</b>? Zynq?UltraScale?<b class='flag-5'>系列</b>多處理器中的VCCINT_VCU軌供電

    Xilinx 7系列FPGA PCB設(shè)計(jì)指導(dǎo)

    引言: 從本文開始,我們陸續(xù)介紹下有關(guān)7系列FPGA通用PCB設(shè)計(jì)指導(dǎo),重點(diǎn)介紹在PCB和接口級(jí)別做出設(shè)計(jì)決策的策略。由于FPGA本身也屬于數(shù)字集成電路,文章中的大部分設(shè)計(jì)策略及概念也
    發(fā)表于 07-19 16:56