嵌入式系統開發5: 設計變更(Design Change)的應對策略

閱讀時間約 3 分鐘

設計變更的應對策略

當我們手中已有了不同的架構圖時,下一步該如何進行?也許你已經發現了一些你最初沒有考慮到的代碼模塊,也可能你已經更清楚地理解了模塊之間的交互方式。在深入探討這些交互(即介面)之前,有一件事情值得你花點時間來思考:什麼會改變?

在設計初期,一切都是實驗性的,因此可以預期系統中的任何部分都有可能發生變化。然而,我們的目標是使初步的架構和代碼對系統特性或硬體的變更更具抵抗力。例如,你可能知道產品的某些功能不太可能改變,但具體實現方式可能會有所變化。就像你的產品也許需要一個顯示屏,且傳輸位圖的最佳方式是通過閃存。雖然 SPI 介面的閃存晶片看起來是個不錯的選擇,但具體用哪一款閃存晶片、哪種 LCD、圖像數據或字型數據都可能變動。因此,圖中的每個模塊應該代表其理想的抽象概念,而不是具體的實現。

封裝模塊以應對變更

在設計圖表時,我們要尋找不依賴於具體模塊內容或行為的介面,這就是封裝(Encapsulation)。通過架構圖表,我們可以找出設計中適合這些介面的地方。每個模塊可能都有其自己的介面,有時這些介面可以合併成一個對象。但是是否應該立刻進行合併,還是等待以後再做?

有時提前合併是值得的。當你可以簡化圖表的複雜性,而不過度犧牲未來的靈活性時,就應該考慮這樣做。例如:

  • 組織圖(Organigram)中,看看是否有某些對象只被另一個對象使用。如果這些對象不太可能獨立變更,則可以考慮將它們合併。如果它們有可能單獨變更,那麼不應合併。
  • 分層圖(Layering Diagram)中,看看是否有一些對象總是一起使用。這些對象可以組合成一個更高層次的介面來管理,例如創建一個硬體抽象層(HAL)。
  • 哪些模塊有大量的相互依賴關係?這些依賴關係是否可以分離並簡化?或者這些依賴可以進行分組嗎?

舉例來說,如果一個 LCD 顯示模塊僅依賴於平行介面,並且沒有其他子系統需要訪問該介面,那麼這個介面就可以被封裝在 LCD 模塊內部。這樣,你可以隱藏不必要的實現細節,保持架構的簡潔性。

任務分配與模塊分離

這些圖表不僅幫助你理解系統架構,還能協助你分配工作給團隊成員。例如,哪些部分可以作為獨立的模塊由其他人來實現?而哪些部分應該由你自己負責?

過於傾向於將乏味的部分工作分給他人可能會降低產品質量。相反,你應該思考哪些整體模塊或子樹可以交給他人完成。在描述模塊間的相依關係時,你可能會發現這些依賴比你最初想像的更為複雜,或許一個簡單的旗標(如信號燈)就能幫助你解決誰擁有資源的問題。

通過清晰的介面(interface)來分離不同的代碼區塊,能夠使你的專案進展更加順利。當團隊成員各自負責自己代碼的開發和測試時,整個專案的效率會顯著提升。

驅動介面(Driver Interface)設計

在考慮模塊介面時,從底層開始也是一個有效的方法。底層模塊通常是與硬體打交道的驅動程序。在嵌入式系統中,許多驅動程序基於類 Unix 系統的 POSIX API,因為這種模型在很多情況下運作良好,並且可以避免每次需要訪問硬體時都重新設計驅動程序。

Unix 驅動程序的介面設計相對簡單:

  • open:打開驅動程式,類似於初始化。
  • close:關閉驅動程式並進行清理。
  • read:從設備讀取數據。
  • write:向設備發送數據。
  • ioctl:I/O 控制,用來處理上述操作未涵蓋的功能。這個介面雖然不太結構化,但仍然非常流行。

這些標準介面可以讓你的設計更具可維護性和可重用性。如果你的驅動可以遵循這些標準接口,那麼對其他開發者來說,看到這些功能時他們就能快速知道該期待什麼。

總之,設計一個靈活、可擴展的嵌入式系統架構,需要你考慮到系統可能的變更,並運用封裝來保護系統免受未來變更的影響。通過合理劃分工作、清晰劃定模塊介面,以及遵循通用的驅動接口設計原則,你可以構建出一個穩定且可維護的系統。



5會員
240內容數
歡迎來到「Will 進步本」!我們將探索計算機科學、商用英文和生成式AI。從基礎到前沿,共同學習和交流,拓展知識視野,啟發創新思維
留言0
查看全部
發表第一個留言支持創作者!
Will 進步本 的其他內容
硬體/軟體整合 產品的開發通常源自於一個想法或市場需求。某人會基於功能、成本以及上市時間來設計出一個高層次的產品設計。此時,專案排程通常會被建立,顯示出主要的里程碑和活動。
設計系統架構有兩種主要的方式:一種是從零開始構建,從一個想法或最終目標開始,逐步組織所有的要素,這稱為組合式設計(composition)。
系統設計的挑戰 嵌入式系統的設計猶如解開一個拼圖,即使是小型的系統也充滿了細節,讓人眼花繚亂。作為開發者,你需要具備全局視野,才能辨識哪些部分的問題能夠用簡單的方法解決,哪些部分則潛藏著複雜的相依性。這時,設計的關鍵在於:不要追求一開始就完美,而是從一個「還可以」的設計開始,然後逐步改進。
面對嵌入式系統挑戰的原則 嵌入式系統開發過程常被比喻為拼圖,一個個相互契合的組件形成完整系統。有時,你可能會強行將不匹配的組件拼在一起,但結果卻與預期的圖像不符。我們應該拋棄將開發最終結果視為單一版本程式碼的想法,嵌入式系統的開發更像是隨著時間變化的拼圖,涵蓋了概念、原型設計、硬體啟動、除錯、測試
資源限制 嵌入式系統的設計是為了完成特定任務,因此會刪減不必要的資源來達成目標。
硬體/軟體整合 產品的開發通常源自於一個想法或市場需求。某人會基於功能、成本以及上市時間來設計出一個高層次的產品設計。此時,專案排程通常會被建立,顯示出主要的里程碑和活動。
設計系統架構有兩種主要的方式:一種是從零開始構建,從一個想法或最終目標開始,逐步組織所有的要素,這稱為組合式設計(composition)。
系統設計的挑戰 嵌入式系統的設計猶如解開一個拼圖,即使是小型的系統也充滿了細節,讓人眼花繚亂。作為開發者,你需要具備全局視野,才能辨識哪些部分的問題能夠用簡單的方法解決,哪些部分則潛藏著複雜的相依性。這時,設計的關鍵在於:不要追求一開始就完美,而是從一個「還可以」的設計開始,然後逐步改進。
面對嵌入式系統挑戰的原則 嵌入式系統開發過程常被比喻為拼圖,一個個相互契合的組件形成完整系統。有時,你可能會強行將不匹配的組件拼在一起,但結果卻與預期的圖像不符。我們應該拋棄將開發最終結果視為單一版本程式碼的想法,嵌入式系統的開發更像是隨著時間變化的拼圖,涵蓋了概念、原型設計、硬體啟動、除錯、測試
資源限制 嵌入式系統的設計是為了完成特定任務,因此會刪減不必要的資源來達成目標。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
個人簡易工程-第54篇- 鋸台 靠山 設計 製作 (模仿變更設計) -製作紀錄   聯絡人:陳先生,0931849482、07-7912015。   即時通:guess_chen1981,很少用了,想到還是會用   行動網路:LINE、We Chat,搜尋ID︰guess_chen198
Thumbnail
您有聽過一種職業是『 桌遊設計師』? 除了大富翁、象棋....你還知道哪些桌遊? 桌遊,除了家人好友相聚拿來增溫的必備物品外,近年許多教學者運用特選桌遊帶入到教學場域,把他當成是『遊戲化教學』使用教學媒材。   從歷史研究所畢業,進入到傳產擔任行銷工作的 江濤老師,是怎麼轉換到成為一位 #桌遊設計師
Thumbnail
關於現代簡約客廳的整體風格 這種設計風格傾向於創造一個舒適、實用和現代的居住環境。在設計中,強調簡約和功能性,並利用空間和光線來營造視覺效果。 設計師通常會選擇以白色或淺色為主調的牆面和傢俱,以營造出乾淨俐落的氛圍。線條簡單的傢俱也是這種風格的一個重要元素。傢俱通常選擇實木或皮革材料,以呈現質感細膩
Thumbnail
現代生活快節奏,人們越來越重視生活品質。在家中,用餐空間是家人共聚的重要場所。如何讓這個場所既實用又時尚舒適?伸縮餐枱是一種新穎的設計,為家庭用餐帶來了很多便利和創新。本文將從品質、設計和實用性三個方面介紹伸縮餐枱的優點。 品質 伸縮餐枱的品質是使用時需要考慮的重要因素。品質好的伸縮餐桌不僅能夠
Thumbnail
買預售屋除了自備款付款上相對較買成屋壓力小一些外,有機會在房子蓋好之前針對屋內的格局或材質做變更以節省裝潢成本也是個優點!理論上是這樣,但對於大部分是門外漢的購屋者們,真的可以達到「傳說中」的省時又省錢嗎?實務上又要怎麼去操作才能真正達到這樣的效果呢?
Thumbnail
<p>我們常在超市看到各種不同口味、不同造型的巧克力、脆片餅乾、香草冰淇淋、小熊軟糖等,背後就是靠一群食品設計師(Food Product Designer)不斷地實驗如何讓餅乾咬起來的聲響更悅耳,不斷測試怎樣的顏色、香氣、造型、彎度的巧克力,讓你一再忍不住從口袋掏錢買單。</p>
Thumbnail
<p>好的Design for Food的作品,不是製造一堆虛有其表、但對世界沒啥貢獻的產品,或是徒有創意造型的杯子或胡椒罐等;反之,好的產品設計是為了達到傳遞理念或文化的目的,例如劍獅燒就是讓民眾認識台南劍獅文化。好的產品設計就是讓我們的世界變得更好,讓某件事操作起來更便利,或解決大家可能都會遇到的操作問題。</p>
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
個人簡易工程-第54篇- 鋸台 靠山 設計 製作 (模仿變更設計) -製作紀錄   聯絡人:陳先生,0931849482、07-7912015。   即時通:guess_chen1981,很少用了,想到還是會用   行動網路:LINE、We Chat,搜尋ID︰guess_chen198
Thumbnail
您有聽過一種職業是『 桌遊設計師』? 除了大富翁、象棋....你還知道哪些桌遊? 桌遊,除了家人好友相聚拿來增溫的必備物品外,近年許多教學者運用特選桌遊帶入到教學場域,把他當成是『遊戲化教學』使用教學媒材。   從歷史研究所畢業,進入到傳產擔任行銷工作的 江濤老師,是怎麼轉換到成為一位 #桌遊設計師
Thumbnail
關於現代簡約客廳的整體風格 這種設計風格傾向於創造一個舒適、實用和現代的居住環境。在設計中,強調簡約和功能性,並利用空間和光線來營造視覺效果。 設計師通常會選擇以白色或淺色為主調的牆面和傢俱,以營造出乾淨俐落的氛圍。線條簡單的傢俱也是這種風格的一個重要元素。傢俱通常選擇實木或皮革材料,以呈現質感細膩
Thumbnail
現代生活快節奏,人們越來越重視生活品質。在家中,用餐空間是家人共聚的重要場所。如何讓這個場所既實用又時尚舒適?伸縮餐枱是一種新穎的設計,為家庭用餐帶來了很多便利和創新。本文將從品質、設計和實用性三個方面介紹伸縮餐枱的優點。 品質 伸縮餐枱的品質是使用時需要考慮的重要因素。品質好的伸縮餐桌不僅能夠
Thumbnail
買預售屋除了自備款付款上相對較買成屋壓力小一些外,有機會在房子蓋好之前針對屋內的格局或材質做變更以節省裝潢成本也是個優點!理論上是這樣,但對於大部分是門外漢的購屋者們,真的可以達到「傳說中」的省時又省錢嗎?實務上又要怎麼去操作才能真正達到這樣的效果呢?
Thumbnail
<p>我們常在超市看到各種不同口味、不同造型的巧克力、脆片餅乾、香草冰淇淋、小熊軟糖等,背後就是靠一群食品設計師(Food Product Designer)不斷地實驗如何讓餅乾咬起來的聲響更悅耳,不斷測試怎樣的顏色、香氣、造型、彎度的巧克力,讓你一再忍不住從口袋掏錢買單。</p>
Thumbnail
<p>好的Design for Food的作品,不是製造一堆虛有其表、但對世界沒啥貢獻的產品,或是徒有創意造型的杯子或胡椒罐等;反之,好的產品設計是為了達到傳遞理念或文化的目的,例如劍獅燒就是讓民眾認識台南劍獅文化。好的產品設計就是讓我們的世界變得更好,讓某件事操作起來更便利,或解決大家可能都會遇到的操作問題。</p>