為物聯網程式記憶體應用選擇和使用正確的快閃記憶體技術

作者:Bill Giovino

資料提供者:DigiKey 北美編輯群

隨著物聯網節點變得愈來愈強大,處理需求可能會提升到一個全新的水平,需要完整的嵌入式作業系統 (如 Linux) 才能正確管理所有複雜的執行任務。雖然將此程式碼儲存在 microSDHC 快閃記憶卡上很方便,但大多數的 microSDHC 快閃記憶卡都只是用來儲存資料而非儲存作業系統,不過有些廠商已經想出一些創新的解決方案。

本文說明了嵌入式作業系統的角色,以及為何將作業系統和應用程式碼放在物聯網節點中的 microSDHC 快閃記憶卡上通常是明智之舉。之後會解釋快閃記憶卡性能劣化的模式,以及作業系統如何特別受到這種劣化現象所影響。接下來會介紹設計人員能如何利用新的快閃記憶體實作來克服此劣化現象,以保證物聯網節點達到高效且可靠的實作。

為何使用嵌入式作業系統

對於某些物聯網應用來說,可以在遠端物聯網節點執行的預處理作業愈多,物聯網節點需要傳回中央集線器的資料就愈少,這樣可釋放網路頻寬。預先經過測試的嵌入式作業系統可高效率地處理許多個別的任務,因此能支援複雜的預處理作業,並以可預測 (確定性) 的方式進行多任務作業。當然,這將會對微控制器施加額外的要求,不僅需要更快的時脈速度,更重要的是,需要更多的程式記憶體。

商用或開源的現成嵌入式作業系統還擁有另一項優點,即經過預先測試的可靠程式碼很少需要更新。例如,可用的嵌入式 Linux 作業系統可能只會每季更新一次,或僅安裝緊急安全修補程式。嵌入式作業系統和所需的應用程式碼可能需要 8 GB 或者更多空間,由於作業系統很少更新,因此將作業系統儲存在一個由技術人員手動實體更新的 microSDHC 快閃記憶卡上會更方便。這也適用於未來的記憶體擴充,因為現有的 4 GB 快閃記憶卡可以在下次技術人員造訪時,根據需求輕鬆更換為 8 GB 或更大容量的卡 (圖 1)。

Swissbit Class 10 microSDHC S-140u 記憶卡圖片

圖 1:Swissbit Class 10 microSDHC S-140u 記憶卡支援高達 104 MB/s 的速度,足夠用於高速存取程式記憶體。(圖片來源:Swissbit)

比起透過無線網路更新的快閃記憶體,在以實體方式更新的 microSDHC NAND 快閃記憶卡上儲存數 GB 的嵌入式作業系統有幾項優點。在無線網路中,根據所使用的仲裁方案,更新 4 GB 或更大的嵌入式作業系統可能會從操作通訊中竊取無線頻寬。透過網路更新還需要使用比正常容量大兩倍的 microSDHC 卡,因為需要足夠的儲存空間來執行作業系統以及容納傳入的更新。

由於無線電活動以及更高的快閃寫入電壓和電源要求,透過無線方式更新快閃程式碼還會降低電池續航力。

從快閃記憶體執行的嵌入式作業系統,對快閃記憶體單元的要求也與資料儲存不同。大多數商用的 microSDHC 快閃記憶卡製造商都設計用來儲存資料。最常見的商業用途是用於行動元件的多媒體儲存。雖然影片、圖像或音訊檔案中的多位元錯誤可能不會被最終用戶發現,但關鍵的嵌入式作業系統檔案中只要有一個位元錯誤,就有可能導致整個系統故障。

快閃記憶體的壽命有限。快閃記憶體陣列每次的寫入作業都會縮短陣列的壽命。每個半導體快閃記憶體規格都列出了有限次數的抹除/寫入週期。隨著快閃單元接近規格的限制,單元便愈來愈可能磨損並且不接受新的編程狀態。

平均抹寫是防止快閃陣列因寫入作業而性能劣化的一種常見方法。資料不會寫入相同的快閃記憶體位置,而是均勻地分佈在整個快閃半導體記憶體陣列上,確保在快閃記憶體矩陣上均勻地寫入。透過平均抹寫,當微控制器寫入實體記憶體中的某一個位置時,快閃控制器可以將這個位置對應到快閃記憶體陣列中的不同位置。

讀取干擾錯誤如何產生

作業系統檔案的存取頻率比資料檔案要高出許多,因此無法容忍檔案位元錯誤的問題。某些情況下可能會不斷地讀取核心作業系統檔案,因此可能在快閃陣列中造成位元錯誤。

快閃記憶體以模塊的形式排列,每個模塊包含許多頁面。模塊是記憶體中可抹除的最小元素,而頁面是記憶體中可讀取或編程的最小元素。快閃模塊一般的大小為 256 KB,每個可包含 64 個頁面,每個頁面為 4 KB。每頁還包含額外的 64 位元組,用於錯誤修正碼 (ECC)、抹除計數以及邏輯到實體轉譯的資訊。

在進行單頁資料的快閃讀取作業時,即使該頁中只需要讀取一個位元組,也會對該頁所屬的整個模塊施加很小的讀取電壓。由於快閃處理單元技術的關係,這也會為模塊中周圍的頁面導入較小的電壓。這可以將電子注入到單元絕緣層中,類似於對單元進行編程,即所謂的「軟編程」。重複對同一個模塊施加微小的讀取電壓,最終會干擾未讀取之快閃頁面的編程作業。隨著時間的推進,這可能會導致相鄰單元的狀態變成不同的值。

雖然大多數 NAND microSDHC 快閃記憶卡都有某種形式的錯誤修正功能來修正單元錯誤,但軟編程所造成的錯誤數量可能會多到無法修正的臨界水準,導致微控制器從位元位置讀取不同的值,造成檔案損毀錯誤。這些位元錯誤即稱作讀取干擾錯誤。

用於儲存資料的 NAND microSDHC 快閃記憶卡很少出現讀取干擾錯誤。這是由於快閃陣列上所執行的寫入作業在平均抹寫之後,快閃位置會重新編程,從而消除了所有軟編程的影響。但用於嵌入式作業系統的快閃陣列很少會編程,以至於可能無法避免讀取干擾錯誤。

單層式儲存 (SLC) 快閃記憶卡的額定讀取次數為一百萬次,多層式儲存 (MLC) 快閃記憶卡的額定讀取次數則為十萬次,之後可能會出現讀取干擾錯誤。一般認為很少會發生資料快閃的讀取干擾錯誤,因此規格書上通常不會註明這些數字。

使用 RDM 來防止讀取干擾錯誤

為了防止讀取干擾錯誤,Swissbit 開發了一種稱為讀取干擾管理 (RDM) 的功能。在 Swissbit 的 RDM 中,快閃記憶卡控制器會追蹤每個快閃模塊的讀取作業次數。當模塊達到內部定義的讀取作業次數時,控制器會將資料移動到新模塊 (類似用於寫入作業的平均抹寫)。如有必要,在對新模塊執行寫入作業時,SD 控制器的錯誤修正碼 (ECC) 會修正任何損毀的資料。

RDM 已在 Swissbit 的 SFSD8192N1BM1MT-I-QG-221-STD 8 GB S-450u UHS-I Class 10 microSDHC 快閃記憶卡中執行。S-450u 是專為使用嵌入式作業系統的工業應用而設計,具有足夠的空間用於許多複雜物聯網節點的嵌入式 Linux 作業系統和應用程式碼。在 SDR104 模式下,S-104u 可支援高達 104 MB/s 的資料存取速度。

使用 microSDHC 卡執行程式記憶體作業

如前所述,microSDHC 卡通常僅用於資料記憶體,因此大多數哈佛架構微控制器上的周邊裝置都只支援將 microSDHC 卡作為資料記憶體來存取。這限制了可用的選項。

現有的解決方案會讀取 microSDHC 卡並將程式記憶體載入 RAM 中,然後從 RAM 來執行。RAM 晶片不僅增加了主機板的成本,而且程式擴充僅限於 PC 板上可用的板載 RAM 數量。

MicroSDHC 卡能夠在 SD 模式或 SPI 模式下介接。

要將微控制器介接作為程式記憶體的 S-450u microSDHC 卡,所選的微控制器需要支援兩種 microSDHC 匯流排協定的其中一種:

  1. 對應到程式記憶體的 SDHC 卡 SD 模式控制器周邊裝置 (圖 2)。這可以是外部周邊裝置,也可以是內部微控制器周邊裝置。該介面由六種訊號組成,包括四位元資料 (DAT [0-3])、一個時脈 (CLK) 和一個雙向命令/回應訊號 (CMD)。資料一次傳輸四位元,並提供最快的程式執行速度。而主機控制器或微控制器為 microSDHC 卡提供時脈。
  2. 使用 SD 模式連接 microSDHC 卡圖片

    圖 2:使用 SD 模式連接 microSDHC 卡時,會透過簡單的六訊號介面來提供最快的記憶體存取速度。(圖片來源:DigiKey)

  3. 一個支援就地執行 (XIP) 且可設定的 SPI 介面。可以透過存取 SPI 模式下的 microSDHC 卡來執行卡中的程式碼,快速傳輸資料,但速度不如 SDHC 卡模式。XIP 記憶體將卡的記憶體對應到微控制器的程式記憶體空間中,讓 microSDHC 卡的存取對主機韌體來說透明可見。

microSDHC 卡在 SD 卡模式下啟動。要選擇單一位元 SPI 模式,在開啟電源後的前六個時脈,DAT3 訊號必須上拉至 VDD,同時透過將 CMD 下拉至 VSS 向卡發送 RESET 命令 (000000b)。此後,卡將保持 SPI 模式,直到電源關閉為止。

Maxim Integrated 的 MAX32652 Arm® Cortex®-M4F 微控制器是一種專為物聯網節點設計的低功率微控制器。此產品的晶片上具有 QSPI XIP 介面,如果配置正確,能夠從 microSDHC 卡執行程式碼。

MAX32652 還具有完整的 SDHC 介面,主要用於資料記憶體的儲存。

需要注意的是,微控制器的這些介面必須是程式記憶體介面。無論使用何種匯流排協定或介面,微控制器的晶片上都需要具有一些快閃啟動程式碼,以初始化 microSDHC 卡的介面。

插槽安全

工業應用 microSDHC 卡的插槽經常不受重視。對於要求耐用的應用,錫或類似的觸點材料會隨著時間鏽蝕或失去抗拉強度。黃金觸點雖然比較貴一些,但物有所值,能提供可靠的觸點連接,而且一段時間後仍能保有抗拉強度。

Amphenol ICC 的 10101704J6#2A 通用快閃存儲 (UFS) 和 microSDHC 連接器/插槽能為任何相容 microSDHC 的卡提供可靠的連接 (圖 3)。該插槽具有防碰撞觸點,可防止記憶卡在插入和拔出的過程中卡住。

Amphenol 的 10101704J6#2A UFS 和 microSDHC 卡連接器/插槽圖片

圖 3:10101704J6#2A UFS 和 microSDHC 卡連接器/插槽支援現有的 microSDHC 和下一代 UFS 卡,資料傳輸速度高達 6 GB/s。(圖片來源:Amphenol)

此 Amphenol 插槽還能支援未來擴充,因為其與新的通用快閃存儲 (UFS) 格式相容,後者具有與 microSDHC 類似的尺寸,但觸點覆蓋區不同 (圖 4)。UFS 卡支援兩倍於 microSDHC 的速度,具有差動雙向資料傳輸功能。

microSDHC 卡 (左) 和 UFS 卡 (右) 圖片

圖 4:左側是 microSDHC 卡,右側是新的 UFS 卡。UFS 卡支援兩倍於 microSDHC 的速度,具有差動雙向資料傳輸功能。(圖片來源:DigiKey)

一些網路連接的物聯網節點可能位於沒有 Wi-Fi 或 Wi-Fi 不實用的遠端位置。對於這些情況,可以透過無線行動數據連接來執行網路功能。這需要使用用戶 SIM 卡,該 SIM 卡也需要插入插槽。

節省主機板空間的一種簡單方法是使用組合式 microSDHC 和 SIM 卡插槽,如 Molex1041681620 雙 SIM 卡和 microSDHC 卡插槽 (圖 5)。該插槽還具有黃金觸點,可在惡劣環境中提供可靠的連接,並具有防碰撞觸點。

Molex 的 1041681620 組合式 SIM 卡和 microSDHC 卡插槽圖片

圖 5:1041681620 組合式 SIM 卡和 microSDHC 卡插槽大大地減少了主機板空間,並提供防碰撞觸點以防止在插入和拔出時出錯。(圖片來源:Molex)

結論

microSDHC 快閃記憶卡通常用於資料儲存,但現在正尋求功能改善,以支援為嵌入式作業系統就地執行程式記憶體的獨特需求。此發展過程的一部分包括開發速度更快、能支援持續性讀取請求的快閃記憶體。此外,微控制器也在不斷進化,以支援可從外部 microSDHC 卡可靠執行程式碼的新記憶體介面,同時減少或消除快閃方面的錯誤。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Bill Giovino

Bill Giovino

Bill Giovino 是電子工程師,擁有美國雪城大學的電機工程學士學位,也是少數從設計工程師跨足現場應用工程師,再到技術行銷領域的成功典範之一。

Bill 過去 25 年來熱衷於向科技和非科技業的對象推廣新技術,包括 STMicroelectronics、Intel 和 Maxim Integrated 等多家企業。Bill 在 STMicroelectronics 任職期間,曾協助領導該公司順利進軍微控制器領域。在 Infineon 任職時,則策劃出該公司首款在美國汽車業大受歡迎的微控制器設計。Bill 目前是他個人公司 CPU Technologies 的行銷顧問,曾協助諸多企業讓表現不佳的產品重獲市場青睞。

Bill 更是採用物聯網的先驅,包括在微控制器中首次納入完整的 TCP/IP 堆疊。Bill 致力於推廣「用教育促成銷售」的理念,也認可在線上推銷產品時有清楚完整文字說明的重要性。他在 LikedIn 熱門的半導體銷售和行銷群組中擔任管理員,也擁有深厚的 B2E 知識。

關於出版者

DigiKey 北美編輯群