作者 | 马超
责编 | 胡巍巍
出品 | 程序人生(ID:coder_life)
最近我国自研的操作系统接连开源,先是MiniGui(Github地址:https://github.com/VincentWei/minigui),可能现在提起MiniGui大家已经比较陌生了。
不过对于笔者-曾经的CSDN嵌入式论坛版主而言,MiniGui是个如雷贯耳的名字,在十几年前MiniGui和WINCE是各个各种开发板的标配,当时论坛上也有各种关于MiniGui移植及开发的帖子。
但是由于当时的嵌入式系统多用来制作手持式PDA,车载导航仪等设备,所以安卓出现后迅速占领了上述市场,MiniGUI等嵌入式操作系统逐渐没落。
但是我们整理互联网发展的脉络可以看到,内容的不断丰富与终端的不断扩展是两条主线,随着网上数据量的持续爆炸性增长,今后新增的流量肯定主要来自于对于万物互联的红利。
而与传统互联网内容+用户的模式不同,物联网则是场景+用户的模式,谁能整合场景谁能笑到最后。所以之后的嵌入式系统又迎来了生命中的第二个春天。
巨头们的布局

腾讯在三天前正式发布了其物联网终端的操作系统TinyOS(Github地址:https://github.com/Tencent/TencentOS-tiny),其系统架构图如下:
目前看其内核部分已经开发完成,并已经完全开源。虽然从其从tinyos内核的代码来看(详见https://blog.csdn.net/BEYONDMA/article/details/101355221),还是为物联终端做了一定优化与裁减的,不过从下面的场景图来看,腾讯其实醉翁之意不在酒,以操作系统为契机入局物联网的相关链条已经规划完整。

而且从比操作系统发布还早几天就挂在淘宝上的开发板来看,更是说明腾讯对于旗下云平台能够整合物联场景的巨大野心。
AliOS Thing3.0发布 
云栖大会第三天,阿里不出意外的拿出了AliOS Things 3.0(Github地址https://github.com/alibaba/AliOS-Things/tree/rel_3.0.0),与TencentOS Tiny一样这款OS也是与阿里云平台无缝对接的,而且它的内核还直接支持了自家的AI芯片,提前布局AI+物联网。
由于AliOS Things已经开源两年有余,所以其开发者体验相对较好,他们的IDE是基于VSCODE的,笔者已经下单他们的开发板了,后续亲测OS后再发体验。
可见巨头的逻辑就是要整合物联网时代的场景,他们的OS都是免费的,而且技术支持也强,不过巨头就是要做物联时代的ANDROID,最终一统天下。
老牌嵌入式操作系统的选择
MiniGui做为已经存在了20多年的嵌入式操作系统,其架构图如下:

从底至上,MiniGUI 由如下几个模块组成:
图形抽象层(Graphics Abstraction Layer,GAL)
图形抽象层将来自不同操作系统或设备的图形接口进行抽象,为 MiniGUI 上层提供统一的图形接口。在图形抽象层内,包含有针对 Linux FB 设备、eCos LCD 设备等的软件组成部分。
这些软件组成部分通过调用底层设备的接口来实现具体的图形抽象层操作,如打开设备、设置分辨率及显示模式、关闭设备等。
我们将这些用于适配图形抽象层接口的软件组成部分称为“引擎(engine)”,其概念和操作系统中的设备驱动程序类似。
输入抽象层(Input Abstraction Layer,IAL)
和 GAL 类似,输入抽象层将 MiniGUI 涉及的所有输入设备,如键盘(keyboard)、小键盘(keypad)、鼠标(mouse)、触摸屏(touch screen)等抽象了出来,为上层提供一致的接口。要支持不同的键盘、触摸屏或者鼠标接口,则通过为 IAL 编写不同的输入引擎实现。
MiniGUI 通过 IAL 及其输入引擎,提供对 Linux 控制台(键盘及鼠标)、触摸屏、遥控器、小键盘等输入设备的支持。
图形设备接口(Graphics Device Interfaces,GDI)
该模块基于图形抽象层为上层应用程序提供图形相关的接口,如绘制曲线、输出文本、填充矩形等等。图形设备接口中含包含其他比较独立的子模块,如字体字符集(font and charset)支持、图像(image)支持等。
消息处理模块(Messaging Module)
该模块在输入抽象层基础上,实现了 MiniGUI 的消息处理机制,为上层提供了完备的消息管理接口。
众所周知,几乎所有的GUI 系统本质上都是事件驱动的,系统自身的运行,以及GUI 应用程序的运行,都依赖于消息处理模块。
多窗口处理模块(Windowing Module)和控件(Control 或 Widget)
基于图形设备接口和消息处理模块,MiniGUI 实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。
控件类是用来实现控件代码重用的重要概念,利用控件类(control class),我们可以创建属于某个控件类的多个控件实例(instance),从而让这些控件实例使用同一个控件类的代码,这样,我们就实现了类似 C++ 那样的类和实例概念,从而可以最大程度上重复利用已有代码,并提高软件的可维护性。
MiniGUI 的控件模块实现了常见的 GUI 控件,如静态框、按钮、编辑框、列表框、下拉框等等。
外观支持(Look and Feel):
这个模块是 MiniGUI V3.0 提供给上层应用程序的接口,可用来定制 MiniGUI 窗口、控件的绘制。
在 MiniGUI V3.0 之前的版本中,对主窗口和控件的定制能力,还没有被抽离出来形成独立的模块,但我们仍然可以通过配置选项让 MiniGUI 的主窗口、控件具有三种显示风格,分别是:类似 PC 的三维风格(PC3D)、平板风格(FLAT)、流行风格(FASHION)。
在 MiniGUI 3.0 中,主窗口和控件的外观可完全由应用程序自行定制,在创建主窗口或者控件时,指定外观渲染器(renderer)的名称,就可以让主窗口或者控件具有各自不同的外观。
可以看到MiniGUI从创立伊始就放弃了对于RTOS内核的编写,直接基于linux等内核来做封装。简单聊两句基于MiniGUI的图形应用开发。
typedef struct _MSG
 {
  HWND             hwnd;
     int              message;
     WPARAM           wParam;
     LPARAM           lParam;
 #ifdef _LITE_VERSION
    unsigned int     time;
 #else
      struct timeval   time;
 #endif
      POINT            pt;
  #ifndef _LITE_VERSION
      void*            pAdd;
  #endif
  }MSG;
typedef MSG* PMSG;

可以看到其对于消息的定义几乎与WINDOWS一致,其建立窗体等操作也几乎与WINDOWS一样。所以MiniGUI的设计有很大程序是为降低嵌入式系统图形界面开发难度而产生的。

国产实时操作系统内核的先驱RTthread
提到咱们国产的loT操作系统RTthread也是一个无论如何也绕不过去的标志,如果RTthread在06年初就发布了第一版,而且经过了这十几年的上亿台设备装机的技术沉淀,RTthread的社区也已经俨然发展成为国内最强的嵌入式社区了,笔者刚刚到他们的论坛上逛了一圈,真的是强手如云,大咖云集。
具体内核相关知识后续会再发文介绍这里也就不再赘述了。而且最新的消息显示MiniGUI开始支持RTthread的内核了,可见传统的嵌入式操作系统厂商的策略是要尽量保持生态的多元化,抱团取暖。
HybridOS的开源计划
最近MiniGUI的飞漫软件又官宣了他们的HybridOS开源计划,而根据目前的材料看HybridOS最大的看点是要用HTML来统一UI的开发,这与之前使用WIN32的设计来统一UI开发的逻辑如出一辙。
我们知道由于物联网终端真的是不一而足,与手机终端完全不同,其不同终端的碎片化需求太多太复杂,比如,有的智能灯泡要蓝牙即可,而智能空调可能就要有Wi-Fi了。
而我们金融行业要做智能合约可能对于终端的算力又有一定的要求,这样碎片化的场景,由于Android硬件设备的要求门槛较高,就不太适合了, 而直接用Linux裁减,这对于人才的要求又太高。
所以与腾讯等巨头整合全场景的目标不同,MiniGUI的背后其是保持生态多样性的逻辑,他的目标是降低开发门槛,避免初创公司必须选择鸿蒙或者TinyOS这种大厂的操作系统。
让场景的提供方可以通过较低成本验证自身的想法,而避免从一开始就走上巨头们早已画好的圆圈。
在他们的官宣当中对于其后续要发布的HybridOS物联网操作系统有如目标:
1. HybridOS 的设备端系统基于 Linux 内核,充分利用 Linux 内核生态,降低各种驱动程序的开发难度以及各种协议栈的支持难度,从而降低开发成本。
2. 和基于 RTOS(实时操作系统)技术发展而来的物联网操作系统(如RT-Thread、LiteOS)相比,HybridOS 更倾向于运行在具有更高硬件配置的智能物联网设备上,而不是小型的单功能物联网设备上,后者的硬件配置往往有限。
3. HybridOS 不仅仅运行在智能物联网设备中,它同时还提供了针对云端以及客户端的标准框架和编程接口,为开发者提供了从设备到云再到客户端的完整软件栈和协议栈。在未来,HybridOS 还计划统一客户端和设备端上的 App 开发接口。
4. HybridOS 将基于区块链技术为物与物之间的通讯提供一个全新的实现方法。在 HybridOS定义的实现方法下,所有的数据都带有不可篡改的数字签名以及时间戳,而所有数据的传输和存储都可加密。这将从根本上提高物联网的安全性。

后记

我们可以看到巨头的逻辑是要让其它公司免费使用其OS上车,然后接入其loT云平台成者直接收购无缝整合,败者自生自灭,从而将自己立于不败之地,而传统的嵌入式公司逻辑则是降低OS的使用开发门槛,让物联网生态链上的企业能有自主选择。也让我们拭目以待,物联网时代能否产生新的巨头。 
声明:本文为 CSDN 博主马超(ID:beyondma)的原创文章,版权归作者所有。
扫描下方二维码,查看博主精彩分享

 热 文 推 荐 

你点的每个“在看”,我都认真当成了喜欢

国产物联网操作系统崛起!相关推荐

  1. 国产物联网操作系统有哪些,谁主沉浮?

    关注.星标公众号,不错过精彩内容 转自:与非网 放眼国内物联网战场,华为.阿里.腾讯等纷纷打造自己的操作系统,RT-Thread这样有一定生态规模的第三方也在迅速崛起.谁更适合在物联网时代生存?是将长 ...

  2. 装机量 2 亿,这款国产物联网操作系统为何是“小而美”?

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 随着万物互联时代的到来,物联网设备呈喷井式发展,据Strategy Analytics联网家庭设备(CHD)研究服务发布的<全球联 ...

  3. 国产嵌入式操作系统发展思考

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 作者 | 何小庆 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 嵌入 ...

  4. 国产嵌入式操作系统发展思考 | 何小庆

    国产嵌入式操作系统发展思考 偶然翻到了这篇老文章,出自何小庆(<嵌入式操作系统风云录:历史演进与物联网未来>作者),写的很好,汇总了当下国产 OS 的状态,遂分享出来.本文源自微博&quo ...

  5. 中国移动OneOS 3.0物联网操作系统正式发布

    11月28日,由中移物联网有限公司举办的"中国移动OneOS 3.0LTS物联网操作系统发布会暨生态合作论坛"在线上隆重举行.中国工程院院士倪光南.中国移动通信集团有限公司政企事业 ...

  6. 国产物联网操作系统的出路在哪里?

    不看这几篇好文,就别说自己了解物联网 一.背景和现状 物联网操作系统作为操作系统的一个分支领域已经有了数十年的历史,作为应用领域最为宽广.设备数量最为巨大的应用领域,物联网操作系统并没有发展出如个人桌 ...

  7. 强烈推荐一款国产物联网实时操作系统RT-Thread

    文章目录 强烈推荐一款国产物联网实时操作系统RT-Thread RT-Thread 的架构 实操一把 准备工作 下载RT-Thread Simulator 例程 系统启动代码 用户入口代码 跑马灯的例 ...

  8. 10月29日晚8点,国产开源物联网操作系统TencentOS tiny线上直播开讲

    10月15日,腾讯正式宣布,将旗下两大开源项目-轻量级物联网实时操作系统TencentOS tiny和企业级容器编排引擎TKEStack(均待更名)捐赠给开放原子开源基金会. 未来这两个项目将在基金会 ...

  9. 指令集与应敏科技达成战略合作,国产原创物联网操作系统助力电力检测「智慧化」...

    2022年6月6日下午,指令集智能科技与应敏科技签署了战略合作框架协议:该签约仪式在启迪创智谷隆重举行. 根据协议,双方将充分发挥各自的行业技术优势,通力合作,通过战略合作牵引,促进电力检测行业数智化 ...

最新文章

  1. 在vs里不重启模拟器进行Symbian调试
  2. MongoDB学习(五)使用Java驱动程序3.3操作MongoDB快速入门
  3. Spring Ioc注解式开发中注解的作用
  4. 湖大计算机考研分数线,湖南大学2017年考研分数线已公布
  5. linux查看分区树形状态,查看Linux磁盘的分区状态(lsblk、blkid、parted)
  6. visual studio code typescript 防止 import statement 断行
  7. Arrays.copyOf()方法详解-jdk1.8
  8. linux启动java命令
  9. 小米路由器能搭建虚拟服务器吗,【教程】如何通过小米路由器构建文件共享服务...
  10. 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))
  11. 网安学习-应急响应1
  12. 新浪微博OAuth认证简介
  13. 计算机公式和函数的区别,什么是函数 什么是公式
  14. 论文导读 | 社交网络上的信息传播预测
  15. QT 读BIN文件的两种方式
  16. 核工业物理研究院九院三所
  17. echart象形图-三角锥形/山峰形/三角形--柱子渐变色,x轴换行显示,加单位显示
  18. python取矩阵的一部分_Python 实现取矩阵的部分列,保存为一个新的矩阵方法
  19. 永不停息的阿拉伯数字手势时钟app
  20. Flask后端开发(二) - Flask的练习(入门)

热门文章

  1. ASP.NET服务器控件对应的HTML标签
  2. ubuntu 下 maven安装
  3. JAVA     MyFirst.java
  4. 拖拽之路(五):自定义QListWidget实现美观的拖拽样式(拖拽不影响选中 + doAutoScroll)
  5. python如何实时查询oracle_python针对Oracle常见查询操作实例分析
  6. 蛮力法求最大字段和时间复杂度_蛮力法
  7. python基本语言元素是_Python-基本语法元素
  8. DartWeb基础—简单入门
  9. 凝胶成像文件行业调研报告 - 市场现状分析与发展前景预测
  10. 车轮轴承行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)