一千萬個為什麽

搜索

嵌入式平臺CI(ESP32/Arduino)的最佳實踐



嵌入式軟件的開發流程總是落後於Web開發。在查看單元測試,自動構建和代碼分析時,流行工具有很多限制。

根據經驗,我已經將Arduino IDE解雇為使用platform code with VS Code,因為在CI方面,它提供了改進的依賴性安裝和構建配置自動化。

問題是已經存在哪些工具和流程,哪些可以重新用於Arduino框架內,以便像網絡開發一樣啟用CI。

Meta:下一個最相關的堆棧交換組是IoT,但沒有一個帖子提到持續集成

轉載註明原文: 嵌入式平臺CI(ESP32/Arduino)的最佳實踐

一共有 1 個回答:

由於使用CI系統無法完成對物聯網設備的“部署”,特別是批量處理。那麽CI系統的目的主要是確保它正常工作。

這意味著你主要想用CI來運行一些測試。對於單元測試和集成測試來說,自動測試絕對是可能的。

單元測試最重要的事情通常是非常短的運行時間和一個簡短的反饋循環。對於大型代碼庫,如果可能的話,使用主機的本機編譯器編譯它的一部分,並在那裏運行單元測試 - 這是一個很好的選擇。如果必須的話,還可以交叉編譯到目標平臺,並使用某些仿真器運行單元測試以獲得必要的速度。所有這些都可能發生在CI“構建+測試”工作中。編譯目標和運行單元測試目標將會非常緩慢,如果正確完成,也可以完成 - 只要確保只閃爍盡可能最小的一段代碼,然後通過串口報告它的工作情況裝置。

對於集成測試,如果可能的話將代碼安裝在實際設備上,並且使用串行接口與設備進行聊天 - 您可以確保代碼實際在目標設備上工作。如果由於某些原因,代碼失敗或工作不正確,可能會耗費太多的電力和/或重新啟動,那麽集成測試將會抓住這一點。您還可以讓另一個測試設備通過串行接口執行測量和報告,以發送CI作業。可以使用Arduino或其他ESP來測量代碼部分的執行過程中的電壓和/或電流強度,並檢查這些值是否與已知的良好值相符。例如,在深度睡眠模式下,您不希望設備拉動400mA,這很容易通過“測試線束”進行測試。

所有這些單元測試和集成測試都可以在CI服務器上完全自動觸發。當然,您可能會在本地運行此“服務器”,而不依賴於可能支持或不支持最新集成測試的雲解決方案。

使用硬件,煙霧測試更“真實”,因為您可以實際連接設備並看到魔法煙霧出來。通常,在燒毀之前,甚至不需要運行代碼,因為問題通常在硬件中。

自從我提到測試以來,還有在硬件層面上完成的集成測試。如果您有一個很好的測試設備,通過探測設備來檢查設備是否正常工作,您可以使用相同的測試設備在他們稍後生產設備的工廠中完成您的質量控制周期。有很多關於制作這些測試平臺的信息。這方面的一個例子是 - https://www.sparkfun.com/tutorials/138