嵌入式系統開發6: Hardware/Software Integration 硬體/軟體整合

更新 發佈閱讀 5 分鐘

硬體/軟體整合

產品的開發通常源自於一個想法或市場需求。某人會基於功能、成本以及上市時間來設計出一個高層次的產品設計。此時,專案排程通常會被建立,顯示出主要的里程碑和活動。

理想的專案流程

這類排程通常是由工程經理或技術領導根據專案目標來進行討論,並估算專案所需的時間和資源。然而,這只是一部分的排程,通常並不包括機械工程、伺服器端軟體、行銷活動等其他相關任務。專案排程多半著重於硬體和嵌入式軟體的開發,因此主要顯示的是你和團隊的工作進展。

在這樣的流程中,通常呈現的是一種「瀑布式」的開發流程,活動依次進行。例如,設計圖審核通常在板子製作之前完成,而板子必須先製作好,嵌入式軟體才能進行初步測試。然而,現實中這樣的排程往往難以完全按計劃進行,因為設計變更或硬體修正會導致不可避免的延誤和返工。

專案排程的目標不僅僅是確定完成時間,更重要的是識別各個任務的相互依賴關係。舉例來說,如果板子需要 12 週才能完成,而軟體開發需要 14 週,整個專案理論上應該能在 14 週內完成,因為軟體可以在板子完成後繼續開發。然而,實際情況可能需要更長的時間,因為軟體需要與實體硬體進行更深入的整合測試。

在排程中,最重要的是確定哪些任務可以平行進行,哪些任務必須在硬體完成之後才能展開。例如,在開發早期,可以同時進行韌體開發和硬體測試,這樣在板子到位後就可以立即進行軟體調整與測試,縮短產品上市的時間。

硬體設計

當硬體團隊確定要建造什麼時,他們會開始研究元件的數據表(datasheet)和參考設計來選擇合適的零件,通常會諮詢嵌入式軟體團隊。在這個階段,風險較高的部分通常是處理器和未完全理解的周邊設備,這時候會購買開發套件來測試這些部分的可行性。

硬體團隊會使用 CAD 軟體來進行電路圖設計,這些工具通常相當昂貴且操作複雜。因此,硬體工程師通常會在設計階段生成 PDF 格式的電路圖供軟體團隊審查。對於嵌入式軟體工程師來說,最具影響的部分是處理器和系統的視圖,這可以幫助軟體工程師了解每個引腳的連接情況。

當電路圖完成後,板子的佈局設計就會開始。在這個階段,板子製作廠商會根據元件清單 (BOM) 開始進行生產準備。元件清單詳細列出了所有的零件,包括其規格和資料表,以確保裝配過程的準確性。這一階段,嵌入式軟體團隊的主要任務是定義硬體測試並在板子製作期間完成測試程式的編寫。

板子啟動測試

當板子製作完成並交到軟體團隊手中時,軟硬體整合的關鍵階段正式開始。這可能是令人興奮的時刻,也可能是一場爭論不休的混戰。團隊之間的協同合作與溝通至關重要,尤其是在軟體團隊和硬體團隊擁有不同專業技能的情況下。

舉例來說,當你拿到一塊新板子時,應該從最基礎的硬體測試開始,逐步測試每個模組的基本功能。例如,可以先測試輸出引腳是否能正確驅動一個 LED 再進一步測試更複雜的電機控制軟體。這樣逐步測試的過程不僅能幫助及早發現問題,還能讓你更深入地了解硬體的工作方式。

此外,確保測試工具能獨立運行,這樣其他人也能重現測試結果,這對於團隊協作和快速解決問題至關重要。一旦問題能夠被重現,就能嘗試修正方案,有時修正方案的過程也能幫助找到問題的根本原因。

最後,寫好的硬體測試代碼很可能會持續使用下去,甚至在下一版板子回來的時候也會再次使用。因此,投入時間編寫優質的測試代碼無疑是一項有長遠價值的工作。這些測試不僅能用於開發過程,還有可能被進一步發展成為生產線上的製造測試,來檢查每塊板子的功能是否正常。

測試程式編寫指南

如何確定需要編寫哪些測試?這取決於你對處理器和周邊設備的深入了解。要進行有效的硬體測試,首先要熟讀元件的數據表。這樣,你才能根據數據表提供的信息編寫針對性強、覆蓋範圍廣的測試程式,確保硬體與軟體的良好協同運作。

總結來說,硬體與軟體的整合是一個複雜且需要協同合作的過程。通過提前規劃、適當的任務平行化以及有效的測試,可以大大提升專案的成功率並縮短上市時間。


在「板子啟動測試」階段,通常要進行以下幾項工作,以確保硬體與軟體的基本功能正常運作:

  1. 電源測試
    • 檢查電源系統是否穩定工作,確認所有電壓軌道是否正確。
    • 測試是否存在電流泄漏、短路或過流問題。
  2. 基本硬體連接測試
    • 驗證處理器與主要周邊設備(如記憶體、存儲器、通信接口)的連接是否正確。
    • 測試電路板上的所有引腳配置是否符合預期。
  3. I/O 引腳測試
    • 測試每個輸入/輸出 (I/O) 引腳是否正常工作。
    • 使用 LED 或簡單設備來檢查 GPIO 引腳的輸出狀況(例如點亮 LED 或控制基本設備)。
  4. 時鐘信號測試
    • 驗證時鐘信號是否正確,包括處理器內部和外部時鐘的穩定性和準確性。
  5. 通信接口測試
    • 測試常用的通信接口,如 UART、SPI、I2C、USB 等,確保它們能正常通信。
    • 確認數據傳輸的正確性和穩定性。
  6. 存儲設備測試
    • 驗證板子上的 RAM 和閃存是否能正常讀寫數據。
    • 測試存儲器的初始化、寫入和讀取功能。
  7. 外部設備和周邊測試
    • 測試所有板子上連接的周邊設備,如傳感器、馬達、顯示屏等是否正常運作。
    • 驗證各個外部設備與處理器的接口通信。
  8. 處理器功能測試
    • 確認處理器是否能夠正確啟動、執行基本指令並與各個設備進行通信。
    • 驗證中斷功能和處理器核心的計算能力。
  9. 固件下載與啟動測試
    • 測試固件是否能正確下載到板子上,並成功啟動。
    • 確保板子能從上電到啟動過程順利完成。
  10. 低功耗模式測試
    • 測試電源管理和低功耗模式的切換,確保板子在低功耗狀態下仍能正常工作。
  11. 熱穩定性測試
    • 進行基本的熱測試,檢查板子是否能在各種環境溫度下穩定運行。
留言
avatar-img
Will 進步本
10會員
284內容數
歡迎來到「Will 進步本」!我們將探索計算機科學、商用英文和生成式AI。從基礎到前沿,共同學習和交流,拓展知識視野,啟發創新思維
Will 進步本的其他內容
2024/08/28
評估元件時使用數據表的步驟 評估元件是一項進階技能,通常是你在實現系統的驅動程序之後才會培養的能力。
2024/08/28
評估元件時使用數據表的步驟 評估元件是一項進階技能,通常是你在實現系統的驅動程序之後才會培養的能力。
2024/08/26
閱讀數據表(Datasheet) 在產品開發的過程中,面對發佈壓力,往往會讓我們無法慢下來仔細閱讀元件的數據表、手冊以及應用說明。更糟糕的是,儘管我們可能已經翻遍了這些文件,卻發現什麼也沒記住,因為這些文件中的專業術語對我們來說就像外語一樣陌生。
2024/08/26
閱讀數據表(Datasheet) 在產品開發的過程中,面對發佈壓力,往往會讓我們無法慢下來仔細閱讀元件的數據表、手冊以及應用說明。更糟糕的是,儘管我們可能已經翻遍了這些文件,卻發現什麼也沒記住,因為這些文件中的專業術語對我們來說就像外語一樣陌生。
2024/08/26
電壓與電流 我們測量電量時使用電壓和電流,但這兩者都源於更基本的物理原理。
Thumbnail
2024/08/26
電壓與電流 我們測量電量時使用電壓和電流,但這兩者都源於更基本的物理原理。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
本書介紹了戰略設計、管理領域複雜度、實際應用領域驅動設計等主題。透過對核心子領域、支持子領域、限界上下文等概念的探討,提供了領域驅動設計的相關知識。這篇文章中還涉及了微服務、事件驅動架構和資料網格等相關主題,提供了設計系統和應用領域驅動設計的指導。
Thumbnail
本書介紹了戰略設計、管理領域複雜度、實際應用領域驅動設計等主題。透過對核心子領域、支持子領域、限界上下文等概念的探討,提供了領域驅動設計的相關知識。這篇文章中還涉及了微服務、事件驅動架構和資料網格等相關主題,提供了設計系統和應用領域驅動設計的指導。
Thumbnail
本文整理了有關技術文件寫作的重要觀念,包括 docs as a product、內容優先,並說明如何構思文件架構。
Thumbnail
本文整理了有關技術文件寫作的重要觀念,包括 docs as a product、內容優先,並說明如何構思文件架構。
Thumbnail
1.設計系統不用從頭開始 在設計產品時,有一個觀念可能會顛覆我們對於產品設計的傳統想法。這是初期在 AlleyPin 擔任一人設計師,負責各種產品或視覺設計工作時才逐漸領悟到的一點。 當時,我在購買UI Kits這件事情上猶豫不決,擔心使用現成的設計資源會使我的設計變得無聊或是缺乏創造。後來面臨
Thumbnail
1.設計系統不用從頭開始 在設計產品時,有一個觀念可能會顛覆我們對於產品設計的傳統想法。這是初期在 AlleyPin 擔任一人設計師,負責各種產品或視覺設計工作時才逐漸領悟到的一點。 當時,我在購買UI Kits這件事情上猶豫不決,擔心使用現成的設計資源會使我的設計變得無聊或是缺乏創造。後來面臨
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
替產業做設計 有人要我談程式設計,那我就稍微談一下。我從事的大都是產業的工作,所以我們也從如何替產業做設計來談起。基本上,每個產業都會有自己的作業流程,大同小異。但是基礎來做都是一樣的,都會有客戶、物料、產品、供應商、員工等資料。不同的是,由於企業型態的不同,他們每個人有不同的作業流程。這個作業流
Thumbnail
替產業做設計 有人要我談程式設計,那我就稍微談一下。我從事的大都是產業的工作,所以我們也從如何替產業做設計來談起。基本上,每個產業都會有自己的作業流程,大同小異。但是基礎來做都是一樣的,都會有客戶、物料、產品、供應商、員工等資料。不同的是,由於企業型態的不同,他們每個人有不同的作業流程。這個作業流
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News