嵌入式系統開發1 - 資源限制

閱讀時間約 4 分鐘
Making Embedded Systems

Making Embedded Systems

資源限制

嵌入式系統的設計是為了完成特定任務,因此會刪減不必要的資源來達成目標。這些資源包含以下幾項:

  • 記憶體(RAM)
  • 程式碼空間(ROM 或 Flash)
  • 處理器週期或速度
  • 電力消耗(也就是電池壽命)
  • 處理器周邊設備


這些資源在某種程度上可以互換。舉例來說,你可以以佔用更多程式碼空間為代價來提升執行效率,讓程式運行得更快。或者,你也可以降低處理器速度來節省電力。如果系統缺乏某些硬體介面,也可能透過 I/O 線路和處理器週期以軟體模擬方式來實現。然而,即便可以進行這些取捨,這些資源仍然非常有限,如何在有限的資源下達成目標是嵌入式系統面臨的重要挑戰之一。


硬體挑戰

除了資源限制,嵌入式系統開發還面臨來自硬體的挑戰。例如,交叉除錯(cross-debugging)可能讓人感到挫折,尤其在硬體剛啟動的階段,系統問題的來源可能難以判斷,因為問題可能出現在硬體也可能出現在軟體。與一般的電腦不同,你所撰寫的軟體甚至有可能對硬體造成實質損壞。此外,必須具備對硬體的深刻了解,知道硬體能做到什麼。但這些知識可能在下一個專案中無法完全沿用,因此你需要快速學習新的硬體技術。


以下是幾個具體的嵌入式系統開發案例,說明與硬體挑戰相關的問題:

案例 1:無線感應裝置的硬體啟動問題

在一個無線感應裝置的開發過程中,工程師遇到系統無法正確啟動的問題。剛開始時,他們認為是軟體初始化的問題,但實際上是硬體晶片中的電源管理電路存在缺陷,導致系統在上電後電壓不穩定。由於嵌入式系統軟硬體緊密結合,初期調試花費大量時間來排查硬體與軟體之間的交互問題,這就是交叉除錯過程中的典型挫折。

案例 2:醫療設備中的韌體升級錯誤

在一個醫療設備的開發中,韌體升級後設備無法正常工作。原因是軟體錯誤導致設備內部的處理器以不適當的方式控制電流,最終燒毀了一些硬體元件。這個案例說明,嵌入式系統中的軟體錯誤可能對硬體造成實質性的損壞,並強調開發過程中進行周全測試和軟硬體協作的重要性。

案例 3:智慧家居設備的I/O 模擬

在開發智慧家居控制器時,因為成本限制,選用的處理器缺少某些硬體介面(如專用I²C接口)。工程師不得不在有限的處理器資源下,利用軟體方式模擬I²C協定來與周邊感測器進行通信。這雖然成功達成目標,但也增加了開發和除錯的難度,尤其是在模擬的通信速率不穩定時,需要深入了解硬體時序,並進行細緻的調校。

案例 4:消費性電子產品的硬體升級困難

在消費性電子產品的開發中,工程師在現有系統中遇到硬體升級的瓶頸。原有的處理器已經運行接近其資源極限,當增加新功能時,發現處理器無法負荷新需求。在嘗試對軟體進行優化後,最終還是不得不更換處理器。但由於對新硬體的了解有限,整個開發團隊不得不重新學習新的硬體架構,這拖延了整個專案進度。


這些案例展示了嵌入式系統開發中,軟硬體之間複雜的互動,以及快速適應新硬體技術的重要性。


製造階段與量產

當開發與測試完成後,系統將進入量產階段。這是純軟體工程師通常不會涉及的領域。然而,嵌入式軟硬體工程師需要確保系統可以以合理的成本進行製造。支持量產是一個嵌入式工程師的任務,確保製造出的系統能夠忠實再現所設計的功能。


使用階段與產品生命週期

產品製造完成後將進入實際使用階段。對於消費性產品,這意味著它們將進入數百萬個家庭,任何的程式錯誤將被大眾體驗。對於醫療、航空或其他關鍵產品,程式錯誤可能是災難性的(這也是為什麼這些領域有大量文件工作)。對於科學或監測設備,系統可能部署於無法回收或難以回收的環境中(如火山口中的設備),因此它必須非常可靠。這些設備在離開開發者之後的生命週期,是設計軟體時必須考量的重點。


變化與預測未來

即便你已經解決了所有這些問題,仍然存在一個共通的最大挑戰,那就是變化。不僅產品目標會變化,專案的需求也會隨著時間推移而改變。在專案初期,你可能只想隨便拼湊一些功能來進行試驗,但隨著專案的深入,對產品目標和硬體的理解逐漸加深,你將開始構建更多基礎設施,使軟體更具除錯性、穩定性和靈活性。然而,在資源受限的環境下,你必須判斷究竟能投入多少基礎設施開發時間、記憶體、程式碼空間和處理器週期。最終開發出來的系統往往與最初的設計大相徑庭,而開發工作也幾乎永無止境。


嵌入式系統為特定應用量身定做,這有一個不幸的副作用,就是當應用需求變化時,系統可能無法跟隨變化。因此,嵌入式系統工程不僅是應對嚴格的限制與系統的生命週期,更重要的是預測未來的變化,並設計出能夠適應這些變化的軟體。你需要試著預測專案的未來發展方向,並設計出足夠靈活的軟體來應對這些變化。這無疑是一個極具挑戰性的工作。

avatar-img
5會員
240內容數
歡迎來到「Will 進步本」!我們將探索計算機科學、商用英文和生成式AI。從基礎到前沿,共同學習和交流,拓展知識視野,啟發創新思維
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。 本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。 結果呈現 印出當前使用的記憶體,與峰值記憶體使用量。 程式範例 i
此篇文章連結 RAM 與 C語言陣列的關係並提供陣列與for-loop 使用的相關教學 前半段為基本電腦觀念、後半段為實作能力的教學
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
電腦有很多零件,有CPU、主機板(MB)、記憶體(Memory)... 今天我想分享,我這次組電腦的過程,還有一些好用的技巧,希望能幫助到大家,組出心中的完美電腦!
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。 本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。 結果呈現 印出當前使用的記憶體,與峰值記憶體使用量。 程式範例 i
此篇文章連結 RAM 與 C語言陣列的關係並提供陣列與for-loop 使用的相關教學 前半段為基本電腦觀念、後半段為實作能力的教學
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
電腦有很多零件,有CPU、主機板(MB)、記憶體(Memory)... 今天我想分享,我這次組電腦的過程,還有一些好用的技巧,希望能幫助到大家,組出心中的完美電腦!
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val