在嵌入式系統開發中,顯示技術與資料儲存策略息息相關,需兼顧效能、容量與功耗。資料存取速度、螢幕更新頻率、動畫顯示效能都直接影響使用者經驗。檔案系統的選擇、EEPROM 和 KV 儲存的應用,則決定了資料管理的效率和可靠性。外部 Flash 的速度、容量、功耗以及時間戳記的處理,都是設計時必須考量的因素。資料驅動系統的設計中,管道和過濾器模式有助於簡化資料處理流程,但需注意資料延遲的累積。同時,系統的資料頻寬、計算需求、RAM 容量等也需仔細評估,確保系統能有效處理大量資料,並在資源限制下維持穩定執行。

顯示技術與資料儲存

在顯示技術的應用中,資料的存取和儲存是非常重要的。以下是有關顯示技術和資料儲存的重點:

顯示技術

  1. 資料存取:需要確定資料如何被存取,包括通訊匯流排傳送一個資料位元的時間、顯示器接收一個資料位元的時間等。
  2. 更新時間:根據最大時間/位元,計算更新整個螢幕的時間。
  3. 動畫更新:對於動畫或快速變化的區域,計算更新該部分螢幕的時間。

資料儲存

  1. 資產檔案:需要取得資產檔案(例如影像檔案),並使其可供程式使用。
  2. 資產對映:建立資產檔案名稱與程式識別符之間的對映關係。
  3. 資產封裝:將資產檔案封裝成二進位制檔案,並按照特定的順序排列。

模擬EEPROM和KV儲存

  1. 模擬EEPROM:使用flash記憶體模擬EEPROM,需要處理寫入和擦除的限制。
  2. KV儲存:使用鍵值儲存(KV儲存)來儲存資料,需要處理存取時間和空間的限制。

小型檔案系統

  1. 小型檔案系統:使用小型檔案系統(如littlefs)來管理flash記憶體,需要考慮寫入和擦除的限制。
  2. 穿級和錯誤處理:需要實作穿級和錯誤處理機制,以確保資料的完整性和可靠性。

資料儲存

  1. SPI flash:使用SPI flash來儲存資料,特別適合於生成大量資料的系統。
  2. 檔案系統:可以使用檔案系統來儲存資料,但可能會導致過多的flash存取和不可預測的擦除週期。
  flowchart TD
    A[顯示技術] --> B[資料存取]
    B --> C[更新時間]
    C --> D[動畫更新]
    D --> E[資產檔案]
    E --> F[資產對映]
    F --> G[資產封裝]
    G --> H[模擬EEPROM]
    H --> I[KV儲存]
    I --> J[小型檔案系統]
    J --> K[穿級和錯誤處理]
    K --> L[資料儲存]
    L --> M[SPI flash]
    M --> N[檔案系統]

圖表翻譯:

此圖表展示了顯示技術和資料儲存之間的關係。首先,顯示技術需要確定資料如何被存取,然後計算更新時間和動畫更新時間。接下來,需要取得資產檔案並建立資產對映關係,然後將資產檔案封裝成二進位制檔案。模擬EEPROM和KV儲存是用於管理flash記憶體的技術,小型檔案系統可以用於管理flash記憶體。最後,SPI flash可以用於儲存資料,檔案系統也可以用於儲存資料,但可能會導致過多的flash存取和不可預測的擦除週期。

外部快閃記憶體記憶體

在設計嵌入式系統時,外部快閃記憶體記憶體是一個重要的組成部分。它可以用於儲存資料、程式碼和其他資訊。然而,在使用外部快閃記憶體記憶體時,需要考慮幾個因素,例如快閃記憶體的速度、容量和功耗。

快閃記憶體速度和容量

快閃記憶體的速度和容量是兩個重要的因素。快閃記憶體的速度決定了資料傳輸的速率,而容量則決定了可以儲存的資料量。一般來說,快閃記憶體的速度越快,容量越大越好。但是,快閃記憶體的速度和容量也會影響系統的功耗和成本。

功耗和成本

功耗和成本是兩個重要的考慮因素。快閃記憶體的功耗會影響系統的整體功耗,而成本則會影響系統的整體成本。一般來說,快閃記憶體的功耗越低,成本越低越好。但是,功耗和成本也會影響快閃記憶體的速度和容量。

時間戳記問題

時間戳記是另一個重要的問題。時間戳記可以用於記錄資料的時間和日期,但是它也會影響系統的整體效能。一般來說,時間戳記越精確越好,但是它也會增加系統的功耗和成本。

資料儲存和檢索

資料儲存和檢索是兩個重要的問題。資料儲存涉及將資料寫入快閃記憶體,而資料檢索涉及將資料從快閃記憶體讀出。一般來說,資料儲存和檢索越快越好,但是它也會影響系統的整體效能。

模數轉換和訊號處理

模數轉換和訊號處理是兩個重要的問題。模數轉換涉及將模擬訊號轉換為數字訊號,而訊號處理涉及對數字訊號進行處理。一般來說,模數轉換和訊號處理越精確越好,但是它也會增加系統的功耗和成本。

數字感測器和電磁幹擾

數字感測器和電磁幹擾是兩個重要的問題。數字感測器可以用於檢測環境中的變化,而電磁幹擾可以影響系統的整體效能。一般來說,數字感測器越敏感越好,但是它也會增加系統的功耗和成本。電磁幹擾可以透過遮蔽和過濾來減少,但是它也會增加系統的成本。

第8章:構建系統

資料處理

到目前為止,我們已經看到了資料生成器和資料消費者,並且瞭解瞭如何傳送和接收資料。然而,在這兩者之間還有一些缺失的部分。瞭解如何在軟體中移動資料至關重要,以構建一個偉大的系統。讓我們從系統層面的資料處理的大局開始,然後深入到具體的機制。

在第5章中,我們探討了事件驅動的系統:事情的發生是由於感測器被啟用,從而導致事件的發生,並改變了系統的狀態。然而,並非所有嵌入式系統都可以或應該被設定為事件迴圈和狀態機。

有一類別問題的目標是取得資料、處理它、對結果進行某些操作,然後重複。這樣的資料驅動系統中沒有事件,只有一個不斷增長的資料山,軟體需要處理它。理想情況下,系統可以以略快於資料生成速度來處理資料。資料驅動系統的例子包括:

  • 飛機的黑盒子,連續記錄音訊和遙測資料。
  • 槍聲定位感測器,監聽環境並在檢測到沖擊聲時生成事件以傳送給主機。
  • 偵察衛星,記錄影像資料、壓縮它,並在與連結點在範圍內時將其傳送到地球。
  • MP3播放器,從音訊儲存中讀取資料、解壓縮它,並將位元組傳送到DAC以生成聲音訊號。
  • 自動跟蹤系統,讀取位置並調整車輛速度。

資料驅動系統可以被理解為玄貓。資料的速率和它需要被處理的速度是系統的主要特徵。

重新啟動和錯誤可能會導致系統落後。這是一種需要優雅地失敗的系統。如果系統出現錯誤並落後,應該跳過一些資料並趕上來?或者應該進行某種形式的減少處理直到系統還原正常?遺失資料會有什麼後果?

幸運的是,實作資料驅動系統相當直接,因為資料的處理是重複的。考慮一下圖8-7中描述的類別比到數字系統,其中數字資料來自ADC,經過衰減,然後傳送到DAC。系統通常可以分為資料生產者(ADC)和資料消費者(DAC)。這兩者必須保持平衡。只要處理器能夠跟上ADC,系統就可以永遠執行。

大多數系統都具有事件驅動系統和資料驅動系統的元素。當你考慮自己的系統時,嘗試找出哪些方面屬於每一類別,這將有助於解開軟體複雜性的部分,並允許你分別對待它們。

演算法階段:管道和過濾器

有時,處理資料需要多個步驟。管道是一種設計模式,其中每個處理步驟的輸出成為下一個步驟的輸入。通常,這種類別比是一條生產線或一批洗衣:一些東西需要完成前一步驟才能繼續下一步驟。這些步驟被稱為過濾器(儘管它們可能與訊號處理過濾器不同)。

如圖8-8所示,假設我們有一個收集資料的系統,可能是一個心率監測器:

  1. 資料從ADC以樣本的形式進入系統。
  2. 樣本被處理以去除噪音。
  3. 然後它們透過低透過濾器以去除不同的噪音。
  4. 一個演算法部分選擇要保留的兩個通道的資料。
  5. 減少和過濾的資料被儲存在資料儲存中。
  6. 減少和過濾的資料被下采樣。
  7. 下采樣的資料被顯示為滾動視窗圖表。

噪音去除和低透過濾器是管道的一部分。這些步驟對每個ADC樣本都會發生:一個樣本進入,一個修改過的樣本以恆定的速度輸出。注意,每個樣本都按照接收順序進行處理。為此,一些過濾器需要緩衝樣本,以便當你輸入一個樣本時,你會得到一個較舊的樣本。

緩衝會導致資料延遲(與系統延遲相似,但適用於資料)。如圖8-9所示,每個過濾器都會累積延遲。

當修改過的資料準備好要進入資料儲存時,它可能會被分成塊以限制快閃記憶體存取。與其一次寫入一個樣本,不如一次寫入多個樣本。

你也可以將管道視為訊息佇列,其中過濾器階段處理每個訊息並將結果寫入另一個訊息佇列。

計算需求:速度和吞吐量

在構建系統時,很容易陷入低階別細節中:嘗試將I2C感測器樣本放入迴圈緩衝區,然後輸出到SPI快閃記憶體,再計算圖表並將其傳送到顯示器。每個部分都需要專用的軟體。

然而,隨著你進行更多的系統設計,有一些系統級別的問題需要考慮。我已經在整章中散佈了一些麵包屑;現在是時候把它們放在一起了。

目標是根據產品功能(或根據可用零件更新產品功能)確定零件規格。就像管道一樣,這是一個將一個系統部分的輸出連線到下一個部分輸入的問題。

我經常使用電子試算表來計算我的系統所有部分是否可以連線起來。

資料頻寬

回到圖8-8中的心率監測器,ADC提供了資料。但是什麼樣的資料?

  • 樣本率是多少?每秒有多少樣本?通常以赫茲(Hz)表示。
  • 每個樣本中有多少個通道?
  • 每個樣本的大小是多少?通常以位元組表示。

假設我們有一個SPI四通道16位ADC,以44.1 kHz的速度取樣。每秒鐘,系統要處理多少資料?

頻寬 = 樣本率 × 通道 × 每個樣本的大小 = 44,100 × 4 × 16 = 2,822,400 位元組每秒

當你檢視SPI時鐘時,你需要接收那麼多資料。你的SPI時鐘是否足夠快以傳輸那麼多資料?(假設DMA正在工作,因此傳輸開銷最小。)

傳輸時鐘(最小)= 頻寬(以位元為單位)= 2,822,400 × 8 = 22.58 MHz

如果SPI匯流排與其他外設分享,仍然足夠快嗎?或者,即使其他外設是顯示器或快閃記憶體?所有這些東西都會累加起來,因此你需要確定你的總SPI頻寬中有多少被玄貓使用。計算正常(名義)數字和最壞情況下的數字,以確保你有裕度。

到目前為止,我們正在討論連續樣本。但你也可能有樣本突發,例如記錄4秒鐘內發生的有趣事件。那將給你一個總記錄片段大小:

片段大小 = 頻寬 × 長度 = 2,822,400 × 4 = 11.29 MB

如果你的處理器只有512 KB的RAM,你是否需要外部RAM進行臨時儲存?(它是否是SPI?是否需要包含在時鐘速度中?)

顯示技術與資料儲存的整合,是嵌入式系統發展的關鍵環節。深入剖析資料從產生、處理到儲存的完整流程,可以發現效能瓶頸與最佳化空間。本文探討了顯示更新、資產管理、EEPROM模擬、KV儲存、小型檔案系統以及外部Flash的應用,並以心率監測器為例,闡述了資料驅動系統的設計思路,特別是管道和過濾器模式的應用,以及資料頻寬、片段大小等關鍵效能指標的計算方法。

技術限制深析顯示,在資源受限的嵌入式系統中,平衡效能、功耗和儲存空間是一大挑戰。例如,高解析度顯示和高速資料採集會對處理器和記憶體帶來巨大壓力,而頻繁的Flash寫入操作則會縮短Flash壽命。此外,實務落地分析顯示,EEPROM模擬和小型檔案系統的匯入,雖然提升了資料管理效率,但也增加了系統複雜度和除錯難度。如何在有限資源下,選擇合適的資料儲存方案和檔案系統,並有效管理Flash的寫入和擦除,是開發者需要仔細權衡的課題。

展望未來,隨著物聯網和邊緣運算的蓬勃發展,嵌入式系統對資料儲存和處理的需求將持續增長。玄貓認為,更高效的壓縮演算法、更低功耗的儲存技術以及更智慧的資料管理策略,將成為未來技術演進的重點。同時,軟硬體協同設計的理念也將日益重要,透過軟硬體的深度整合,才能最大程度地發揮系統效能,並滿足日益增長的資料儲存和處理需求。對於追求高效能和長續航的嵌入式系統,採用更先進的Flash管理技術和低功耗設計策略至關重要。