深度學習耐用型嵌入式系統邊緣計算機通常部署在偏遠地區,并且面臨極端的環境挑戰。因此,要完全保證您的深度學習型工業計算機的性能可靠且達到最佳狀態,必須對它們進行加固,以承受可能危害未加固系統的惡劣條件。標準嵌入式系統的堅固性不足以承受極端環境,并且在工業環境中部署時很容易發生故障。因此,您需要確保部署堅固耐用的深度學習嵌入式系統,這些系統是工業級的,并具有豐富的I / O,以支持傳統技術和現代技術,同時還要承受極端溫度,強烈沖擊,持續振動,電壓沖擊等。 設計安全可靠的嵌入式系統最佳實踐 嵌入式系統的軟件開發項目面臨著各種各樣的挑戰。 時間限制使開發人員承受著在嚴格的時間限制內(許多情況下)完成項目要求的壓力。此外,對嵌入式軟件的可靠性,準確性和性能的期望比對實時計算的期望更高。我們還需要考慮嵌入式軟件在其上運行的實際目標硬件的約束。為了解決安全性和安全性,行業通常會強加軟件合規性和認證要求。 流程標準提供了流程,驗證方法和最佳實踐,以充分確保軟件的安全性,安全性和質量。這些包括:DO-178B / C(航空電子)、ISO 26262(汽車)、IEC 62304(醫療)、IEC 61508(工業)、EN 50128(導軌)和更多 。 軟件驗證和確認是遵守流程標準的關鍵組成部分。這個過程涉及嚴格,昂貴和耗時的不同軟件測試技術。 采用一種或兩種軟件測試技術并不能解決問題。在開發生命周期中使用各種自動化方法將節省您的時間和金錢。這也將有助于建立無價的可靠性聲譽。 嵌入式軟件開發的自動化測試方法 自動化對于測試嵌入式軟件至關重要,因為手動方法容易出錯且耗時。 靜態代碼分析 可以考慮采用靜態代碼分析作為第一種測試方法。執行靜態分析的一個奇妙優勢是可以在項目的任何階段引入和使用它。即使項目不完整且部分編碼,因為不需要執行代碼,所以靜態代碼分析仍然有效。 引入靜態分析的最大挑戰是大量代碼會產生大量警告。將靜態分析集成到項目中時,建議重點關注以下內容: 盡快提高團隊生產力。 最大限度地減少團隊被所有靜態分析警告淹沒的機會。 這并不是要降低這些警告的重要性。但是,大多數開發人員都不具有修復現有或遺留代碼的能力。因為存在各種編碼合規性標準(MISRA C:2012,AUTOSAR C ++ 14,SEI CERT,CWE等),所以要牢記目標。如果安全性是關鍵目標,那么啟用所有與安全性相關的規則,禁用不太重要的規則并啟用內置的安全編碼標準之一(例如CERT C / C ++)是有意義的。 動態分析方法或運行時錯誤檢測 如前所述,僅一種測試方法是不夠的。僅通過靜態分析不可能識別所有錯誤或缺陷。動態分析方法或運行時錯誤檢測也是要采用的測試實踐。 該測試應與需求聯系起來。它檢查正在運行的代碼,揭示體系結構和行為缺陷,其他弱點或安全漏洞,包括內存泄漏等。 團隊可以在軟件抽象的各個級別上應用這種類型的測試。從測試每個單獨的單元或功能開始,然后集成其他軟件部分。最終,軟件會測試整個系統或黑匣子。這通常在眾所周知的V模型軟件生命周期中表示。 結構規范范圍 在動態分析方法中,可以疊加其他可以應用的技術,例如結構代碼覆蓋率。 簡而言之,結構覆蓋范圍是對已執行和記錄的代碼的標識,以確定確定系統是否已經過充分測試。如果您可以確定已通過測試用例執行的代碼,則未發現或未執行的代碼將暴露出對其他測試的需求。 如果您的合規性要求是獲得100%的代碼覆蓋率,則您將需要至少通過單元測試和手動測試來執行覆蓋率。盡管我們可以繼續探索其他測試方法,例如回歸,性能,壓力,API,UI,驗收等,但還是可以深入研究用于嵌入式系統測試的現代部署。 持續集成和持續交付 在過去的幾年中,不斷集成和持續交付(CI / CD)是一個越來越受歡迎的話題。CI / CD是每晚集成(將較小的構建單元合并到應用程序,庫或組件中)的軟件開發實踐,旨在構建可測試的軟件以連續交付并及早發現構建/集成問題和錯誤。 嵌入式軟件開發中的CI / CD通常受到應用程序開發不受約束的方式的限制。除了目標硬件平臺的物理和計算約束之外,還有合規性約束。嵌入式軟件市場對安全性和安全性有著極其長的生命周期的獨特要求。產品可以在市場上保留數十年。 如今,一些組織將靜態分析納入其CI / CD現代開發工作流程中。適應通常圍繞具有動態分支和合并方法的基于Git的開發環境進行,開發人員可以指定引用分支與當前開發分支進行比較,并自動比較和計算增量以進行分析。 因此,可以在最少的文件集上運行分析,而不是對整個項目進行分析(這可能要花費相當長的時間,甚至是數小時)。這減少了評估會議和集中精力的時間。然后可以解決和糾正違反代碼的問題,以實現干凈,安全和可靠的構建。 容器化開發環境 現代化的另一種類型來自容器化的開發環境。開發工具的容器化部署正成為嵌入式開發團隊的生力軍。 盡管最初開發容器是為了解決微服務和基于Web的應用程序部署方面的問題,但它們最近在嵌入式團隊中越來越受歡迎。特別是對于使用容器管理復雜工具鏈的大型團隊而言。 在管理復雜的開發環境時,尤其是在安全性至關重要的環境中,團隊通常會遇到以下挑戰,而這些挑戰很容易用容器來解決: 將整個團隊的升級同步到最新版本的工具,例如編譯器,構建工具鏈等。 動態響應庫或軟件開發工具包(SDK)等的新安全補丁。 確保所有團隊成員和自動化基礎架構(CI / CD)的工具鏈的一致性。 能夠對開發環境進行版本控制并還原它,以服務于已通過特定工具鏈認證的產品的舊版本。 化提供了以下內容: 開發環境版本控制 集中管理和部署 對安全漏洞立即做出反應 降低入職成本
|