作者:付漢杰 hankf@amd.com
文章來(lái)源:博客園
測(cè)試環(huán)境
參考文檔
xtp226-ac701-multiboot-c-2015-1.pdf
ug470_7Series_Config.pdf
xapp1247-multiboot-spi.pdf
ug952-ac701-a7-eval-bd.pdf
ug1579-microblaze-embedded-design.pdf
Vitis Embedded Software Debugging Guide (UG1515)
測(cè)試單板
ac701
測(cè)試工具
Vivado 2022.2
Vitis 2022.2
Mutliboot
UG470 Reconfiguration and MultiBoot Overview
UG470中的介紹如下
The 7 series FPGAs MultiBoot and fallback features support updating systems in the field. Bitstream images can be upgraded dynamically in the field. The FPGA MultiBoot feature enables switching between images on the fly. When an error is detected during the MultiBoot configuration process, the FPGA can trigger a fallback feature that ensures a known good design can be loaded into the device.
AMD FPGA支持的MultiBoot特性,可以使FPGA先嘗試啟動(dòng)最新的配置(bit)文件,后續(xù)稱為Update Bit。如果最新的配置文件出錯(cuò),再回退到安全的出廠版本的配置(bit)文件,后續(xù)稱為Golden Bit。
MultiBoot特性有兩種方式使能。第一種方式是在配置(bit)文件里嵌入IPROG命令,觸發(fā)MultiBoot特性。第二種方式是通過(guò)AXI HWICAP寫(xiě)入IPROG命令,觸發(fā)MultiBoot特性。
配置(bit)文件嵌入IPROG命令
建議閱讀XAPP1247 的 “Table 1: MultiBoot Bitstream Properties”。
MultiBoot Bitstream Properties
在工程的約束文件中,加入下列設(shè)置,會(huì)自動(dòng)在配置(bit)文件中插入IPROG命令。
set_property BITSTREAM.CONFIG.CONFIGFALLBACK Enable [current_design] set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x600000 [current_design] set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
上述約束的NEXT_CONFIG_ADDR,根據(jù)實(shí)際的Flash分配情況設(shè)置。
對(duì)于AC701單板,也建議添加下列約束。
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property BITSTREAM.CONFIG.EXTMASTERCCLK_EN div-1 [current_design] set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design] set_property CONFIG_MODE SPIx4 [current_design] set_property CONFIG_VOLTAGE 3.3 [current_design] set_property CFGBVS VCCO [current_design]
通過(guò)AXI HWICAP寫(xiě)入IPROG命令
AMD提供IP,支持通過(guò)AXI總線,訪問(wèn)ICAPE。
xtp226 也提供了硬件、軟件設(shè)計(jì),它支持通過(guò)AXI HWICAP寫(xiě)入IPROG命令,觸發(fā)FPGA重新加載。
golden_iprog_spi中的golden.c, 通過(guò)讀取AXI GPIO 0的狀態(tài),決定FPGA重新加載時(shí)使用的bit文件。AXI GPIO 0對(duì)應(yīng)到AC701上的SW2。AXI GPIO 0的bit-0,也就是SW2的靠角落(DS23、SW4)的開(kāi)關(guān)1在1的狀態(tài)(靠液晶屏、7A200T芯片側(cè)),則加載0x400000的bit文件。AXI GPIO 0的bit-0為0, bit-3為1(SW2的開(kāi)關(guān)4)在1的狀態(tài),則加載0x800000的bit文件。
status = GpioInputExample(XPAR_AXI_GPIO_0_DEVICE_ID, &DataRead); if (status == 0) { xil_printf("GpioInput Read data:0x%X ", DataRead); if ( (DataRead & 0x00000001) == 0x00000001 ) { fpga_iprog(0x00400000); // IPROG to GOOD BITSTREAM ,must match address in .prm } if ( (DataRead & 0x00000008) == 0x00000008 ) { fpga_iprog(0x00800000); // IPROG to cause configuration error } } else { print("GpioInput FAILED. "); }
對(duì)比
第一種方式,通過(guò)配置(bit)文件嵌入IPROG命令,實(shí)現(xiàn)最簡(jiǎn)單,占用資源也最少。但是只能支持一個(gè)Update Bit文件。
第二種方式,通過(guò)AXI HWICAP寫(xiě)入IPROG命令,在下發(fā)IPROG命令前,可以任意指定Flash地址,非常靈活。但是需要嵌入MicroBlaze和AXI HWICAP,需要占用部分FPGA資源,也需要一點(diǎn)軟件開(kāi)發(fā)。
Artix FPGA OTA 在線升級(jí)的流程
首先分配Flash的存儲(chǔ)空間。Flash里 0x0 地址存放Golden Bit;Flash里 0x400000 地址存放 Update Bit;其中0x400000需要根據(jù)壓縮后的bit文件大小修改。
因?yàn)樯蒅olden Bit時(shí),使用了屬性“BITSTREAM.CONFIG.NEXT_CONFIG_ADDR”, Golden Bit啟動(dòng)后會(huì)自動(dòng)加載Update Bit。
因?yàn)樯蒅olden/Update Bit時(shí),使用了屬性“BITSTREAM.CONFIG.CONFIGFALLBACK”, 任何Bit失敗后,都會(huì)自動(dòng)加載Golden Bit。
Golden bit和 Update bit內(nèi)部都集成MicroBlaze、hwicap和Quad SPI Controller,都有在線升級(jí)bit的能力。
a. MicroBlaze通過(guò)Ethernet、PCIe、UART等,從外部獲得新的Update Bit。
b. MicroBlaze將新的Update Bit寫(xiě)入Quad SPI的0x400000并校驗(yàn)
c. MicroBlaze寫(xiě)IProg命令到HWICAP,重啟動(dòng)FPGA
d. FPGA使用新的Update Bit配置,之后Update Bit開(kāi)始工作。
如果后來(lái)芯片斷電之后再上電,Update Bit能直接加載Update Bit。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618718 -
amd
+關(guān)注
關(guān)注
25文章
5589瀏覽量
136394 -
OTA
+關(guān)注
關(guān)注
7文章
613瀏覽量
36607 -
bit
+關(guān)注
關(guān)注
0文章
48瀏覽量
32464 -
Vivado
+關(guān)注
關(guān)注
19文章
835瀏覽量
68810
原文標(biāo)題:【干貨分享】AMD Artix 7 FPGA OTA 在線升級(jí)的實(shí)現(xiàn)
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【Artix-7 50T FPGA試用體驗(yàn)】xilxin Artix-7 系列FPGA相關(guān)特性
STM32 OTA升級(jí)如何實(shí)現(xiàn)呢
什么是在線OTA升級(jí)呢
請(qǐng)問(wèn)如何實(shí)現(xiàn)ESP32固件的OTA在線升級(jí)更新?
分享一項(xiàng)可在線OTA升級(jí)的嵌入式系統(tǒng)設(shè)計(jì)
Xilinx Artix-7系列FPGA教程資料及設(shè)計(jì)實(shí)例_Artix 7開(kāi)發(fā)板電路圖和例程

Artix-7 DSP性能演示
Artix-7 功耗優(yōu)勢(shì)演示
如何使用Artix-7 FPGA減少功耗
digilent Nexys 4:Artix-7 FPGA訓(xùn)練板介紹

在線升級(jí) | 物聯(lián)網(wǎng)中的OTA升級(jí)原理
在Artix 7 FPGA上使用Vivado的組合邏輯與順序邏輯

在線升級(jí) | 物聯(lián)網(wǎng)中的OTA升級(jí)原理

AT32 MCU如何使用OTA通過(guò)USART實(shí)現(xiàn)對(duì)固件的在線升級(jí)更新

評(píng)論