即時線上韌體更新 (OTA) 上最佳成本、可靠性、和性能的記憶體解決方案

2019-03-12
作者 Jackson Huang, Senior Director of Marketing, Winbond Electronics America、李家慶,華邦電子產品企劃部技術經理

OTA更新有助於保持用戶對產品的滿意度,降低工程師執行現場更新的高成本,在車用領域更可避免採用昂貴的車輛召回方式來對車載系統進行升級。

在物聯網越來越普及的現在,產品使用壽命是一個非常重要的課題。尤其在工業應用、汽車工業領域中,設備製造商通常都採用即時線上韌體更新 (OTA) 來延長產品周期,並藉此同時解決可靠性和安全問題。OTA更新有助於保持用戶對產品的滿意度,降低工程師執行現場更新的高成本,在車用領域更可避免採用昂貴的車輛召回方式來對車載系統進行升級。

OTA必須在下載和安裝更新的過程中,盡量避免發生任何可預見的風險,才能有效地減少停機維修的機會。 在成本壓力和上市時間的需求下,通常希望能在現有系統架構下,或是經由些許修改後,可以簡單快速地實施OTA功能。而OTA也已成為通過無線或有線 (Internet協議) 方法進行韌體更新的通用術語。

在快閃記憶體上實現OTA功能會影響其成本,設計複雜性和性能。 目前存在許多種實現的方法,而每種方法都有其優點和缺點。本文將探討幾種這樣的設計技術,並解釋了在現有硬件設計中實現OTA功能時,如何使用Winbond的SpiStack® 記憶體提供獨特的優勢。

使用現有快閃記憶體來實現OTA

典型的物聯網嵌入式系統中,包括了支持DRAM的主控芯片和用於存儲程式碼的非揮發性NOR快閃記憶體。在初始啟動之後,透過“code shadowing”的過程,快閃記憶體中的程式碼被解壓縮並上傳到DRAM以供芯片組執行。在某些狀況下我們可以在不更改此硬件配置的情況下添加OTA功能。

在此系統架構中,可以通過暫時停止正常操作,將新版本的韌體下載並認證到DRAM中,並通過一系列擦除和編程操作一次將一個區塊傳送到NOR快閃記憶體來執行OTA更新。 這是通常應用的OTA方法,舉例來說,假設觀眾可以容忍暫時停止服務以及不斷電警告 (見圖1) 就能夠在半夜進行機頂盒的系統更新。

20190312NT41P1
圖1 機頂盒的韌體更新,需要警告用戶不要將設備斷電。(Image credit: Hyderabaduser, under Creative Commons licence.)

但有兩個原因使得此方法不適用於工業、車用,以及其他重要任務的設備。 第一,暫停日常維護操作通常是昂貴、不方便、或不可接受的。

第二,這種方法包含了不可接受的失敗風險。如果在更新過程中意外斷電,存儲在DRAM中的新韌體資料將立即消失。快閃記憶體可能已擦除了舊版的韌體資料,但新版的韌體資料可能僅有一部分寫入。這意味著系統將只存在著不完整的韌體,或快閃記憶體中存儲了兩個不同韌體資料的一小部分。在下一次系統啟動時,在最好的情況下,系統將無法正常運行,但更有可能的是因系統無法啟動而導致設備無法使用。

對於一般消費性產品而言,這種故障的小風險可能是可以接受的。因為它可能不需要專用於OTA功能的額外存儲空間,使得這方法具有成本上的優勢。

對於工業設備或車用領域而言,失敗的風險是不可接受的–其對於質量與可靠性的期望,遠高於一般消費產品。對於這些應用領域來說,需要其他的更新方法,能夠保持舊版的韌體資料,直到成功下載和存儲新版的韌體資料。

使用延伸儲存空間的快閃記憶體來實現OTA

在不先擦除當前韌體資料的情況下儲存新版韌體資料的一個簡單的方法是增加可用的快閃記憶體容量。這通常意味著只能將快閃記憶體的容量加倍,來滿足當前版本和新版本同時存儲在同一設備中。

我們可藉由地址偏移機制來確定要執行的活動代碼映像。這可以由主控芯片組或軟件支持。目的是改變程序計數器以指向兩個版本韌體資料之一以供執行。當成功更新新版本韌體資料時,快閃記憶體執行擦除和編程操作,並調整地址偏移量將代碼執行指向新的韌體資料;至於舊韌體資料所在的快閃記憶體區域,可用於未來的更新。

此方法解決了當韌體更新操作被電源中斷影響時,系統無法啟動或發生故障的風險。由於僅使用一個快閃記憶體,並且在韌體更新期間,快閃記憶體不可用於讀取操作,因此系統無法保持隨時可用的狀態。

為了正確看待這一點,考量在最差的情況下擦除64kB區塊可能需要2秒,而一般的256Mb (32MB) NOR快閃記憶體有512個這樣的區塊。 因此,系統設計人員可能需要為更新過程分配數百秒。對於許多應用程序而言,這段停機時間太長。更別說執行DRAM的應用程序也需要定期訪問快閃記憶體,因此這種長時間的快閃記憶體停機時間是不可接受的。

使用各別快閃記憶體來實現OTA

為了能讓快閃記憶體在進行更新的同時能繼續讀取操作,需要在現有韌體之外為新版本韌體提供單獨且平行的存儲設備。

實現此目的的一個顯而易見的方法是複製存放在主快閃記憶體的程式碼到額外的快閃記憶體空間。在OTA更新時,用這一塊額外的空間來存儲新程式碼,並保持非激活狀態。 成功編程新程式碼後,這新的存放空間將被激活並指定為主快閃記憶體。 而先前的主快閃記憶體將被改指定為冗餘快閃記憶體且非激活。

此方法安全可靠,不存在系統故障風險。因此,它在需要高度可靠性和可用性的系統中很受歡迎。然而這種方法具有更高的材料成本,並且需要更多的電路板空間、新的佈局,以及使用來自芯片組的附加信號來控制冗餘的閃存設備。由於設計人員持續面臨著降低成本的壓力,我們有其他方法可以以更低的成本和更低的複雜性實現相同的優勢。

如上所述,需要OTA能力的嵌入式系統通常包括用於存儲程式碼的外部NOR快閃記憶體。 該問題的一個解決方案是在NOR快閃記憶體內創建一個分區,產生一組存儲器塊以支持編程/擦除操作,以及一個單獨的存儲區以支持讀取操作,兩者都在同一個芯片上。

這是一種稱為Read While Write 的快閃記憶體結構。它們基本上是兩個控制電路合併到一個芯片中。 不幸的是,閃存技術的基本特徵阻礙了這種組合。因為編程/擦除操作在高電壓和電流下運行,有很大的雜訊。實際上,雜訊總是會影響性能並降低工作頻率。為了在沒有數據損壞的情況下同時執行讀取操作,芯片需要精心的內部隔離。此種架構還需要複製內部數據路徑和鎖存器以實現同時操作。這些額外的電路設計通常需要更多的芯片面積並增加了產品的成本。

實際上,由於生產的成本較高,使得Read While Write 快閃記憶體已經失寵。此外,僅少數供應商支援這種特殊的快閃記憶體,因此限制了採購人員的選擇。 雖然使用Read While Write 快閃記憶體支援儲存兩個韌體程式碼,且在更新一個程式碼時支援對另一個程式碼的讀取,但更高的成本、設計更改、和有限的芯片組可用性抵消了這些優勢。

使用SpiStack堆疊芯片記憶體來實現OTA

在單個快閃記憶體、兩個快閃記憶體、或Read While Write快閃記憶體上支持OTA實現的挑戰促使華邦推出SpiStackTM產品,該產品使用單個Chip Select (/CS) 信號將兩個相同的快閃記憶體芯片堆疊在一個封裝中。在硬件外觀上,它看似是一個單一的快閃記憶體,透過系統軟件選擇兩個芯片其中之一來使用。

利用這種架構,一個芯片可以執行編程/擦除操作,而另一個芯片可以同時執行讀取操作。 因為儲存空間由兩個單獨的芯片提供,所以消除了雜訊問題並且可以高速執行並行操作。

許多快閃記憶體製造商已經開發出堆疊芯片產品:堆疊快閃記憶體芯片的優勢在於可以在與單芯片快閃記憶體相同的封裝中提供更高的儲存容量。例如,使用單芯片256Mbit NOR快閃記憶體進行代碼存儲的嵌入式系統採用8mm × 6mm WSON封裝,可以在同一封裝中替換為512Mbit SpiStack元件。雙芯片元件將支持讀寫操作以進行OTA更新,而不需暫停讀取操作,並且當電源意外中斷時不會有丟失現有韌體資料的風險。

這種方式雖然大大地符合工業和車用系統的重要要求。但要如何由主晶片控制這兩個記憶體芯片? 如果每個記憶體芯片都需要來自主晶片的Chip Select (/ CS) 信號,則此快閃記憶體上將需要增加一個引腳 – 因此8引腳封裝將被更高的引腳數封裝替換,以支持額外的引腳連接到主晶片。

將8引腳快閃記憶體改用更高引腳數的快閃記憶體需要重新設計電路板。對於某些系統,主晶片上沒有備用引腳可將/ CS信號驅動第二個記憶體芯片。因此,雖然堆疊芯片選項看起來很有吸引力,但如果它需要額外的/ CS引腳,不僅僅是不方便整合到系統設計中,甚至會無法整合到系統設計中。

20190312NT41P2
圖2 在SpiStack中使用C2h芯片選擇指令搭配Die ID來做芯片選擇。(Image credit: Winbond)

為了避免這個問題,華邦在SpiStack產品上開發了利用特殊的軟件指令C2h來做芯片選擇的技術。該軟件指令根據8位Die ID將芯片選擇操作從一個芯片引導到另一個芯片 (參見圖2)。 兩個芯片通過相同的引腳與主晶片連接,這意味著無需額外的引腳,因此不需要重新設計電路板來支持OTA更新功能,也無需佔用額外的/ CS引腳 (參見圖3)。

20190312NT41P3
圖3 在軟件中實現記憶體芯片選擇功能,主控芯片就只需一個芯片選擇 (/CS) 引腳。(Image credit: Winbond)

技術目前在NOR記憶體上有W25M512JV和W25M512JW這兩種大容量產品。其他NOR (或NOR和NAND) 快閃記憶體組合也可根據要求提供。SpiStack使用普及於產業中的標準封裝和引腳,其中包括了WSON8和BGA24。

結論

在工業和車用系統中實施OTA更新需要一種能夠在更新時連續操作記憶體的架構,並且在保留先前韌體程式碼的同時,將更新的韌體程式碼儲存在非揮發性記憶體中。在保持系統高速運行的同時,實現OTA更新功能,而無需重新設計電路板。達到這些要求的理想方法是使用冗餘記憶體芯片堆疊方法,並使用軟體選擇命令 (C2h) 來控制複數記憶體芯片的選擇。而能提供這種解決方案的記憶體,就是華邦的SpiStackTM系列產品!

有關W25M512JVxxx和W25M512JW產品的規格書,請訪問:www.winbond.com.

Image credit – set-top box firmware update image
Hyderabaduser
(https://commons.wikimedia.org/wiki/File:Set-top_box_firmware_being_updated.jpg), “Set-top box firmware being updated“, https://creativecommons.org/licenses/by-sa/3.0/legalcode

活動簡介

人工智慧(AI)無所不在。這一波AI浪潮正重塑並徹底改變科技產業甚至整個世界的未來。如何有效利用AI協助設計與開發?如何透過AI從設計、製造到生產創造增強的體驗?如何以AI作為轉型與變革的力量?打造綠色永續未來?AI面對的風險和影響又是什麼?

AI⁺ 技術論壇聚焦人工智慧/機器學習(AI/ML)技術,涵蓋從雲端到邊緣、從硬體到軟體、從演算法到架構的AI/ML技術相關基礎設施之設計、應用與部署,協助您全面掌握AI最新技術趨勢與創新,接軌AI生態系佈局,讓機器學習更快速、更經濟、更聰明也更有效率。

贊助廠商

發表評論

訂閱EETT電子報