可穿戴市场经过一轮火爆发展,吸引了众多创业者的目光,有人说这都是一片红海了,创业者们何必再来蹚上一遭,其实踩着市场的热点推出新品更能抓住市场机会,小米雷军不是说过站在风口上的猪都能飞起来吗?今天我们就请来一家叫BayLibre的公司现身说法,看看他们怎么样设计可穿戴设备?以及如何为可穿戴设备选择合适的操作系统?
BayLibre是一家来自法国的嵌入式设备公司,他们在着手设计开发一款新的可穿戴产品时, 首先考虑到选择怎样的操作系统的问题。
选Zephyr 、NuttX还是设计自有操作系统?前者完胜
产品框架图
从这个产品框架图可以看出,BayLibre的设备里面有一个ARM Cortex-A SoC, 通过SPI总线连接到Cortex-M4 STM32L4xx。这通过I2C连接到其他更轻量级的Cortex-M内核。他们需要一个免费的、获得认证许可的RTOS,而且还需要用于UART、I2C主机和SPI从机的驱动程序。同时需要具有调度程序、计时器、任务、线程和锁定等功能。经过筛选对比,BayLibre 的Parent 和 Armstrong很快锁定了三种方案:推出自有的操作系统,采用Apache 2.0授权的Zephyr,或者是具有3条BSD许可的NuttX。
大部分创业者对创新充满了兴趣,很多人选择设计自有操作系统,优点是可以根据自己的产品量身定做,而且设计完成后团队充满成就感。但是大家也别忘了,自行开发操作系统周期长不说,还需要耗费巨大的人力物力成本,而且很难实时维护,没有足够时间修复缺陷完善系统。权衡利弊,方案一放弃。
再看NuttX,它以运行在Pixhawk无人机控制器上而闻名,而且Parent曾在谷歌放弃的Ara项目中工作了两年,对NuttX的操作比较熟悉。缺点是它的构建系统完全不可靠,Parent解释,“在Ara项目中,无论何时更改配置,我们都无法确定NuttX是否能够正常工作。此外, NuttX基本上全部由一个人编写,所以没有同行评审。尽管有NuttX的BSD许可证,但在其存储库内有许多代码需要新的许可证,如GPL,所以没准什么时候你可能会不小心采用了这些代码,后果太可怕了。”
当他们发现Zephyr时,眼前一亮。Zephyr具有模块化、可扩展、开源等优点,其内核可以运行在内存8KB 到512KB的设备上,并且能够针对特殊设备启用或者禁用任何功能数量,目前支持ARM-Cortex-Mx,英特尔X86,ARC,新思 Nios 2和RISC-V等架构,57种主板,给设计者提供尽可能大的选择范围。另外,它的编码风格、构建系统以及维护者概念都与Linux很相似,Zephyr具有详细的文档,在开源社区的支持下不断完善。
经过三套方案的优、劣势对比,Parent 和 Armstrong毫不犹豫地选择了Zephyr操作系统。
如何移植和upstream一个新平台?
Zephyr在他们开始该项目之前几周才发布,当时它并不支持STM32L4xx SoC,只支持较旧的STM32F1xx型号。但他们很快发现这是一个非常容易处理的挑战,不像想象的那么复杂。SoC被证明都非常相似,所以更新端口只花费了一天半的时间,测试在一周内就完成了。
在开发产品的过程中,upstream本身也具有挑战,而且Zephyr自去年推出以后一直在快速更新,现在已经更新到了1.8版本。Parent 和 Armstrong做第一个rebase时,什么都行不通,于是他们不得不重写了三次电源管理代码,他们得出结论,“一旦你有了干净的代码,就应该尝试尽快upstream它。否则,你要花费好几个小时来rebase所有东西。”
他们在进行最初的设计时,Zephyr还在使用Gerrit进行补丁审查,并使用JIRA进行功能请求,此外还有一个邮件列表。Parent解释,“Gerrit使你不大容易忘记补丁,但是它真的很慢,而且很复杂。最大的问题之一是,你必须单独选择评审者,而不是进行广播。没有补丁系列的概念,所以你必须添加主题到你的补丁系列,这使得发送补丁更加复杂。它的档案搜索很糟糕,而且很难看到补丁的全貌。JIRA是管理人员友好型的,作图很容易;但它不是开发人员友好型的,没有什么好的信息介绍如何使用它,它是又一种与邮件列表和Gerrit相重叠的通信媒介。”
为了解决在设计中存在的这些问题,Zephyr已经将所有代码迁移到了GitHub上,开源社区的开发者们可以利用GitHub更简单地完善Zephyr,可以对GitHub Repo 进行分支和复制,通过拉式请求提交变更,像针对GitHub中的问题一样,提出有关代码错误、强化和功能方面的问题,参加开发者邮件列表的讨论。
Armstrong总结了第一次使用Zephyr设计产品的经验,他表示,“Zephyr适用于小型CPU上低内存或低性能配置的良好设计,是为数不多的针对可穿戴产品优化的开源RTOS之一。和Linux非常相似,API简单易懂,有清晰的文档,而且有一个活跃的开源社区,缺陷能够很快得到修复。‘ Amstrong 特别强调’它的编码风格、构建系统以及维护者概念都与Linux很相似。Zephyr也有很好的文档,它正在快速发展出一个强大的社区。Zephyr支持低内存使用,它是高度可配置的、模块化的。它提供现代化的、合作性的、抢先的线程功能,并且最终将增加安全性预认证。‘ 当然他也指出了遇到的一些问题 – ‘Zephyr的代码仍然很年轻,API变化很快,所以开发者需要针对每个版本测试代码以确定它们是否仍然能够正常运行。 一些功能的规划和评审也需要澄清和改进”。
Zephyr操作系统也在根据用户需求不断更新,自去年2月推出以来已经推出了8个版本,而且将代码迁移到GitHub,未来通过开源社区和开发者们的贡献会更加完善。
合作机构
联系方式