3_3_AliOS Things 操作系统架构|学习笔记

简介: 快速学习3_3_AliOS Things 操作系统架构。

开发者学堂课程【HaaS 物联网应用开发课程3_3_AliOS Things 操作系统架构】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13828


3_3_AliOS Things 操作系统架构

 

内容介绍

一、系统架构图

二、系统能力说明

 

一、系统架构图

本节课程的主题是 AliOS Things 操作系统架构本节课程主要是让大家对 AliOS Things 操作系统的整体架构有一个概念,之后再针对系统能力进行详细的说明。

图片27.png

这是 AliOS Things 一个简单的架构图。从下面来说起,前面有提到 AliOS Things 可以跑在四百多种物联网芯片上,一共是八十多款,每款会调用到多种芯片。从体系结构来说,包括主流的 arm、

mips、 five 等都是支持的,还有这边有一些 AI 的芯片,然后安全专用的芯片以及其他的一些的芯片上都有 AliOS Things  的操作系统,在芯片之上是阿里云自主研发的具有自主知识产权的 rhino 的内核,在内核之上封装了AliOS Things 的 API,包括像 AOS API、HAL API 以及 POST API。

AOS API 主要针对的是操作系统能力的封装,HAL API 主要针对的是硬件功能进行抽象的 API ,这个POST API是常见的  API 的封装,方便基于 POST API 开发的组件或者是应用程序,比如说 AliOS Things 的移植,在 API 层之上是一些 AOS 通用的系统组件,比如说网络功能的组件,作为天生就具有物联网基因的操作系统,AliOS Things 对网络的支持是非常全面的,同时这边还支持亲爱的图形界面系统,后面也会有课程针对图形系统做介绍,稍微复杂的物联网应用开发都会需要用到文件系统,那也是支持丰富的文件系统,包括 fs、kv 分区等等。后面也会有专门的一节一一介绍,同时也支持 VFS ,VFS 虚拟文件系统就可以基本统一应用或者是组建对文件或者对设备节点的操作,从而简化应用程序或者是组件的开发了。

这次之外还支持 TEE ,这是对操作系统安全非常重要的安全加密引擎。在通用系统组之上还有丰富的应用组件,像云端连接的 sdk ,通过 sdk 操作系统可以安全的连接到阿里云物联网平台,使用云平台提供的服务。那如果手机或者是天猫精灵需要去控制物联网设备,其实就需要运行这个组件。

LINK VISION SDK 可以连接到阿里云的 link vision 的平台,如果你想做一个 camera 或者是想做一些图像采集或者视频采集的数据上传到云平台之后进行监控或者是数据处理,就会需要用到 LINK VISION SDK 。

除了连接云平台的功能之外,还有丰富的中间键,比如说 ota,它不仅仅支持整包升级,还支持差分升级,升级过程安全可靠,有了 ota 功能之外,就是设备已经部署到用户的家里或者是生产环境中,也可以远程对它进行升级,同时还有支持智能语音的 uvoice,在做智能音箱的时候就会用到 uvoice 服务。除此之外支持 location 的定位服务,u data 的传感器服务。

AliOS Things 支持一百五十多种传感器,这一百五十多种传感器就是通过传感器管理框架,然后进行管理的。目的就是为了让系统运行的时候能够方便调试,包括在出货之后同样能够看到设备端的日志。这边有一个 u log 的组建,它不光可以对日志进行级别的管理,还可以管理日志的存储。

这边还有一个轻量级的存储和计算引擎,可以做到实时音视频分析以及对数据库实时流的管理,那这样其实只是一个简单的架构图,然后整个系统的架构远远比这张图片表现出来的要复杂,但是从这张图片当中可以看出系统的分层结构是非常清楚的,然后 AliOS Things 基于组件化的思想,很方便大家进行查阅。

如果你想进行网络相关的学习,只需要进到操作系统的component nike work 这个目录下边,网络连接功能的组件绝大部分都集中在这个地方,但如果想针对文件系统的专门的学习,也可以听到操作系统的 components fs 这个目录下面,这样就可以看到支持所有的文件系统的功能。

 

二、系统能力说明

图片26.png

接下来对系统的通用能力做展开介绍,不仅仅支持局域网连接,比如说 Wi-Fi、蓝牙、BLE,mesh、以太网、ZigBee等。支持广域网连接,比如说 NB-IoT、LoRa、2G/3G/4G 等,这样不管是在家里等固定的场所还是在移动端的场景需求,AliOS Things 都是可以满足的。比如说经常听说的 http/https、MQTT、CoAP、LwM2M 等常用物联网协议,AliOS Things 也是支持的。

常见的物联网应场景对网络协议的需求应该已经能做到全覆盖了。如果你做过 Linux 的网络开发,那应该知道 Linux 系统提供了非常丰富的网络调试手段,那在遇到网络相关的问题的时候,可以对它进行诊断。那 AliOS Things 同样做了很多网络调试的工具,比如说 ping/iperf/ifconfig/pktprint 等。

之外也提供了网络管理框架,可以对上面的这些网络写进进行管理,可以对 Wi-Fi,广域,有线等网络进行管理,实现高效共存支持 Mesh 组网支持,针对蓝牙和Wi-Fi均适用。在文件系统方面,支持标准 POSIX 文件/目录操作接口支持,方便应用移植,也具有丰富的存储介质支持(NOR/NAND/SD卡/eMMC),在设备访问控制层,适用众多场景完善的掉电保护、坏块管理、磨损平衡、垃圾回收机制,最大限度保护用户的数据或者说存储介质的安全。在文件系统这层,支持 littlefs 、fatfs、 ramfs 等等。

和其他的互联网操作系统相比是非常有优势的,文件系统是挂在 VFS 之上的,这样就非常方便应用层通过 POSIX 的接口对文件系统提供的服务进行访问,对于文件系统性能方面的性能调优,实现 NAND 上读写 KB 至 MB 级别文件速率3-4MB/s,在文件系统的相关组件都是基于 HAL 编写驱动,这样的可移植性强,除此之外还提供了丰富的工具支持(镜像制作、镜像 dump 分析、运行调试、性能测试)。

其实 POSIX API 实际上是 API 的集合,Linux 系统在20世纪90年代就已经支持了 POSIX ,自从那时候开始,Linux 应用程序的可移植性上了一个很大的台阶,AliOS Things 支持的目的之一就是为了尽量兼容 Unix或 Linux 软件生态,然后方便 POSIX API 的移植,另一方面也是朝着标准化和应用性的方向进行发展, POSIX API 本身就是由 IEEE 和 iso 国际标准化组织定义的,对于每一个 API 的数据参数、输出参数以及每个 API 的数据结构所包含的头文件以及 API 的行为都进行了详细的定义,在应用性方面,POSIX API 是已经被 Unix 或 Linux unix 系统广泛的使用和验证了,也为广大的开发者所熟悉。每个 API 都有标准的文档说明,非常方便开发者使用。

图片25.png

举个例子来说,业界首款的音箱就是基于 AliOS Things 进行开发的,这款音箱跟 Linux 结构的音箱相比,然后它的flash 跟 RAM 占用量降低了百分之五十,系统的启动时间也缩短了百分之五十以上。再举一个例子,一款从 Linux 系统切到 AliOS Things 系统的智能摄像头,它的系统启动时间从6秒降到500毫秒以下,然后同时也降低了系统功耗,电池的待机时间也大幅提升,至少是提升30%以上。

端云一体化的 OTA 升级支持,主要有高安全保障、自然差分升级以及场景支持丰富这几个方面。在高安全保障这方面,主要体现在对固件进行了数字签名,防止固件被篡改,然后升级的通道是经过加密的,然后支持断电保护以及断电续传,这样就可以防止固件在升级通道上被截获了,即使断网也不会出现丢失,因为独创的乒乓升级自动回滚机制在如果升级失败的情况出现以后,可以快速还原到升级之前的一个固件,然后保证系统呃不会因为升级导致不可恢复的问题,同时还对 OTA 的功能进行全方面的压测,以保证 OTA 升级的可靠性,升级成功率在99.7%以上。

AliOS Things 还自主研发了差分升级体系,差分升级的机制可以显著地节省 OTA下载耗费的流量,对于蓝牙等低宽带场景的福音。支持的场景也是非常丰富的,对于能直接连到互联网的WiFi、2G,3G 的芯片都可以直接对它进行升级,然后也支持复杂组合芯片的升级,比如说通过模组对 MCU 进行升级,通过网关对网关下面的子设备进行升级,通过手机对蓝牙设备升级等等,这些场景都是支持的。

AliOS Things 操作系统也继承了AI框架,在智能语音类的应用中,端上不仅可以运行本地的唤醒算法,也可以使用云端的识别服务,那在这种智能仪表识别方面,运行 AliOS Things 的 WiFi soc,然后它的识别速度可以在300毫秒每次,然后准确率高达98%,然后对 RAM 的占用量也是非常小的。右边这张图是 AI 框架的一个整体结构图,训练模型运行在阿里云平台,云端支持非常多的模型,像这种语音识别模型,图像识别、运动检测模型等等,它们都是支持的。

模型在云端训练完成之后,通过 PTA 的功能把它下发到设备端,通过设备端的 AI 框架进行运行,同时设备端的 AI 数据又可以经过网络上传到云端对模型进行优化,然后将优化后的模型在 OTA 升级到设备端,然后形成一个完整的一个闭环。

前面有提到说 AliOS Things 是基于一切皆组建的思想进行设计和开发的,除了文件系统、系统信息、电源管理等这些基本的系统组件之外,然后支持非常多的像这种外设等等,还有刚刚有提到的非常多的网络协议,这些都是支持的,除了这些基础组件之外,然后我们也支持了非常多的高级组件,可以通过优惠的组件使用支付宝的支付服务,然后 us组件可以使用像智能语音组件,这个智能语音组件包含 GPS、播放网络音乐等等,还有前面提到的传感器服务的管理组件、定位服务组件等等。

然后那开发者可以使用 AliOS Things 提供的组件管理工具,对这些组件进行下载或者是在线使用,或者是给开发者贡献的应用组件到本地的开发环境中,快速补齐自己应用场景有需求组建的能力,通过这样的方式来加速设备端的开发。那当然开发者可以使用 AliOS Things 构建工具 create 创建自己的算法组件或者是外设组件,这样就会实现高效的复用甚至是实现商业输出,然后也是非常欢迎开发者能够将自己开发的新功能贡献给 AliOS Things ,后面会有一个专门的章节来介绍如何贡献 patch 给 AliOS Things ,有专门的同学对开发者贡献的 patch 进行 review ,然后跟开发者沟通看怎么样能尽快将开发者提供的一些组建弄到操作系统的源代码里面去。对于一个操作系统来说除了提供丰富的功能之外,还需要给开发者提供配套的使用工具,来简化开发者的开发和调试的过程,然后提供更便利的操作系统服务,那 aos- cube 就是 AliOS Things 提供的构建系统,包括代码下载、组建或者共同的创建工程的安装、编译等等。

都是使用 aos- cube 工具的,后面会有一个专门的章节针对 aos- cube 进行详细的介绍,因为 aos- cube 是一个命令行的方式,那除了命令行的方式还提供常见的经常用的q或者r上边进行 AliOS Things 的开发,然后还提供了基于VS code d 的20s studio 图形化的 IDE 插件,然后通过这套集成开发环境可以完成构建的下载调试等非常实用的功能,也给开发者提供了拖拽式的服务来对 AliOS Things 的组件进行选择和裁剪,然后也是非常方便。这边对于尝试 ALIOS 系统的开发者来说,其实调试功能的欠缺往往会把很多开发者挡在门外,所以 AliOS Things 提供了异常分析工具,可以快速的回溯系统异常发生的原因,可以精确到问题代码的行数,然后方便开发者遇到问题之后的分析。

图片24.png

那下边一点是开发维测工具,除了上面几个功能之外,然后 AliOS Things 提供了强大的维测工具,比如说在出现问题的时候,由 os 接管 CPU 的异常向量,对各种问题进行统一的处理,同时也提供给用户自定义异常入口的选择,系统快照的功能是指在系统出现问题的时候,不仅会打印丰富的现场信息,包括占信息、计算器信息、各任务的内存分配以及整个系统的内存消耗等详细情况都会打印出来。然后还有强大的栈回溯功能,那 PC 端的解析工具也可以帮助自动化的解析日志,然后并且提供精确导航号的这种分析报告。然后这边的 CLI 自查机制是指一般操作系统在死机之后就会彻底的卡死了,不会再想要任何用户的输入,但是在 AliOS Things 上边系统死机之后, CLI 组件会接管整个串口,即使系统死机之后还是可以通过 CLI 组件提供的交互界面给开发者,这样就可以通过 OS 自带的很多调试功能进行调试,加速问题分析和解决的过程。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
18天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
52 0
|
4月前
|
Java Docker 容器
美团大牛精心整理SpringBoot学习笔记,从Web入门到系统架构
近期慢慢复工,为了准备面试,各路码友们都开始磨拳擦脚,背面试题、知识点。小编最近得一良友赠送了一份关于SpringBoot的学习笔记,简直不要好用,理论解析言简意赅,每一步操作都有图片展示。这么好的东西肯定不能私藏,为了感谢大家在2019年里的支持,我现在将这份笔记赠送给大家,祝大家前程似锦,Offer不断!
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
101 0
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
65 1
|
1月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
785 0
|
1月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
39 1
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
42 0
|
1月前
|
负载均衡 算法 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
25 0
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
44 1