开发者学堂课程【阿里云 AIoT 物联网开发实战:AliOS Things 技术分享】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/754/detail/13233
AliOS Things 技术分享
一、目录
二、嵌入式操作系统的发展历史
三、嵌入式操作系统带来了什么?
四、AliOS Things 发展历史
五、AliOS Things 系统架构图
六、AliOS Things 面向的设备
七、统一硬件抽象
八、完善的网络支持
九、统一网络适配层
十、完整的云平台连接适配
十一、文件系统支持
十二、POSIX 标准支持
十三、端云一体 OTA 升级支持
十四、AI 框架
十五、AliOS Things 组件
十六、远程运维工具
十七、开发维测工具
十八、ALiOS Things 适配的芯片
十九、AliOS Things 的工具
十九、如何使用 AliOS Things 帮助设备快速上云
二十、开发者社区
一、目录
01为什么需要嵌入式操作系统
02物联网操作系统 liOS Things 介绍
03使用 AliOs Things 帮助设备快速上云
04 Alios Things 开发者社区
二、嵌入式操作系统的发展历史
1.以功能简单的专用计算机或单片机为核心的可编程控制器
主要是在上世纪七八十年代,主要是一些8位机或者16位机,那时候还没有操作系统的概念,无操作系统的嵌入算法阶段,通过汇编语言编程对系统进行直接控制(主要是流程上的控制),运行结束后清除内存
2.以嵌入式CPU和嵌入式操作系统为标志;高可靠、低功耗的嵌入式 CPU
随着应用场景的复杂,以及嵌入式 CPU 的发展,产生了高可靠,低功耗的嵌入式CPU,这时候的操作系统相对比较简单,首先,功能上面比较简单,其次以嵌入式CPU 为基础、简单操作系统为核心的嵌入式系统,具有一定的兼容性和扩展性,用户界面不够友好﹔系统主要用来控制系统负载以及监控应用程序运行
3.芯片技术和物联网技术相结合为标志的嵌入式系统
到了二十一世纪随着物联网的发展,互联网技术蓬勃兴起,还有芯片技术的不断发展,芯片技术和物联网技术相结合,推向了新时期物联网操作系统。有了一些特别的标准,内核精小、效率高,具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口 API;嵌入式应用软件丰富。
三、嵌入式操作系统带来了什么?
1.硬件资源管理
多核 CPU 已被广泛应用,需要操作系统协调调度
应用越来越复杂,硬件抢占调度需要 OS 协调
2.提升开发效率
降低开发难度,直接使用系统 API,即可完成系统资源的申请、多任务的配合,以及任务间的通信等
提供丰富组件资源,拿之即用
3.易维护和管理
更清断的代码结构,功能块按任务组织,逻辑更清晰代码更易读,更易于后期的维护和管理
交互更便捷,不同任务之间通过操作系统进行同步和数据交互
4.可移植性高
更高的可移植性,对接不同芯片的工作由操作系统完成,应用开发者只需要关注 OS 层接口
标准的 HAL 接口和 API 接口兼容业界生态
操作系统其实是对硬件资源的管理,如果不用操作系统的话,比如多任务的应用,很难想象一个单任务的应用,能把 CPU 的资源完全利用起来,只有多任务的操作系统基于这种实时调度,才能最大限度利用一些资源,把硬件资源充分发挥。目前,这种多核 CPU 也被广泛应用,更需要操作系统去协调调度。
第二就是提升开发效率,降低开发难度。嵌入式操作系统使用适用于多任务情况,在每个任务上面,只要各个任务执行自己的能力就可以了,不需要多个任务挤在同一个线程上面,所以降低了整个任务的开发难度,操作系统提供了丰富的 api。
第三,就是易于开发和维护,所有的功能模块,是按照任务来组织的,每个任务相对逻辑比较清晰,代码也比较简单,更易于后期的开发和维护,任务之间的交互比较便捷,不同任务直接通过操作系统进行同步和数据交互
第四点就是可移植性高,因为嵌入式操作系统,情况比较多,发展迭代速度比较快,应用可能过几年就要在新的系统上面,去进行移植,所以对移植性要求特别高,操作系统对底层的 hal 起到一个封装,Api 接口也是相对比较标准,可以兼容业界生态,屏蔽不同硬件带来的影响,所以可移植性就相对比较高。以上是嵌入式操作系统带来的一些优势。
四、AliOS Things 发展历史
1.V1.1.0(2017/11)
●rhino 内核
●loT 协议(SDS,MQTT,CoAP)
●KV 存储系统
●uMesh 协议栈
●TEE 安全组件
2.V1.3.3(2018/8)
●支持 yaffs2文件 系统
●BLE,LoRaWAN 协议栈
●更多 IoT 芯片支持
●Keil,IAR 支持
3.V2.2.0(2019/2)
● 增加 uData,ul ocation 组件
●OTA 差分升级
●电源管理功能
●RISC-V 支持
4.V3.0.0(2019/9)
●JS 引擎支持,增加 GUI 模块
●增加uAI框架,支持 DNN,CNN 等模型 BT mesh 协议栈支持
●LwM2M 支持
●RISC-V 支持
5.V3.1.0(2020/4)
●APP 开发框架
●增加组件安装、卸载、查询
●增加 RTP/HTTPDNS 支持
●增加 IoT 本地通信能力
6.V4.0.0(2020/9)
在2017年11月发布了1.1版本,在 data HUB 上面去开源,全部用了,全模式自主可控的,知识产权,整个内核也是重新编写的,加了很多组件,包括群组的,包括网络的,还有一些安全组件。
最近一个版本是2020年四月份发布的3.1,2020年九月份发布4.0版本。
五、AliOS Things 系统架构图
以上是 ALIOS 系统架构图,最下面是硬件,包括主流物联网芯片,ALIos 支持一些主流的 CPU 架构,主流的物联网芯片包括了80多款,在上面就是自研实时操作系统内核 Rhino,在上面是统一稳定的系统和硬件抽象层,兼容了API接口,上面是一些 AOS 通用组件,包括网络组件比如 twip、ble、lora、uMesh、NB-IoT,还有轻量级图形用户界面 GUI,以及文件系统、VFS 和 TEE,最上面是一些应用组件,包括和阿里云平台连接的 linkit sdk,以及和 LV 平台连接的 link vision,还有一些一方增值中间件,比如 ota 升级、智能语音 uVoice、定位框架 uLocation、传感器管理框架 UDATE 和日志存储 uLog。除此之外,还有一个轻量级计算引擎,包括实时流计算,轻量级的 AI SDK,始于经典,面向 IoT。
六、AliOS Things 面向的设备
比如家庭用的 camera、家庭冰箱、洗衣机、智能插座,工业上面的机械手臂或者一些面板,这些设备都有共同的特点
功能需求相对明确
硬件资源有限
运行稳定性要求高
启动时间及实时性要求较高
ALIOS 面向家庭、工业、智能园区,农业各种场景。
七、统一硬件抽象
AliOS 提供了统一硬件抽象,有12大类常用的硬件抽象,包括经常用的 gpio,UART、SPI、I2C以及 FLASH 等等。通用硬件抽象层下面的板卡是不一样的,但是硬件抽象层是一样,硬件的函数都是一样的,这样就很方便应用开发各种板卡上面,不用修改代码直接拿去就用,极大方便了可移植性。
八、完善的网络支持
●支持局域网连接: WiFi、 蓝牙、以太网、ZigBee 等
●支持广域网连接: NB-IoT、 LoRa、 2G/3G/4G等
●支持网络协议栈: HTTP/s、 MQTT、CoAP、 LwM2M 等常用物联网协议
●兼容 IPv4/IPv6
●支持各种网络 Debug 工具,如 ping/iperf/ifconfig/pktprint 等
●提供网络管理框架,可以对 wifi,广域,有线等网络进行管理,实现高效共存
● 支持 Mesh 组网支持,针对蓝牙和 WiFi 均适用
九、统一网络适配层
●将 AT 或其他外扩通信模组快速抽象为 socket 及 mqtt 操作,便于复用其他网络组件.
●提供模组驱动框架生成工具,不再从”0"开始。
●配置化选择驱动使用。驱动调用仅需传入对应串口或 SPI 口。
市面上有很多通信模组,上面是 APP,下面是 socket adapter layer,这是一个 sal框架,对于 APP 来讲,他看到的就是标准的 socket 接口,Sal 层把下面的硬件,比如外面带的是2g 的模块,或者是一个 WIFI 模块,都可以把硬件就屏蔽掉了,因为总看到的就是标准的 socket 接口,这样方便用户进行开发。
有一些通信模组不仅仅提供 socket 功能,他可能还提供一些高级的 mqtt 功能,同样做了一个 m QT t 的适配层,APP 正面主要是直接调用 mqtt 接口,通过 mal 层,把 mqtt 以及通信协议的细节,都给屏蔽掉了,这非常方便开发。
之前有客户原来用 WIFI,使用阿里云开发的设备,后面因为要移到户外,所以使用了 2g 模块,只使用了一天的时间就对上了,换了一个二级模块,整个产品就完成了,就是基于这功能。