极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18623|回复: 2

(氦氪技术连载)氦氪家的Gemini是个什么鬼?云端定义硬件功能的新趋势

[复制链接]
发表于 2015-11-4 10:22:23 | 显示全部楼层 |阅读模式
本帖最后由 氦氪空间 于 2015-11-4 11:01 编辑

氦氪家的iot软硬件容器,gemini3.0 预计年末发布啦!
gemini经历过1.0时代在linux上面能够稳定运行,2.0时代在esp8266上面稳定运行,目前已经优化新版本3.0准备2015年末发布。
噢,对了,之前还出了一个玩具版本在arduino 2k内存上面能跑的,在氦氪github上面开源了。

大家会有疑问gemini是个什么鬼?
简单得来说,gemini是一个硬件程序运行的“容器”(embedded container),最开始的时候咱们叫它虚拟机,但是后来觉得这名词“太重”了。
通过这个容器,可以实现云端定义硬件功能;

目前传统单片机嵌入式程序是直接跟硬件和驱动沟通,好一点的会跑一个rtos,但是还是无法解决程序移植的困难和研发效率低下;
如果是linux,在不同芯片架构下面交叉编译和各种依赖也会让研发人员抓狂,而且在一些低端芯片上面linux可是奢侈品呢

总的来说:
1.开发环境搭建步骤繁琐;虚拟机、 代码交叉编译器下载配置
2.硬件仿真器jtag jlink 使用烧录复杂
3.系统以及驱动移植、软件依赖库移植、外设驱动开发难度
4.C语言门槛高,网络、多线程开发难度大、内存管理要求高
5.学习Makefile 语法,还要理解make如何工作
6.Gdb调试繁琐,实时程序,调试困难,测试自动化也困难
7.固件程序无法灵活升级,动态更换
8.开发周期长、灵活性较差
9. etc.

而又回来说起gemini,gemini的发明者因为对计算机科学独特的理解;
实现了跨越操作系统(linux 安卓 win macosx…),乃至硬件平台(arm mips x86...)和计算机体系架构(冯诺伊曼架构和哈佛架构)的中间语言层

它改变我们原来的开发、生产方法,从原本的需要关注硬件驱动和程序优化,转换到只关注业务需求;从原本的固化代码在硬件上面转换为云端可以动态更换硬件的功能逻辑

gemini是专门为开发人员不需要精通硬件却想快速研发智能硬件程序,开发iot服务而设计的.
其实容器类技术并非gemini的创新,最早armpit v7 elua等等都采用了类似的技术,但是氦氪团队第一个将这这种软硬件容器技术大规模商用并且开源.
总的来说好的部分gemini相对于传统的单片机上研发优势十分明显,那就是
简单:写脚本,配合完善的lib。
轻量级:4k RAM,200k ROM。
可扩展:便捷性,效率高,代码热部署。
安全:有沙盒模式,保护自身。
鲁棒:内存回收防止泄漏,程序不容易崩溃。
分布式:函数式编程,解释执行,更灵活。
体系结构中立:跨越操作系统,硬件平台,计算机体系架构。

之前和几个BAT物联事业部的哥们在交流的时候就有被问起,这个东西设计的初衷是什么?
其实侧面回答,为什么淘宝 支付宝 微信等都用h5 Hybrid app,而不采用全部native app?

---------这是广告的分割线---------
氦氪是物联网的苹果+谷歌,苹果的理念融合谷歌的技术
---------这是广告的分割线---------

接下来我们介绍一下这玩意在实际中有哪些生产力的影响;
云端定义硬件功能又由何而来,首先提升开发生产力上面先不说,先提几个实际应用:

1. 出厂前功能测试;在物联网中,首先通讯模块(wifi 2g 蓝牙...)等等出厂前肯定要对自身进行测试验证,一般会检测硬件上面的pin口是否ok,如果有串口等等都会验证收发问题,那么很简单,只需要通过云端下发一个gemini代码打开pin输出高电平,然后通过另外一个pin口输入检测一下电平高低即可,同理可以检测所有的io 。
example:  (dev.gpio.value 13 1 )   ; pin 13口输出高电平
然后工厂将产品结合通讯模块贴片生产之后,还需要做一次测试,就是验证联网产品云端控制是否有问题,那么只需要联网后,让网络下发一个gemini代码,控制模块和产品交互然后反馈各种控制功能是否存在故障。
example: (dev.uart.write uart0 "helloworld")   ;让模块串口输出字符串代码。
通过以上的原理优化生产线,效率提升不说,每条产品生产线至少节省60w每年

2. 数据上报规则需要动态调整;举个例子,目前温度传感器是每当温度变化立即上报,但是因为温差较大,抖动比较多,所以数据上报也太多了,因此可以动态修改传感器上报的逻辑,例如我们可以云端动态设置一个规则在终端硬件上在每10度变化才会上报,之后我们发现,数据粒度太粗了,又可以让云端动态设置一个条件判断规则在终端硬件上,大于5度变化后才会上报,从而实现灵活调配。
example: (if (> temperature 5 ) (upload-cloud temperature) )

然而,在不久的将来硬件和芯片的东西都会趋向于动态可变,而gemini可谓让可变的设计联网了之后效能最大化。
gemini 各种优势源于它理念和血统的优良继承,(源于 Lisp MIT-scheme 要是有兴趣自己谷歌 百度一下),而在传输中途采用了s-exp,代码即数据,数据即代码;结构比json低级但更高阶灵活。
因此可以通过 Machine2Machine 形式或者 Cloud2Machine形式,Machine2Cloud 形式互相传输数据,或者函数调用形式互相rpc。

其余有兴趣的可查看gemini介绍资料《(氦氪技术连载)氦氪gemini的设计理念》
另外,目前可以烧录一下氦氪在github上面release出来的esp8266固件,已经包含gemini2.0 容器在内。
arduino-gemini 开源玩具版可以先体验一下 http://github.com/HEKR-Cloud/HEKR-GEMINI

氦氪家的开源资料都可以通过以下链接获取:
http://docs.hekr.me/

扫一扫加QQ群做产品技术交流:

氦氪Wi-Fi/2g 硬件模块+嵌入式软件+全球化实时云服务+企业自己的超级APP+企业智能运营中心+微信对接=氦氪超值服务。

下期连载:

(氦氪技术连载)模块小而美的设计,中国硬件也能有的情怀
(氦氪技术连载)智能硬件对接微信,二维码导致生产困难解决之道
(氦氪技术连载)氦氪gemini的设计理念

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-11-4 10:38:35 | 显示全部楼层
有图么?
你的连接404
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-4 10:42:06 | 显示全部楼层
wing 发表于 2015-11-4 10:38
有图么?
你的连接404

SORRY  刚编辑的时候出了点问题   是这个链接 http://docs.hekr.me/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 16:35 , Processed in 0.047032 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表