物聯網 (IoT) 設備正在快速進入市場——從家用電器到醫療設備再到汽車——因為制造商必須通過新的創新和采用或集成新技術的靈活性保持領先于競爭對手。隨著新功能和法規的采用,設計人員必須在其產品中增加靈活性,以滿足不斷發展的物聯網生態系統。固件更新不僅允許在客戶站點的初始部署期間進行定制,而且還允許在產品投入使用后添加新功能/特性或允許在使用過程中修復任何固件問題。
諸如 NOR 閃存的非易失性存儲器 (NVM) 設備由于其可重編程性和可靠性而通常用作固件代碼存儲介質。通過重寫駐留在設備中使用的 NVM 中的部分設備固件代碼,制造商可以輕松更新設備功能。
在尋求更新固件時,需要考慮三件事:
更新什么/多少代碼
多久更新一次
執行更新所需的時間(速度)
要更新什么/多少固件代碼
在物聯網設備的初始設計階段,必須考慮更新什么以及更新多少固件代碼。固件的可更新部分必須與不可更新部分存儲在 NOR 閃存設備的單獨區域中。
更新任何一塊 NOR 閃存首先要擦除內存的該部分,然后將新信息編程到該部分中。NOR閃存被組織成不同大小的部分,稱為扇區和塊。NOR 閃存設備,例如 SST 的 64 Mb SuperFlash SST26VF064B 技術,被組織成統一的 4 KB 扇區(4 KB = 4 * 1024 * 8 位 = 32,762 位),可以單獨擦除和重新編程。它們還可以組織成更大的 8 KB、32 KB 和 64 KB 塊,也可以單獨擦除。因此,1 個 8 KB 塊有 2 個扇區,1 個 32 KB 塊有 8 個扇區,1 個 64 KB 塊有 16 個扇區。圖 1 顯示了 SST26VF064B 在 8/32/64 KB 塊中的存儲器結構,每個塊都可以單獨保護。
【圖1 | SST26VF064B 的內存組織(映射),由八個 8 KB 塊、兩個 32 KB 塊和 126 個 64 KB 塊組成。點擊放大。]
在對閃存的任何部分執行任何更新之前,該部分中的塊必須不受保護以允許擦除和編程。完成更新后,謹慎的做法是再次保護這些塊,以防止對這些區域的任何無意寫入或擦除。
固件的可更新部分必須以扇區和塊的形式組織,以便有足夠的靈活性來允許有限和最大的特性/功能更新。由于更新的速度取決于需要擦除和重新編程的扇區和塊的數量,因此在組織固件的可更新部分時,最好同時考慮速度和靈活性。圖 2 顯示了將內存組織為可更新和不可更新部分的示例。不可更新部分(例如引導代碼)存儲在受保護區域中,而固件的可更新部分(例如特性/功能)則根據靈活性要求分為更小或更大的塊。可更新的圖像文件存儲在較大的塊中,可更新的變量/參數存儲在較小的塊中。
【圖2 | 在不可更新部分(例如引導代碼)和可更新部分(例如函數/特性、圖像文件和參數變量的代碼)中組織內存。點擊放大。]
多久更新一次
您可能想要更新固件的頻率的主要限制是應用程序中使用的內存的耐用性限制。SST26VF064B 等 SuperFlash 技術存儲器具有 100,000 次耐久周期,這意味著每個扇區可以編程和擦除 100,000 次。更新固件 100,000 次的可能性聽起來很多;然而,許多物聯網設備在運行期間收集數據并將信息存儲在 NOR 閃存中,因此在計算最大耐用周期限制時必須考慮這一點。
在內存中分配足夠的扇區以考慮耐用性也很重要。例如:
假設物聯網設備正在收集和存儲 16 字節的信息,并且在產品的生命周期內預計會收集和存儲 1 億次信息。應該分配的扇區數可以計算如下:
1 個扇區 = 4 KB
假設扇區中的所有地址位置都用于存儲信息,一次 16 個字節的數據,并被寫入一個新的地址位置,直到到達扇區的末尾(例如,0×0000-0x000F 然后 0×0010 -0x001F 然后 0×0020-0x002F 等)。
由于 4 KB/16 字節 = 256,這是在達到扇區容量并擦除扇區中的任何數據之前可以寫入存儲的次數。如果一個扇區的耐久極限是100,000個周期,一個扇區可以寫256次100,000個周期,那么可以收集和存儲25,600,000次數據。
如果一個應用程序需要收集和存儲 1 億次數據,則要分配的扇區數計算為 100,000,000/25,600,000 = 3.9。因此,在此示例中,需要分配 4 個扇區來存儲應用程序生命周期中的 16 個字節的數據。
物聯網設備工程師需要進行類似的計算,為數據記錄參數分配足夠的扇區和塊,以免超出其 NOR 閃存設備的耐用性限制。
更新速度
更新的速度可以根據需要擦除和重新編程的塊和扇區的數量來計算。假設需要重新編程存儲在 SST26VF064B 中幾個 64 KB 塊中的 1 Mb、2 Mb 或 4 Mb 固件代碼/數據。代碼/數據可以由固件代碼、圖像文件或其他需要更新的代碼組成。執行更新涉及執行一系列命令指令以進行閃存。該序列將從取消保護內存塊開始,擦除這些塊,用更新的數據/代碼對這些塊進行編程,然后重新保護這些內存塊。
對于 SST26VF064B,更新 1 Mb、2 Mb 或 4 Mb 存儲器所需的指令序列如表 1 所示。從表 1 可以明顯看出,兩個最重要的周期是擦除時間和編程時間。
[表 1 | 用于更新 1 Mb、2 Mb 或 4 Mb 內存的閃存命令指令序列。點擊放大。]
SST26VF064B 采用 SuperFlash 技術,可提供出色的擦除性能。SuperFlash 技術與傳統閃存的擦除和編程性能比較如表 2 所示。與傳統閃存相比,SuperFlash 技術提供的卓越擦除性能對于縮短更新時間非常有用。SST26VF064B 支持的最大時鐘頻率為 104 MHz,最大扇區擦除時間為 25 ms,最大塊擦除時間為 25 ms,最大頁面編程時間為 1.5 ms。每個命令指令與以 104 MHz 時鐘頻率運行的閃存之間也需要 12 ns 延遲(CE 高電平時間)。
[表 2 | SST26VF064B 和傳統閃存的編程和擦除時間。點擊放大。]
使用表 1 中所示的命令序列以及編程和擦除時間的知識,計算更新 1 Mb、2 Mb 或 4 Mb 的 SuperFlash 技術存儲器和傳統閃存所需的時間量如分別見表 3 和表 4。此類計算必須由物聯網設備工程師完成,以估計更新速度,以最大限度地減少物聯網設備在更新期間的停機時間。
[表 3 | 更新 1 Mb、2 Mb 或 4 Mb SuperFlash 技術內存所需的時間。點擊放大。]
[表 4 | 更新 1 Mb、2 Mb 或 4 Mb 傳統閃存所需的時間。點擊放大。]
結論
物聯網設備設計工程師需要提供更新應用程序代碼和數據的靈活性。更新什么和多少代碼、更新頻率以及更新速度是設計物聯網設備時需要解決的問題。NVM 的選擇會影響這些問題,并在計算代碼更新的時間和速度方面發揮關鍵作用。
審核編輯:郭婷
-
存儲器
+關注
關注
38文章
7484瀏覽量
163765 -
物聯網
+關注
關注
2909文章
44557瀏覽量
372790 -
IOT
+關注
關注
187文章
4202瀏覽量
196698
發布評論請先 登錄
相關推薦
評論