大数跨境

每天了解一个物联网操作系统(十)( HelloX物联网操作系统)

每天了解一个物联网操作系统(十)( HelloX物联网操作系统) 数组智控产业发展科技院
2021-07-29
1
导读:作为物联网操作系统,HelloX始终聚焦物联网领域的应用,为物联网量身定制了一套最优的系统软件解决方案。物联

作为物联网操作系统,HelloX始终聚焦物联网领域的应用,为物联网量身定制了一套最优的系统软件解决方案。


物联网并不是孤立存在的,而是需要AI平台、大数据平台、物联网设备管理平台等一系列后端平台的支撑,共同组成一个面向物与物互联和协同的数字神经系统。HelloX的目标,就是构筑这样一套数字神经系统。



HelloX定位为物联网操作系统,当前选定物联网网关为应用场景进行深入开发。物联网网关功能复杂,其功能和模型也尚未形成共识,有巨大的挖掘空间。当前HelloX的软件,已可以实现完整的家庭网关(物联网网关功能包括家庭宽带接入)功能,后续我们将制作一款专门的硬件用于搭载HelloX物联网操作系统。


HelloX物联网操作系统框架分析


HelloX是由国内操作系统爱好者开发的完全开源的物联网操作系统



从整体架构上可以看出,HelloX操作系统也符合物联网操作系统的分层结构。图中最下方是驱动程序层,实现了大多数常见硬件的驱动支持,包括USB、以太网、SPI/UART等。严格地说,驱动程序层应该属于内核的一部分。在HelloX的实现中,为了突出HelloX丰富的驱动支持的特点,把驱动程序单独拿出来作为一个层次进行展示。


在驱动层之上,是内核层。内存管理、任务调度等机制,都是在内核中实现的。与其他物联网操作系统基于Linux内核定制的思路不同,HelloX的内核是根据物联网的特征,完全全新开发的。内核中各模块之间是松耦合的,可以根据需要,灵活地裁剪或者增加任何内核模块,这样就确保了内核的可伸缩性,能够满足多种多样的碎片化硬件需求。也可以根据需要,替换内核中的默认模块或者算法,比如可以采用自定义的任务调度算法,替换内核中默认的基于优先级轮询的调度算法。也可以采用更加实时的内存分配算法(比如固定尺寸链表法),来替换内核中默认的空闲链表内存分配算法等。对于MMU的支持,HelloX也是作为可选模块来实现的,裁掉了MMU功能,不会对系统中的其他模块产生任何功能上的影响(但是内存保护和虚拟内存等机制就不能使用了)。


在内核层之上是外围组件层。HelloX提供了包括网络、文件系统和系统调用等在内的多种多样的外围组件,供物联网应用程序开发者调用。


目前的HelloX,移植IoTivity物联网协同框架作为自己的协同框架。未来根据需要,HelloX会开发出更加灵活的物联网协同框架与HelloX捆绑使用。


以上介绍的这些基本组件和功能,可以基于HelloX操作系统实现广泛的物联网应用,比如家庭网关、智能摄像头、智慧家庭中的家电设备、抄表和e-Health等。目前HelloX已经实现了同多个物联网云平台的对接和集成。


HelloX开发团队经过了近半年的努力后,正式开发出了HelloX V1.83测试版本。经相对充分的测试和验证之后,正式发布。其相关代码已全部上传到了GitHub上(github.com/hellox-project/HelloX_OS),对HelloX感兴趣的读者可以下载测试和试用,并进一步反馈问题。


HelloX主要功能


HelloX V1.83版本主要对下列特性进行了支持和优化:


完整支持多CPU功能。HelloX V1.83支持SMP(对称多处理)功能,可在安装有多个CPU或者在多核CPU上运行,充分发挥多CPU的并行计算能力。当前版本默认支持32个CPU(或CPU核),在任何少于32个CPU的计算机上都可以正常运行。如果计算机的CPU数量多于32个,可以通过修改宏定义并重新编译来支持CPU正常运行。


HelloX对先前版本V1.82的网络功能有较大幅度的优化。比如,对TCP校验和算法进行了性能提升,对网络地址转换(NAT)的查表方法做了改进,由线性链表修改为完整的RADIX树的方式,可大大提升查表效率。同时,通过把IP协议栈的多个线程(比如PPPOE客户端线程、DHCP服务器线程、IP转发线程和网络控制管理线程等)同时调度到多个CPU上,充分发挥多核CPU的性能,大大提升了转发和处理效率。


增加了更加丰富和完整的调试与诊断手段,包括日志输出功能、异常情况下的调试信息输出功能,以及内存申请跟踪等功能。当前的内核已经很少出现异常情况。出现异常情况时,通过分析上述输出的信息,可以快速定位问题。


HelloX V1.83编译后的可执行文件大小,包括内核、网络功能、用户命令行界面、文件系统和各类驱动程序等,在560KB左右,比V1.82编译后的镜像稍大一些,但仍算比较小的,可满足大多数嵌入式硬件的要求。


而JerryScript等程序,则以外部可执行文件的方式存在,可以存放在外部存储介质如USB stick或者SD card上,按需加载和卸载。


HelloX V1.82的核心功能是网络,而V1.83的最核心功能是多CPU支持。主要表现在下列几点:


● 支持ACPI(Advanced Configure Power Interface)功能,HelloX在启动的时候,会按照ACPI规范,搜索内存中的配置数据表格,通过分析这些表格,得到系统配置的CPU数量、CPU核心连接的拓扑结构、内存数量等信息,进而建立一张处理器拓扑结构表格。在HelloX的命令行界面中,用sysinfo命令可以查看建立的CPU连接拓扑。对于每一个检测到的CPU(processor),HelloX都会记录在案,并加以管理和使用。


● 支持spin lock,处理器间中断(IPI)等CPU间的同步通信机制,确保不同CPU之间有效通信,协调运作,形成一个多核心分布式的计算系统。当前的spin lock机制,采用共享全局变量加原子操作指令方式实现,大部分操作系统都是以这种方式实现的。为了进一步提升性能,后续将基于链表方式实现spinlock,这对当前的代码是透明的。对于IPI(Inter-Processor Interrupt),HelloX采用APIC(Advanced Programming Interrupt Controller)来控制实现。IPI可用于完成即时调度、TLB刷新等功能。


HelloX V1.83的锁粒度(主要是spin lock)是对象级的,即每个内核对象,比如内核线程、同步对象(Mutex/Semaphore/Mailbox等),都有自己的spinlock。这与子系统级的spin lock不同。在子系统级spin lock的实现中,每个子系统有一个共享的锁,所有属于该子系统的对象共享这个spin lock。这样会导致明显的效率下降,因为一旦一个子系统的对象占有子系统锁,那么同一个子系统的其他对象则无法同时获得该spin lock,只能等待。HelloX V1.83则没有该问题,因为其spin lock是对象级的。对象级spin lock也有其不足,那就是容易产生死锁(dead lock),因为锁的粒度很小,很多代码片段需要同时获得多个对象锁,在编程时需要仔细排列获取锁的顺序。一旦操作顺序排列不仔细,很容易产生死锁。在HelloX V1.83的开发过程中,曾产生多次死锁。为了检测死锁,HelloX实现了“死锁超时等待机制”,在等待一个spin lock的时候,如果超出了预设的最大等待时间,则引发系统告警,便于代码调试。


基于多CPU架构,对HelloX的网络子系统进行了全面的优化。比如调整线程的调度优先级、引入批量发送机制,合理地组合相关线程到单个CPU,最终达到了理想的网络吞吐效果。后续版本将进一步对网络子系统进行优化,以达到线速支持10Gbps的转发级别。


与以前版本的原则一致,在HelloX V1.83版本的开发过程中,坚持“稳定可靠,不留问题死角,可直接应用”为原则,所有代码都经过了详细、深入的内部测试。在开发过程中,通过编写仿真高压程序分布到每个CPU上,这些程序之间通过mailbox、semaphore、mutex和message queue等方式频繁交互(5ms交互一次),同时定义多个定时器,来测试多核功能,整体表现符合预期。


在所有代码集成完成的时候,又沿用了HelloX V1.82版本的实际测试用例,用一台笔记本电脑加一个无线AP,搭建了一个家庭宽带路由器,并连续使用了将近一个星期,体验与普通路由器没有任何差别。测试期间,HelloX路由器连接了20台左右的终端,包括智能手机、笔记本电脑、Pad、儿童手表、家用无线打印机、电视机,以及小米智能台灯等设备,所有设备的网络状态都正常。


在测试过程中,随着越来越多的物联网设备接入到HelloX网关,越来越能体会到物联网操作系统的真实价值,越来越能感受到物联网网关的重要性。设想一下,物联网网关可以看到所有物联网设备的通信模式,包括报文的平均长度、发送间隔、带宽、时间分布、MAC地址和通信协议类型等信息。通过这些信息,即使不对IP报文做深度分析,也可以通过大数据或者AI技术识别设备类型和设备能力,从而有目的地与物联网设备进行协同。单个物联网网关,是一个本地网络的控制中心,而所有的物联网网关组成的大网络,则是整个世界的控制中心。HelloX将聚焦物联网网关方向,做深入的技术耕耘,为人类建立安全、可靠、智能的物联网数字中心而努力。


HelloX后续会针对新的网络发展比如5G等,对网络功能做进一步的增强,同时也会进一步引入业界先进的网络架构和新技术,比如SDN(软件定义网络),以及新的网络安全技术,打造一个兼容现有的路由器功能,同时面向物联网应用的软件平台,这个软件平台完全开源,并始终保持安全、高效和灵活等特点。


HelloX实践项目正按开源的方式有序运作。其中,HelloX操作系统和模组已经开发完毕,正在最后的调试阶段;HelloX Gateway的样机也已设计完成,处于生产阶段;云平台和手机App正处于开发阶段。待这些组件都齐备之后,HelloX项目实践者将以“志愿者合伙”方式进行推广和市场验证。如果被广泛认可,HelloX项目实践者会组建“非功利性公司”来真正产品化这一套框架。具体的商业模式也很清晰,销售HelloX模组、HelloXGateway和技术支持服务,当然这种销售会充分体现“非功利性”的原则,即完全开放成本组成,利润保持能支撑企业的日常运作即可。


HelloX智慧家庭框架包括HelloX物联网操作系统的目标不是盈利,而是推动行业的良性发展,推动“智慧中国”理念的落地,为实现中华民族伟大复兴的“中国梦”而努力。因此所有的源代码、设计理念和设计文档都是公开的。



【声明】内容源于网络
0
0
数组智控产业发展科技院
以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
内容 986
粉丝 0
数组智控产业发展科技院 以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
总阅读1.6k
粉丝0
内容986