Zephyr RTOS 简介 —— 来自 Linux 基金会的 IoT 操作系统
<div class='showpostmsg'> 本帖最后由 tidyjiang8 于 2017-1-3 20:31 编辑Zephyr RTOS 简介 —— 来自 Linux 基金会的 IoT 操作系统
[*]Zephyr 是什么
[*]Zephyr 有啥优势
[*]轻量级
[*]高度可配置
[*]多架构
[*]可移植性
[*]丰富的物联网协议
[*]丰富的设备驱动
[*]电源管理
[*]Shell 支持
[*]C++/JavaScript/ 支持
[*]活跃的开发者
[*]为啥学习 Zephyr
[*]中文文档翻译计划
[*]纠错
[*]广告
Zephyr 是什么
Zephyr 是什么?它是 Linux 的孪生兄弟,也是一个操作系统。更准确地说,它是一个专用于资源受限的 IoT 领域的操作系统。
Linux 基金会于 2016 年 2 月发布了 Zephyr 项目,希望借助它来统一物联网领域的混乱局面,以推进物联网领域的快速发展。
Zephyr 有啥优势
轻量级
由于 IoT 领域需要部署大量的联网设备,因此每个设备的成本必须得到控制。控制成本第一个有效方法是降低昂贵组件的标准,例如使用 RAM 更低、ROM 更低的芯片。Zephyr 就是专为这样的芯片而生的,它可运行在只有 8 Kb 内存的 MCU 之上,甚至能在只有 2 Kb 内存的 MCU 上演示 Hello World。
高度可配置
降低成本的另一个方式是按需裁剪硬件。物联网设备一般都是专用设备,因此在面对某个特定市场时只需要特定的硬件。 Zephyr 借鉴了 Linux 的 Kconfig 配置系统,您可以根据硬件设备对它进行直观的配置、裁剪。配置界面如下:
http://iot-fans.xyz/zephyr/doc/v1.6.0/_images/preface.menuconfig.jpg
多架构
Zephyr 在被设计时就支持多架构,包括 x86、ARM 和 ARC(DSP 内核)。到 v1.6.0 时,Zephyr 已支持非常多的开发板:
work@ubuntu:~/me/zephyr-project/boards$ tree -L 2.
├── arc│
├── arduino_101_sss│
├── em_starterkit│
└── quark_se_c1000_ss_devboard
├── arm│
├── 96b_carbon│
├── 96b_nitrogen│
├── arduino_101_ble│
├── arduino_due│
├── bbc_microbit│
├── cc3200_launchxl│
├── frdm_k64f│
├── hexiwear_k64│
├── my_stm32│
├── nrf51_blenano│
├── nrf51_pca10028│
├── nrf52_pca10040│
├── nucleo_f103rb│
├── nucleo_f401re│
├── olimexino_stm32│
├── qemu_cortex_m3│
├── quark_se_c1000_ble│
├── stm32_mini_a15│
└── v2m_beetle
├── nios2│
├── altera_max10│
└── qemu_nios2
└── x86
├── arduino_101
├── galileo
├── minnowboard
├── qemu_x86
├── quark_d2000_crb
└── quark_se_c1000_devboard
可移植性
Zephyr 的可移植性非常强,几个月的时间,它所支持的开发板的数量已经由不足十块到上面所列举的三十多块了。就连我这种小菜鸟都能将 Zephyr 移植到自己的 CC2538 上面(其实只是系统能跑起来,串口能打印而已,参考 这里 的两个 commints Init support for ti cc2538 和 cc2538 串口 poll ok )。
为啥移植性这么强?因为 Zephyr 在被设计时就考虑了可移植性,用户只需要添加少量与开发板相关的代码就能跑起来了。
丰富的物联网协议
物联网一直在发展,存在的协议也多种多样,而且将来肯定还会有新的协议诞生,我们很难说哪个协议最终会脱颖而出,因为它们各自有自己的应用领域。因此,Zephyr 会尽可能多地包括这些协议。来看看 Zephyr 支持(以及今后会支持)哪些物联网协议:
http://iot-fans.xyz/zephyr/doc/v1.6.0/_images/preface.stack.pngZephyr 包括这么多协议会不会太臃肿?这不是与它所说的轻量级自相矛盾吗?答案是不会!我们前面已经说了,Zephyr 是高度可配置的,应用开发者可以根据自己项目的需要,只把相关的功能编译到镜像文件中,从而避免臃肿。
丰富的设备驱动
Zephyr 同样还支持丰富的设备驱动程序:
work@ubuntu:~/me/zephyr-project/drivers$ tree -L 1.
├── adc
├── aio
├── bluetooth
├── clock_control
├── console
├── counter
├── dma
├── ethernet
├── flash
├── gpio
├── grove
├── i2c
├── ieee802154
├── interrupt_controller
├── ipm
├── pci
├── pinmux
├── pwm
├── random
├── rtc
├── sensor
├── serial
├── shared_irq
├── spi
├── timer
├── usb
└── watchdog
电源管理
很多物联网设备都是用纽扣电池供电的,经常更换电池的成本是非常高的。当然,这里说的高并非电池本身昂贵,而是指更换电池时的人力成本。要想一颗小小的纽扣电池运行数年可不是一件简单的事儿,Zephyr 早已考虑到了这一点,它提供了一个电源管理子系统,管理外设的功耗,以达到省电的目的。此外,该功能也是可裁剪的,如果您的设备没有低功耗要求,可以将其裁剪掉。
Shell 支持
想要查看设备内部的运行情况?Zephyr 提供了一个 shell 接口,您可以将您的应用程序的部分接口暴露给 shell,这样您就能与设备进行人机交互了。当然,更高大上的做法是使用 APP 控制设备,直接在 APP 上与设备进行交互,不过这样的开发成本会增加很多。此外,该功能也是可裁剪的,您可以在开发测试阶段使用该功能,正式投入产品后将其裁剪掉。
C++/JavaScript 支持
您没看错,Zephyr 支持 C++。当然,这里的支持并不是完全支持,只是支持部分特性,例如 C++ 仅支持虚函数、继承等一些基本功能。
其实,Zephyr 还支持 JavaScript。那岂不是运行速率极慢?No!No!No!运行确实比 C 慢,但是却不会慢太多!Zephyr 中的 JavaScript 是利用的三星的另一个开源项目 JerryScript 作为解释器的。JerryScript 是一个专门用于物联网领域的 JavaScript 解释器,它对很多细节做了优化,直接将 jS 脚本文件编译到二进制进行文件中,并非像传统的 js 那样解释执行。
活跃的开发者
Zephyr 受到几大厂商/基金会的支持,包括 Linux 基金会、Linaro 组织(成员包括 ARM、飞思卡尔、IBM、三星、ST、TI、华为海思等)、Intel、NXP、新思科技等,开发者众多。
如果您加入了 Zephyr 的邮件列表,或者您注册了 Linux 基金会的账户并登录了 Zephyr 的 JIRA,您可以看到 Zephyr 的开发非常活跃。Zephyr 平均每三个月就会发布一个新版本,而每次新版本的发布都会增加新的功能。例如 v1.6.0 的发布对内核部分做了非常大的改动。预计到 v1.7.0 时,Zephyr 会对协议栈部分做非常大的改动。如此活跃的开发,我们仿佛可以看到 Zephyr 的未来。
为啥学习 Zephy
r当然,前面说了那么多都是空谈,Zephyr 究竟会不会引领物联网市场呢?您猜!
未来的事儿我咋知道呢!不过技多不压身,成为强者后还怕没饭碗?君不见阿里前段时间在招聘 OS 相关人才时还专门列出“熟悉 Zephyr 优先”,君不见 ARM 的招聘岗位中也写者“Family with Zephyr is a plus”,君不见谷歌上海当前正在招聘 嵌入式无线协议栈工程师 (其实就是这些协议栈中的内容),君不见百度、华为、思科、Intel 都在招聘相关人才吗。站在学习者的角度,能从 Zephyr 中学习到这些东西:
[*]基本内功:
[*]C
[*]汇编
[*]数据结构
[*]操作系统/内核: Zephyr 中关于内核这一块可谓是经典。
[*]线程
[*]上下文
[*]ISR
[*]FIFO、LIFO
[*]栈
[*]时钟、定时器
[*]信号量、互斥量
[*]管道
[*]消息队列
[*]内存分配管理
[*]...
[*]设备驱动:您能想到的设备都有。
[*]USB
[*]BLE
[*]DMA
[*]Flash
[*]RTC
[*]Sensor
[*]watchdog
[*]I2C、UART、SPI
[*]...
[*]协议栈:大量物联网相关的协议
[*]6LoWPAN
[*]CoAP
[*]RPL
[*]MQTT
[*]IEEE 802.15.4
[*]低功耗蓝牙
[*]IPv4/IPv6
[*]...
[*]文件系统
[*]架构能力,分析大型软件的能力
中文文档翻译计划
虽然 Zephyr 是一个好的操作系统,虽然它的文档写得非常细致、全面,但是架不住它的文档是英文的呀,一下子就能浇灭很多初学者的热情。鉴于此,所以决定在 v1.6.0 发布之后将其文档翻译成中文,以供广大爱好者学习提供一点帮助。
从本月月初 Zephyr 发布 v1.6.0 到现在,差不多快有一个月的时间,除代码里的 API 注释之外,已经基本上将整个文档翻译完了。在整个翻译过程中,几乎把所有工作都扔到一边去了,没有周末,没有假期,每天晚上十二点后睡觉,虽然非常辛苦,但是看着翻译进度条一点一点前进,还是蛮欣慰的。此外,ianhom 也热心地分担了部分章节,非常感谢。
预计明年 2 月底 3 月初 Zephyr 会发布 v1.7.0,到时候会增加许多网络协议栈相关的文章,我仍然会继续将其翻译成中文,同时也号召更多的 Zephyr 爱好者参与进来,一起翻译,一起分担,一起学习。
纠错
由于时间匆忙,任务量大,英语水平和专业水平有限,所以不可避免地会有很多错别字,或者错误的格式,或者甚至不通顺、不恰当的语句,如果您在阅读的过程中发现了这些缺陷,请指正出来。
纠错的途径:
[*]直接在 Github 上 Frok 项目,修正,然后提交 PR。具体步骤请参考 CONTRIBUTION.md 。
[*]到网页中的相应页面下面进行评论,我看到这些评论后会进行修改。不够由于网页的评论是集成第三方的,我不一定能及时看到。
[*]进 QQ 群并指出。
广告如果您觉得这个文档对您有所帮助,那就点击 Github 仓库 右上角的 Star 按钮收藏下吧,这也是我的动力之一。
https://github.com/tidyjiang8/zephyr-doc
https://github.com/tidyjiang8/zephyr-doc/blob/v1.6.0/CONTRIBUTION.md
</div><script> var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
}
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 钦佩 已收藏 正在接觸這款系統,有一小段時間了,東西不錯,可官網git好慢。 freebsder 发表于 2017-1-4 21:42
正在接觸這款系統,有一小段時間了,東西不錯,可官網git好慢。
其实在 github 上面也有 zephyr 的仓库:
https://github.com/zephyrproject-rtos/zephyr
它是zephyr官方仓库的镜像 本帖最后由 tidyjiang8 于 2017-1-7 12:31 编辑
最新消息,机锋网原创始人 谈毅 正在基于 Zephyr OS 为核心打造一个开源硬件平台(与 wrtnode 创始人罗末一起合作)。贴一下它们的招聘信息。
职位描述:
1、基于乐鑫、MTK、Realtek等物联网芯片平台;
2、负责嵌入式Zephyr(RTOS类)操作系统的底层驱动开发、库移植、应用管理以及远程网络协议对接;
3、负责维护公司基于Zephyr OS和JS Runtime开发板的开源硬件社区。
职位要求:
1、至少本科3年以上相关工作经验;
2、精通C/C++语言,有扎实的编程基础和一定的网络编程经验,有JavaScript经验优先;
3、熟悉RTOS操作系统的各种驱动开发;
4、理解ARM或MIPS微处理器的硬件模块之间设计架构;
5、能流畅阅读和理解英文资料;
6、具有合作精神、能吃苦、有良好的沟通和团队协作能力;
7、具有开源精神,熟悉相关开源社区。
办公地点:
北京市朝阳区三元桥地铁站附近
关于IMIO创智云及项目简介:
IMIO创智云(www.imio.io )是创立于美国硅谷的一家国际化公司,致力于成为全球最佳的极客 maker 智能硬件孵化社区,也将成为全球最酷炫智能硬件产品的发行平台。
2016年8月,IMIO 公司由知名互联网创业企业家、中国最大的安卓开发者社区“机锋网”创始人谈毅在美国发起成立,先后在硅谷与北京、上海组建办公室,并于 11 月获得真格基金的天使投资。 预计在 2017年第一季度,基于 JavaScript 开发语言的嵌入式硬件开源操作系统 IMIO OS(源自 Zephyr) 将发布上线,同时全球第一个支持 JavaScript 开发的 Wi-Fi 模块 IMIO WIFI,以及采用“磁力智连™”扩展方式的 IMIO 开发板及套件也将伴随上市。
IMIO创智云也将推出全球第一个支持原生React Native的开发框架的智能硬件APP Store,第一次提出了用 RN 管理第三方硬件的一站式智能家庭 APP 解决方案,配合 IMIO 创智云的智能硬件 PAAS 云服务,极大程度方便了智能硬件产品的创新实践,也让最终消费者降低了智能硬件的上手难度。
对全球硬件极客而言,IMIO不单纯为了提供全球最敏捷灵活的智能硬件开发工具,更重要的是,IMIO 向世界传达的IOT 与 A.I.等技术革命对人类生活深远影响的观念。这一切来自于IMIO极富创造力的团队氛围,以及IMIO胸怀改变世界的理想及目标。
Zephyr:):):):) damiaa 发表于 2017-1-6 17:20
Zephyr
又有最新消息,ZTE、MTK、紫光将推出跑 Zephyr 的芯片
看来 Zephyr 的未来是大大滴
:loveliness: {:1_103:}{:1_103:}{:1_103:}{:1_103:}{:1_103:}:victory:大大的好{:1_103:} 楼主推荐的系统大家都这么欢迎,有没有兴趣在社区做做推广呀?
让坛子里的坛友深入地了解这个系统
楼主求带 freebsder 发表于 2017-1-13 16:18
楼主求带
欢迎志同道合的小伙伴{:1_102:}
QQ 群:580070214(Zephyr OS 学习交流),里面目前只有几十个人,不过有好几尊大神了,可以相互学习学习 soso 发表于 2017-1-13 16:13
楼主推荐的系统大家都这么欢迎,有没有兴趣在社区做做推广呀?
让坛子里的坛友深入地了解这个系统
我是非常乐意推广 Zephyr,不过咋个推广? tidyjiang8 发表于 2017-1-14 22:19
我是非常乐意推广 Zephyr,不过咋个推广?
能否系统的介绍Zephyr(操作系统、蓝牙、低功耗、传感器等),可以应用目标为例,进行具体的开发实例讲座。
以连载的形式,可以是EEWORLD独家视频公开课,或者文字。
同时对网友的疑问给予支持。
我们协助帮忙推广。如果需要一些硬件板子为基础,我们也可以尝试去申请。 iot+Zephyr,会有很多故事吧 本帖最后由 tidyjiang8 于 2017-1-18 10:34 编辑
soso 发表于 2017-1-16 13:57
能否系统的介绍Zephyr(操作系统、蓝牙、低功耗、传感器等),可以应用目标为例,进行具体的开发实例讲座 ...
我之前写了很多zephyr相关的文章,都放在github上了,不过zephyr当前还处于快速开发阶段,所以很多内容都已经过时了。最近正在重新写,到时候也同时放到论坛里面吧。
可以跑 Zephyr 的开发板我已经很多块了,暂时不再需要了
小伙伴疑问啥的,只要我懂,都会尽量帮忙, happy to share..
wo4fisher 发表于 2017-1-16 22:41
iot+Zephyr,会有很多故事吧
期望将来ing... tidyjiang8 发表于 2017-1-18 10:32
我之前写了很多zephyr相关的文章,都放在github上了,不过zephyr当前还处于快速开发阶段,所以很多内容都 ...
好的 期待文章哈 :congratulate: tidyjiang8 发表于 2017-1-18 10:32
我之前写了很多zephyr相关的文章,都放在github上了,不过zephyr当前还处于快速开发阶段,所以很多内容都 ...
或者你觉得其他能够更好地分享给坛友,我们需要做的推广,也请告知,一起推广 写得很不错啊。赞一个!{:1_103:}
页:
[1]
2