更新於 2024/08/24閱讀時間約 5 分鐘

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

硬體/軟體整合

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

理想的專案流程

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

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

專案排程的目標不僅僅是確定完成時間,更重要的是識別各個任務的相互依賴關係。舉例來說,如果板子需要 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. 熱穩定性測試
    • 進行基本的熱測試,檢查板子是否能在各種環境溫度下穩定運行。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.