利用物聯網操作系統Zephyr實現“連續集成”開源軟件的開發
物聯網操作系統是配置在物聯網硬件設備上的第一層軟件,是對物聯網硬件系統的首次擴充。
Zephyr作為一款專門為內存受限的物聯網設備而推出的開源實時操作系統,其一大特點就是具有高度開源性。Zephyr操作系統如何進行“連續集成”軟件開發?不妨通過一個實例演示來看一看。
這個演示實例是Linaro和Zephyr操作系統基于單片機進行的。它是一個高度開放、高度透明的開發過程,開發者在本地只需要運行一個git工具,其余的集成過程(包括代碼檢查,測試)完全在云端解決。我們接下來將進行實例演示過程。
Zephyr 云工作流程和CI
如上圖所示,這個演示實例是基于Zephyr操作系統進行的,它向用戶展示(軟件開發過程)在源代碼,工具使用及軟件配置方面所能達到的開放程度;并且展示軟件協作在深奧的嵌入式RTOS代碼工程中所能達到的透明程度。
這個實例從一些工業標準開源工具開始,它們可以幫助用戶實現協作處理。如下:
- Git 源代碼管理和協作處理;
- 基于標準C語言及Make工具的構建設施;
- 將qemu作為虛擬測試平臺;
此外,還要添加一些Linaro已有的和新推出的內容到社區中,如下:
- Linaro的開源測試基礎-LAVA;
- 連續集成工具,此前表現在Linux Kernelci基礎設施上;
- 基于物聯網Editon Cortex-M MCU的開發板;
- LITE團隊在平臺與引導程序方面的創新支持;
基于以上因素,該實例演示了一個“連續集成”循環測試過程,測試過程既可使用遠程虛擬目標平臺,也可使用本地真實硬件平臺IoT-edition Cortex-M4開發板。
本次測試的目標是要展示開源操作系統Zephyr,展示它如何通過最具有實踐性的開源開發工具執行目標工程,以此對“連續集成”環境加以推廣。
從上圖可以看到,在演示中,我們對Zephyr工程源代碼做了修改并提交至https://github.com/linaro/zephyr。在此過程中,我在本地只需用到git工具。首先,我對git本地代碼倉中的代碼進行修改,然后推送這些修改(git push)。注意我是把修改推送至我們的連續集成Zephyr代碼倉。git push命令會開啟整個測試過程,包括遠程構建超過100個測試應用程序,在虛擬設備Qemu上執行這些程序,并實時給開發人員返回結果。
當來自虛擬設備的測試結果被執行后,關鍵目標應用隨后會被構建并且通過云端部署到小型測試場地,程序會在多個真正的硬件平臺上實時進行測試。
開發測試部署
另外,整個構建和測試基礎設施在構建過程中,出于可擴充性考慮,采用了容器與分發的設計模式。甚至,在ELC展示的本地測試現場,也在筆記本電腦上運行了一個負責測試分發的容器實例。整個測試過程是完全仿真的實時硬件測試。
關于Zephyr項目
Zephyr 項目是一款小型且可擴展的實時操作系統,尤其適用于資源受限的系統,可支持多種架構;該系統高度開源,對于開發人員社區完全開放,開發人員可根據需要對該 系統進行二次開發,以支持最新硬件、工具和設備驅動程序;該系統高度模塊化平臺,可輕松集成任何架構的第三方庫和嵌入式設備。
關于Linaro
Linaro是一個由成員資助組建的非盈利組織,旨在整合并優化ARM架構的開放源Linux軟件和工具。該組織采用多家公司聯合投資一個軟件工程團隊的商業模式,共同在透明的合作環境中開發核心開放源軟件。
Linaro是一個以團隊為中心的組織,不僅采用開放源,還組織成員在無差異層面上展開有效協作、分享并進行本質創新,從而為行業同仁們提供差異化附加資源。Linaro成為對最新Linux核心程序3.0到3.7貢獻最大的公司之一,這說明Linaro的協作方法確實有效。
























