天天看點

利用物聯網作業系統Zephyr實作“連續內建”開源軟體的開發

物聯網作業系統是配置在物聯網硬體裝置上的第一層軟體,是對物聯網硬體系統的首次擴充。

zephyr作為一款專門為記憶體受限的物聯網裝置而推出的開源實時作業系統,其一大特點就是具有高度開源性。zephyr作業系統如何進行“連續內建”軟體開發?不妨通過一個執行個體示範來看一看。

這個示範執行個體是linaro和zephyr作業系統基于單片機進行的。它是一個高度開放、高度透明的開發過程,開發者在本地隻需要運作一個git工具,其餘的內建過程(包括代碼檢查,測試)完全在雲端解決。我們接下來将進行執行個體示範過程。  

利用物聯網作業系統Zephyr實作“連續內建”開源軟體的開發

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上執行這些程式,并實時給開發人員傳回結果。

當來自虛拟裝置的測試結果被執行後,關鍵目标應用随後會被建構并且通過雲端部署到小型測試場地,程式會在多個真正的硬體平台上實時進行測試。

利用物聯網作業系統Zephyr實作“連續內建”開源軟體的開發

開發測試部署

另外,整個建構和測試基礎設施在建構過程中,出于可擴充性考慮,采用了容器與分發的設計模式。甚至,在elc展示的本地測試現場,也在筆記本電腦上運作了一個負責測試分發的容器執行個體。整個測試過程是完全仿真的實時硬體測試。

關于zephyr項目

zephyr 項目是一款小型且可擴充的實時作業系統,尤其适用于資源受限的系統,可支援多種架構;該系統高度開源,對于開發人員社群完全開放,開發人員可根據需要對該 系統進行二次開發,以支援最新硬體、工具和裝置驅動程式;該系統高度子產品化平台,可輕松內建任何架構的第三方庫和嵌入式裝置。

關于linaro

linaro是一個由成員資助組建的非盈利組織,旨在整合并優化arm架構的開放源linux軟體和工具。該組織采用多家公司聯合投資一個軟體工程團隊的商業模式,共同在透明的合作環境中開發核心開放源軟體。

linaro是一個以團隊為中心的組織,不僅采用開放源,還組織成員在無差異層面上展開有效協作、分享并進行本質創新,進而為行業同仁們提供差異化附加資源。linaro成為對最新linux核心程式3.0到3.7貢獻最大的公司之一,這說明linaro的協作方法确實有效。

作者:zephyr

來源:51cto

繼續閱讀