[AliOS-Things入门] AliOS简介

阿里巴巴开源的这款操作系统,其火热程度简直超过了我的想象!为什么这么说呢,对比 Linux 基金会的 Zephyr 以及华为开源的 LiteOS,发现 AliOS 几天时间内在 GitHub 上获得的 Star 数量就已经把 Zephyr 和 LiteOS 甩在后面了。

当然,这种嵌入式相关的项目,根本没法跟 AI 相比,大公司开源个与 AI 相关的项目,Star 都是刷刷刷刷地上升~

关于 AliOS 的系列博客,请参考 AliOS-Things系列学习笔记-目录

定位

单看 “AliOS” 的话,很多人都在吐槽完全不知道这 OS 是干嘛的,不过还好,”AliOS” 后面加上 “Things”,我们一眼就能明白这个操作系统是用于物联网方向的。

其实现在物联网操作系统已经非常多了,例如 ARM 的 mbedOS、Linux 基金会的 Zephyr、华为的 LiteOS、比较火热的国产操作系统 RT-Thread、经典的物联网操作系统 Contiki 以及市场占有量非常高的 FreeRTOS 等等,阿里为啥还要自己做一个操作系统并将其开源呢?如果非要编理由的话,还是能编出一些:

  • 沉淀自己的技术,不然别人老是说阿里就一电商
  • 完善生态,与阿里云进行对接,搜集数据,然后用于人工智能
  • 回馈开源社区

既然有这么多操作系统,AliOS 具有啥优劣呢?

优势

初步阅读相关文档和源码,发现 AliOS 有好几处让我眼前一亮的地方,这真是大大的惊喜。

支持阿里云

这一点估计应该是开发 AliOS 的初衷之一。提供 MQTT 和 CoAP 示例,可直接连接到阿里物联网套件;集成 ALink 协议,可直接用于阿里小智。

与其它云平台(例如中移动的 OneNET,百度云的 Things 等)不同的是,阿里云的 MQTT 和 CoAP 更安全(因此也复杂很多,需要将云端提供的参数进行解码,且每次运行时解码得到的参数都不同,然后才能获得标准 MQTT/CoAP 所需的参数),所以如果要自己实现的话,难度还挺大的。

还记得一个段子吗,李彦宏说技术创新是 AI 的核心,而马云说数据才是 AI 的核心,估计这也是马云如此重视物联网的原因。

支持 mesh 自组网

物联网物联网,万物互联,怎么能少得了 Mesh 自组网,相信没有几个 RTOS 支持 Mesh,我目前看到的就只有 Contiki 的 Mesh 以及 Zephyr 的蓝牙 Mesh(Zephyr 对蓝牙的支持简直逆天,5.0 标准刚出来它就支持了,Mesh 标准刚发布它也立即支持了),这也是一个很明显的优势。

应用可直接运行在Linux上

多数程序编译完就可以直接在 Linux 上跑,这个设计很高明。AliOS 包含一个内核适配层,既可以适配 AliOS 的内核(rhino),又可以适配 Linux 系统接口,具体适配啥,在编译时由用户自己决定。

这与“AliOS 基于 Linux 内核进行开发”是两个完全不同的概念,因为跑在板子上面的内核只可能是 rhino。事实上在 AliOS 里面你哪只眼睛看到 Linux 内核了?

跨平台

说这是亮点不是因为它跨平台,而是它跨平台做得很完美。虽然很多 RTOS 都跨平台,但是我觉得都是噱头,怎么看怎么别扭,比如 Zephyr 虽然支持 Windows+Linux+Mac 三大平台,但是对 Windows 的支持其实是通过 Linux 模拟器(minGW、mysys等)实现的,LiteOS 虽然也支持 GCC,但是显然 IAR 和 Keil 才是它的菜,而 AliOS 的跨平台,是让你无论在哪个平台上开发,都给人一种这是原生平台的感觉!

强大的 IDE

曾以为 VS Code 这种超轻量级的编辑器只是 Web 的天下,或者通过C/C++插件阅读只有少量源文件的项目,而大型嵌入式就只能选择 IAR/Keil/Eclipse 之流,但是万万没想到 AliOS 通过给 VS Code 开发的插件这么好用。看看这个 IDE 都提供了哪些功能。

  • 基本功能
    • 查找/跳转引用、查找/跳转定义
    • 预览函数、宏、变量
    • 自动补全函数、变量
    • 函数、宏参数提示,支持重载
    • 代码检查
    • 符号搜索
    • git 支持
    • 内置终端
  • 设备管理,可直接连接串口终端,自动识别COM口
  • shell 支持,可直接给运行在板子上的AliOS程序发送shell命令
  • 编译,可自动分析提示需要编译哪个APP,且编译失败时可跳转到编译失败的地方
  • 一键烧写
  • 单步调试
  • Trace

关于 IDE 的具体功能使用说明,请参考 AliOS Things Studio

印象中某个 OS 的 IDE 是 Atom,如此的话,算是借鉴了这点,不过话说 VS Code 比 Atom 轻便很多。

其它

  • 支持多架构,包括 arm、xtensa、csky 等
  • 支持 shell
  • 支持 fota
  • 提供很多demo
  • 未完待续…

劣势

支持的开发板太少

目前仅支持平台/开发板:

  • mk3060,及MicoKit 3060
  • linux 主机
  • b_l475e

当然,AliOS 才刚刚诞生,希望它将来支持的开发板越来越多。看 github 的 issue 列表,当前应该正在支持 atmel avr 系列、atmel sam m3 系列、stm32f103 系列。

文档不完善

AliOS 的入门文档写的非常好,但是除了入门文档,就是一些干瘪瘪的 API 文档了,完全没有介绍内部机制,这一点我觉得可以借鉴 Zephyr OS 或者 mbed OS,甚至 LiteOS 都有单独的文档对内核各模块进行那个介绍。

源码的注释相对比较少,增加了阅读源码(尤其是核心模块)的阅读难度。

此外,文档都是中文的,因此也限制了其发展。

其它

看到有朋友说 AliOS 借鉴了其它一些 OS 的东西,不该使用 uIP 和 FatFs,但是我认为,一个优秀的 OS,就应该吸取其它 OS 的精华并去其糟粕。

番外

随着今后继续深入学习,可能会有其它想法,到时候再修改。如果大家认为有啥没谈到的话,可以留言(仅支持github用户)。