标签:
文/王嘉宇
本文与之前的两篇侧重点稍有不同,前两篇文章着重介绍的是谷歌与微软的物联网操作系统的战略层面。到Zephyr这个新兴起的物联网操作系统,我想从一个不一样的角度来分析它。因此本文将着重分析一下Linux基金会主导的开源社区的组织构成及其开发者网站的建设思路。
Zephyr是一款Linux基金会主导研发的实时操作系统,针对KB级别智能硬件。以开放源码的形式提供给使用者和开发者,遵守Apache2.0协议。
发布时间 - 2016年2月
官网 - https://www.zephyrproject.org/
管理者 - Linux基金会
Zephyr的官网类似Windows IoT的开发者官网,以导航栏的形式提供网站指引。导航栏显示的内容包括:
Zephyr在首页提到的有三方面的内容:
在这里,nanokernel可以用于单独开发云星宇资源受限更严格的设备之上的应用。 也可以和microkernel一起,在资源较丰富的设备上开发更复杂的应用。
既然是开源项目,自然就会有所有开源项目具有的普遍特征。
具体的特征包括:
在社区的详细介绍里,还提到了Zephyr的社区主要分为三类社区:
在关于页面,Zephyr详细介绍了关于Zephyr开源操作系统从管理到硬件合作方等方方面面的内容,堪称一份简要的关于开源组织如何运作的说明书。我个人感觉有必要在这块用更多的笔墨来描述。
这里的内容主要分为管理层面,生态建设层面,相关会议和视频频道层面,版权层面和出口遵从性层面。
以下为详细介绍:
这一层面的介绍,更像是这一组织的组织章程的简要版本。具体包括了以下内容:
- 行政组织(指理事会)包括行政管理条线和技术管理条线。
- 行政管理条线负责政策制定,战略选择和给技术管理提供指导。
- 技术管理条线包括各层次的子系统的负责人。
- 技术管理条线之上有技术指导委员会,负责行政管理条线与技术管理条线之间的沟通,同时还负责技术管理条线下各子系统之间的沟通。
- 目前所有管理条线的成员均来自各成员组织。
行政管理包括监督以及向项目提供服务,通常以理事会下工作组的形式来承担此类角色。这些工作组可以在任何时间被创建,并且由相关方面的代表组成。
当前相关的工作组包括以下:
- 技术指导委员会 - 前文已经描述了该组织的任务,这里不再赘述。
- 财务 - 主要负责管理财务相关的事物,由一名财务主管牵头负责。
- 基础设施 - 服务器和系统管理,由一名系统管理员牵头负责。
- 支援部门 - 公共关系,网站和资料管理,培训管理以及其他需要对外联系的支援任务。
- 社区管理 - 组织协调社区活动和相关论坛。具体包括组织会议,与项目参与者沟通,外联潜在的成员,维护独有的项目联系方式以及与负责与其他组织联系的的联系人。
- 主架构 - 负责项目的技术指导以及管理其他人员。
- 子系统负责人 - 负责bug追踪和该系统内技术管理工作。
- 项目经理 - 负责子项目任务规划,主持技术会议,解决项目技术上的各种问题。
- 发布经理 - 负责主导发布进程。
当前该操作系统的生态圈里主要包含的是现有的项目创始成员组织,他们包括
现有的生态圈成员都属于半导体行业,甚至包括Synopsys这个芯片仿真的行业巨头。虽然听说过Synopsys有进行一些芯片IP核的设计工作,但是在相关领域并没有听说过有杰出的成就,Synopsys参与物联网很有可能是盯上了物联网芯片这个大市场。
该层面的主要内容为:
该层面主要描述了Zephyr相关的版权和商标专利权等法务方面的内容。不再赘述。
该层面描述了该组织遵守的某些进出口规章,大体属于法务领域的。当然还包括政治领域的,比如这里就描述了根据某些进出口规章制度的约束,该项目及相关产品不得出口到伊朗,约旦,朝鲜以及叙利亚等国。
Zephyr内核是为资源受限的运行环境设计的操作系统内核,这类资源包括简单的传感器设备到无线网关设备。该内核支持的芯片架构包括ARM Cortex-M, Intel x86, 和ARC
Zephyr有以下五个显著的特征:
- 多线程服务 - 包括基于优先级调度不可中断的fiber组件;和基于优先级可中断,提供轮询调度的task组件。
- 中断服务注册 - 包括编译时和运行时两种状态下中断处理句柄的注册。
- 线程间同步机制 - 包括二进制信号量,计数器信号量和锁信号量。
- 线程间数据传输机制 - 包括基本消息队列,增强消息队列和字节流。
- 内存管理机制 - 包括内存动态申请,内存动态释放,释放的内存可是固定大小的也可是变量决定大小。
- 能耗管理机制 - 包括无时钟空闲状态和高级空闲状态架构。
在该入门指南的页面内,主要包括两个层面的内容,设置开发环境和编译运行应用。
该小节主要描述了此系统支持的宿主操作系统环境,包括
接下来提供了三个宿主操作系统设置开发环境的帮助链接,以及如何获取代码。
该小节又由三个部分组成:
这部分描述的内容主要包括内核各部分的主要特征以及使用指南。具体内容包括通用内核,nanokernel和microkernel。
这部分主要描述了如何将设备驱动与Zephyr的设备模型连接起来,使用Zephyr提供的统一API实现设备驱动的初始化。一定程度上可以简化设备驱动的开发。
这里的子系统包括以下内容:
这部分的目标读者是有兴趣参与Zephyr开发的普通内核开发者。
这部分内容很单一,主要是讲解如何将Zephyr移植到别的架构,平台和硬件开发板上。
在Zephyr操作系统上开发物联网应用不同于Linux平台开发应用,虽然这里也用到了Linux内核编译时使用的Kconfig编译系统,但是在Zephyr平台上,是将客户的应用代码和Zephyr内核编译成同一个单独的镜像,然后加载到目标硬件上开始应用。
这里主要讲解的部分包括:
这里包括以下几部分内容,涉及到深入了解Zephyr的方方面面。
这里包括六个方面的帮助手册
编译配置选项帮助手册。
罗列了Zephyr目前支持的不同硬件架构以及具体的单板。
关于这一部分非常简单,仅仅是根据不同的发布版本提供了下载链接。
关于Zephyr的官方网站的指引阅读体验,我总结了以下几点
1、完整的技术文档归类,清晰的下载链接。
2、强调自身的技术亮点,在第一时间吸引目标开发者。
3、与微软的网站很类似的水平导航栏可以让读者较容易找到自己感兴趣的页面。
4、完整的编译栈和相关的模拟器软件。
通过浏览Zephyr的代码结构,不难发现该项目借鉴了很多Contiki的代码。关于网络部分和OS的某些核心代码都是拿来主义。除此之外,据说还包括Intel捐赠的WindRiver源代码。时间有限,无法从源码级别分析Zephyr操作系统,希望将来有时间能仔细研究下Zephyr的源码,特别是关于fiber和task的实现,当然还包括中断服务的实现。
我刚开始写这篇文章的时候,Zephyr刚更新了1.2版本的帮助文档。等我过了大概一个半月来补充完善本文的时候,Zephyr已经演进到了1.4版本。我们自有的LiteOS相比,演进速度之快,发展势头之猛,皆令人称羡。看来我们在低内存硬件方面,遇到了真正的对手。作为一款Linux基金会主导开发的物联网实时操作系统,它的潜力值得我们提高警惕。
我最开始写本文的目的,是分析开源项目的具体组织方式。Linux作为开源软件界的鼻祖,值得我们学习的地方太多。不管是管理层面还是技术层面,都有很多值得我们借鉴的丰富的内容。这其中就包括开源社区建设,开源组织管理,开发者网站建设等等。
Zephyr借鉴了很多Contiki的源代码,那么下回我们就分析一下这个来自瑞典计算机科学研究所大神的杰作。
(更多华为资讯请关注华为开发者社区,华为自己的对外开放门户:http://developer.huawei.com/cn/ict/ ,不要问我叫啥,别人都叫我雷锋)
标签:
原文地址:http://blog.csdn.net/huawei_esdk/article/details/51918699