Internet Reconfigurable Logic(IRL)是一套能從遠端進行硬體更新作業,同時確保裝置的可靠度與升級能力的系統設計模式。FPGA 代表的「現場編程」本身就是透過新的位元資料流進而變更裝置的功能。IRL便是充份發揮這項功能的優點,為位處在遠端的硬體提供新的位元資料流與軟體驅動程式。
本文將介紹有關IRL系統的一些基本觀念、開發IRL系統的細部設計考量因素、以及就高層次的角度審視讓各種嵌入型系統能順利升級的PAVE架構。
介紹
FPGA、快閃記憶體裝置及網路環境的出現,提供儲存各種位元資料的理想方法,使產品送交至最終顧客後仍能對硬體裝置進行升級。運用IRL架構所開發的系統,可從遠端升級軟體、驅動程式、韌體、以及硬體裝置。
在系統中融入現場升級能力的理由包括:
相容性
產品經常須與其它廠商的產品進行整合,但在產品出貨之前並無法測試所有可能發生的產品搭配狀況。若系統能支援IRL技術,業者就能以最低的成本解決相容性的問題。
產品上市時程
硬體在尚未發展完整功能時就能儘快出貨。因為完整的功能必須耗費更長久的時間,故可先將產品出貨,日後再進行新功能的升級作業。
設計修正
若產品在送交給最終顧客後發現瑕疵,透過現場升級的功能,可避免退貨、回收、到府服務、以及顧客抱怨等問題。
效能升級
工程研發團隊發展出最佳化的演算法與資料通道之後,即可提升系統的效能。
何謂IRL?
IRL是一種系統設計模式,能透過網路針對目標系統中的硬體與軟體進行修改與升級作業,不需由服務人員或使用者直接進行變更動作。這種模式在設計程序方面是指開發具備IRL支援能力的產品。IRL讓系統能同時升級多組系統,若有需要亦能讓系統回復至原先的狀態。
典型的IRL系統包括:
‧ 一組32位元處理器配備TCP/IP網路連線技術。目前業界中的範例就是單機板電腦(Single Board Computer; SBC),一般都採用CompactPCI與VME建置技術。
‧ 即時作業系統 (Real Time Operating System; RTOS) 例如像WindRiver Systems的VxWorks
‧ Xilinx PAVE (PLD API VxWorks Embedded) 架構
當廠商開發出升級方案時,即可將更新程式傳送至目標裝置,由PAVE API負責執行升級作業。例如,一部支援IRL技術的系統,能自動執行升級動作,並能在升級過程中自動啟動電源。
IRL系統的元素
開發一套支援IRL技術的系統需要特殊的硬體與基礎架構元件,讓遠端系統能執行修改作業。如(圖一)所示,IRL系統中包含多套元件。
圖中主機(Host)指的是硬體/軟體設計環境,FPGA位元資料與應用軟體就是透過這個環境進行開發,其中包括Xilinx設計工具、RTOS建構環境(例如像WindRiver System公司的Tornado)配合開發應用軟體、以及PAVE系統整合架構(System Integration Framework; SIF),負責整合所有開發作業。
當升級方案開發完成後,組裝成一組更新資料(Payload)傳送至系統端進行升級作業。PAVE架構內含多套工具,讓各世代的更新資料能在主機建立新的環境。
升級入口網站(Upgrade Portal)是負責取得更新資料的目標通訊點,這個網站可以是在業者的網域中,或由顧客負責操作管理。
圖一所示的網路(Network)可以是任何支援TCP/IP協定的網路:例如像內部網路、區域網路、虛擬私有網路(VPN),或甚至是公眾網際網路。使用的網路種類視業者的安全需要以及最終產品能使用的連線種類而定。PAVE能執行基本的TCP/IP socket連線,若有需要業者亦可研發其它增進防護能力的通訊協定。
目標(Target)系統是指需要硬體與/或軟體升級的系統。這類產品會送至遠方顧客的所在地。支援IRL技術的目標系統必須配備有一組處理器負責執行使用者的應用軟體、PAVE API(PAVE架構的元件)、RTOS客戶端程式(例如像WindRiver System的VxWorks)、以及FPGA。處理器負責控制網路與FPGA之間的連線。PAVE API軟體介面則負責種類使用者嵌入軟體的升級作業。
(圖二)是一套典型的更新資料架構。由於硬體變更通常須藉由新驅動程式來進行,故亦將軟體部份納入更新資料架構,讓驅動程式能與硬體同步更新。此外,在目標系統中執行的應用程式亦能同時更新。
若將(圖一)所示的功能區塊擴大來看,實際運作環境中的IRL系統便是類似(圖三)所示。在這裡有一組目標系統處理器、一組系統或週邊匯流排、以及FPGA元件。處理器負責執行使用者的應用程式、PAVE API、以及WindRiver RTOS作業系統。另一方面,升級入口網站執行一組PAVE客戶端程式,與目標系統中的PAVE伺服器相互通訊。更新程式會從主機透過更新入口網站與網際網路傳送至目標系統,在傳抵目標系統後,PAVE伺服器與API會負責執行預定的系統更新作業。
主機、升級入口網站,以及網路觀念
升級程序的第一步為開發新的FPGA設計方案與相關的軟體驅動程式,之後再測試適合的環境。當升級方案準備好傳送至運作系統時,廠商業者可利用PAVE提供的工具製作更新程式(payload)。
組裝完更新程式後,研發者將發佈至升級入口網站(Upgrade portal),類似在網路上公佈檔案的方式。當更新程式發佈至升級網站時,可透過兩種主要模式將更新程式傳送至目標系統。
主動發送
如(圖四)所示,主動發送(Push)類似廣播模式,更新程式由升級網站傳送至每個目標系統。這種模式讓升級網站能控制更新的流程並確保所有系統都能收到更新程式。
要求下載
如(圖五)所示,要求下載(Pull)類似FTP模式,目標系統主動聯絡升級網站,檢查是否有新的更新程式。若有,則由目標系統要求入口網站傳送該程式。
《圖四 將更新資料(payload)主動推送至目標端》 |
|
使用者應仔細考慮使用主動發送或是要求下載模式,以確保升級程序不會干擾使用者系統的作業。高可用度系統的經營業者,如:電信服務廠商,亦可經營升級網站;在這種情況下主動發送模式較能完全掌控整個更新流程,而低價消費性產品的使用者無法控制升級網站,使用者較傾向於能選擇是否要進行更新;在這種情況下要求下載模式應是最佳的選擇。若更新程式必須付費,升級網站必須對使用者進行驗證,以確認對方已購買升級方案。
目標軟體概念
(圖六)是目標系統執行軟體堆疊的模式圖示。在最上層的是使用者應用程式,而搭配應用程式同時運作的是PAVE API以及儲存更新程式的伺服器。
在第二層的PAVE API負責為顧客的C++應用程式提供系統呼叫程序,以執行重新設定的相關流程。消費者應用程式與API皆負責與RTOS搭起溝通介面。
堆疊中的第三層為WindRiver RTOS作業系統。VxWorks為Tornado II嵌入型研發平台的執行(run-time)元件,並扮演目標系統的作業系統的 "核心"。PAVE與VxWorks RTOS兩者直接搭配作業。
機板支援組件(Board Support Package; BSP)位於堆疊中的第四層,為處理器與RTOS的通訊介面。在RTOS中執行的每種SBC都需要機板支援組件,以便將處理器從RTOS中抽離出來。系統採用的BSP必須配合RTOS以及嵌入處理器。PAVE預設系統中存在BSP。
目標硬體概念
處理器耦合(Processor Coupling)
在嵌入產品市場,處理器搭配的匯流排稱為處理器區域匯流排(Process Local Bus; PLB),直接從處理器與像是PCI這類的嵌入系統匯流排(Embedded System Bus; ESB)接出傳輸線路,且通常需要搭配一組橋接或主控(host)晶片,負責串連系統匯流排與次匯流排。PLB的種類與處理器有直接關連,且不像PCI這般的標準化。注意不要將"嵌入系統匯流排"與 "系統匯流排"相混淆,在使用架構中廣泛使用的系統匯流排名稱指的是PLB。透過ESB串連處理器的模式被視為鬆散耦合(Loosely coupled),而透過PLB連線則屬於緊密耦合(Tightly coupled)。圖7即顯示兩種不同處理器耦合的範例模式。
直至最近,各種先進處理器(32位元)僅能透過處理器廠商提供的橋接晶片進行存取。這種模式導致系統必須採用多組晶片進行連線,如此不但增加效能表現的瓶頸、耗用機板空間與電力,設計成本也將因而增加。如今,利用可編程邏輯技術,業者可直接存取處理器區域匯流排,擺脫多晶片的束縛,同時提高新設計方案中PLB緊密耦合的重要性。
雙緩衝區
FPGA 位元資料流通常儲存在快閃裝置(其中包括Xilinx XC1800系列裝置),這類元件若在寫入資料時遭遇電源異常狀況,就會產生許多問題。IRL在硬體中融入相關的設計,使元件在升級程序中不會受到電源中斷的影響,其目的就是任何運作中硬體都不會發生故障。
IRL支援硬體為了因應這方面的需求,必須採用雙緩衝區設計。其中一項範例就是採用預設組態元件搭配儲存更新資料的第二組態。預設組態除了出廠時的設定之外,永遠不會更新或變更。第二儲存位置能支援更新作業,而預設元件則無法加以變動。雙緩衝區能確保硬體能可靠地進行更新作業。
回復(Rollback)機制是指系統能重回至更新前的狀態(可能是預設狀態)。系統中若有容納兩組以上組態的空間(例如使用快閃晶片),就能回復至原先安裝的良好更新狀態。
IRL 範例
介紹完IRL設計模式的觀念後,接著我們將提出幾項實際範例,闡述如何使用PAVE建置一套IRL目標系統。
基本的IRL支援系統
(圖八)顯示一套支援IRL技術的系統,內部配備有一組處理器、FPGA、以及多組FPGA組態儲存區。處理負責與FPGA進行通訊,在設定完成後亦負責更新PROM。橋接元件中的暫存器能儲存新收到的資料流,並透過JTAG控制器將資料寫入PROM。
標示「預設」值的PROM為出廠時的良好狀態。預設值不應進行現場更新,因為它提供的基本組態讓硬體在升級程序中一旦發生故障時仍可回復至可運作的狀態。這種設計可保護硬體不致因電源中斷、顧客或技術人員的疏失、以及任何故錯誤導致硬體無法運作(以及無法升級)。為防止使用者自行更新PROM,用戶永遠都能回復至升級失敗前的狀態,出廠時預設PROM的JTAG跳線設計可讓PROM的內容除了在生產過程外,都無法進行變更。可更新型PROM可透過FPGA中的JTAG控制器進行變更。在遇到僅有兩個儲存位置時,更新程式永遠會覆寫舊版的更新程式。
選取邏輯與非易變性儲存(Non-volatile storage; NVS)負責判斷要使用那組PROM,若在載入更新程式時發生錯誤則會使用預設PROM。它會嘗試載入升級PROM並監視FPGA中的DONE線路,若失敗則會自動回復至預設PROM。在一組像是Dallas Semiconductor推出的DS2430A (可覆寫式EEPROM)小型NVS裝置中,系統可指定由那一組PROM負責開機。NVS能運用更精密的模式在多組更新程式中進行選擇。選擇邏輯可能是一組CPLD或甚至直接選擇預設方案,也就是系統不能在出廠後進行變更(除非在CPLD組態中配置有雙緩衝區)
在發生設定錯誤時,選擇邏輯元件能移除這種狀態,並嘗試透過預設資料設定FPGA。若更新緩衝區中的資料流屬於耦合模式或不存在,FPGA DONE訊號就不會繼續傳送。在這種情況下,選擇邏輯會嘗試載入預設資料。
橋接系統中的IRL
(圖九)顯示一套IRL系統配備一組橋接器與兩組上個範例中討論的PROM。橋接FPGA可自動啟動,隨後處理器可透過橋接元件設定目標FPGA。在前個範例中,FPGA同時扮演橋接器與目標系統兩種角色。在本範例中的介面可以是ESB或PLB。橋接介面中的暫存器可接收來自處理器的組態資料,並透過SelectMAP 或JTAG控制器將資料傳送至目標元件。
IRL並不要求使用者系統中一定要有橋接器。本文舉例不一定適用於您的設計方案。圖九的雙緩衝區範例,並非是唯一可行的方式。
在一套可編程橋接系統中,在最初設定橋接FPGA之前,處理器不能直接傳送組態設定資料。所有後續作業則是確保已知的良好設定是否仍能應用在這組橋接元件。針對圖中的目標FPGA,處理器能直接將組態資料從處理器的儲存端傳送至目標點。在這種情況下,圖中顯示兩種PAVE支援的設定模式,也就是SelectMAP與JTAG。橋接元件採用的選擇邏輯為一組CPLD,扮演兩組PROM的仲裁者(mux)。
橋接元件的一般IRL系統考量因素
處理器與目標FPGA之間的通訊是透過橋接器進行。橋接器透過專屬介面(例如像ESB與PLB)與處理器進行串連。大多數處理器都需要一組單獨晶片(一套橋接器)以支援ESB。在使用橋接晶片時,處理器不會直接控制串連FPGA的匯流排。少數處理器在晶片中納入ESB的支援元件。這類方案被視為是內建橋接器; 這種橋接器則無法進行升級。
大多數SBC沒有提供透過外部元件直接存取PLB的管道。在CompactPCI系統中,通常採用PCI Mezzanine Card (PMC)的元件規格。SBC機板或是同一機箱中的PMC傳送器上的處理器與PMC介面卡之間採用鬆散耦合模式。在處理器區域匯流排(Processor Local Bus; PLB)則採緊密耦合模式,例如像PowerPC 405GP週邊匯流排就直接串連來自處理器的線路。FPGA的升級資料會透過耦合元件傳送至FPGA; 隨後資料會傳至適當的儲存區域進行更新作業。
用來儲存位元資料流的記憶體
在最後兩個範例中我們繼續延用這些模式,下個範例則在資料流儲存元件中擴增額外的記憶體空間。(圖十)顯示一組鬆散耦合的PMC系統,在兩套PROM之外亦配備有組態快閃記憶體。快閃晶片屬於標準型快閃元件,規格大小不一。快閃晶片視設計種類而定,可儲存額外的橋接資料流,亦可配合不同的處理器為目標FPGA供應組態資料,目標FPGA組態資料亦能儲存在這些元件中。快閃晶片能儲存更大量的組態資料,並能轉譯成多組更新資料以支援最大型的FPGA。
《圖十 內含橋接元件、PROM、以及快閃晶片的PMC範例系統》 |
|
在本範例中,CPLD可稱得上是輕薄的裝置,基本上在FPGA中的資料須進行大量的邏輯處理。位址線由FPGA或CPLD傳送至快閃晶片,讓系統作業能透過晶片進行操控。
在這個範例中,預設的程序可能在設定快閃記憶體(Configuration flash)或PROM中進行;因此在PROM中不會有跳接線路(jumper)。若配置跳接線路,則系統設計師須負責確保系統能進行錯誤回復作業。
在IRL系統中使用PAVE
PAVE 架構是一套嵌入式應用軟體研發架構,能用來開發嵌入應用程式的組態。
物件導向硬體
PAVE 架構與其元件為一組C++語言類型(classes)與物件模式(object models),Xilinx FPGA將它視為抽象的建置元件,稱為IRL支援裝置組件。PAVE將編程硬體視為系統中的一組物件,類似C++語言使用的軟體物件。因此,採用PAVE所撰寫的應用程式一般都具有極高的物件導向、模組化、以及可升級等屬性。甚至不需更新整個架構就能更換單一模組。
SelectMAP 與JTAG 支援方案
PAVE 1.0支援SelectMAP 與JTAG編程介面,並可透過設定暫存器融入在設計方案中,通常為橋接元件。在運用PAVE進行設計作業時,可設定功能元件的配置點,並能在裝置記憶體中配置其它使用者暫存器。PAVE會負責封裝這套編程介面並產生C++原始碼、表頭檔案、以及附屬的專案檔。
結論
在極有限的硬體與軟體變更作業下,將可順利發展支援IRL技術的系統,同時帶來更多的應用價值。在產品中擴充IRL技術將延長產品的壽命、簡化支援作業與行銷模式。透過IRL,能生產一套單一化的硬體版本,並推出多種不同的改款方案。使用者將會受惠於產品問市的速度以及完全自動化的升級功能。
PAVE 架構提供一套強大的軟體環境,讓設計業者能輕易將IRL整合至設計方案中。PAVE具備的物件導向特性讓系統不需處理JTAG或SelectMAP程式的低階程序,讓設計師專注於開發最終使用者的應用軟體。
未來推出的PAVE新版架構將為IRL設計系統增加額外的功能。PAVE本身具有的模組化特性能不須變更目前的應用軟體架構,即能擴增各項新功能。
(作者任職於Xilinx Asia Pacific)