利用物联网操作系统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的协作方法确实有效。