AliOSThings 物联网开发入门|学习笔记

简介: 快速学习 AliOSThings 物联网开发入门

开发者学堂课程【AliOS Things 物联网开发教程AliOSThings 物联网开发入门】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/835/detail/13989


AliOS Things 物联网开发入门  


内容介绍:

一、物联网操作系统(IoT操作系统)

二、AliOS Things


今天主要学习AliOS Things物联网开发的第一课——物联网开发入门,即阿里巴AliOS Things物联网开发的一些基础知识,本节课的主要内容的分为三个部分以下三部分:第一部分,物联网操作系统(IoT操作系统)的发展状况及技术特征;第二部分,阿里巴巴AliOS Things这款物联网操作系统的系统架构、开发工具和技术特性等一系列相关知识;第三部分,举一个商业案例介绍一下AliOS Things如何落地,以及如何支撑商业方案。  


一、物联网操作系统(IoT 操作系统)

本部分内容主要包括IoT操作系统的发展概述、技术特征、通用架构及典型实现四大部分组成。  

1、IoT 操作系统的发展概

如下图所示:

image.png

可以看到,IoT操作系统是由基础的RTOS到pc端的Linux、windows,以及到移动端的安卓慢慢演变过来的。  

2、IoT 操作系统的技术特征

为什么需要面向物联网场景的、单独的操作系统呢?其实是由它的技术特性来决定的。如下图:

image.png

物联网场景往往需要的是一些资源受限的终端设备,它的计算能力同样受限,并且对整个设备的连接能力要求非常高,此外,它还希望能够与其他的设备进行互联互通,能够去调用云端的服务等一系列要求。  

因此,整个 IoT 物联网操作系统应具备的特征主要包括以下几个方面:

(1)要有管理“物”的能力

“物”指的是物联网边缘设备,而边缘设备的节点通常要具备嵌入式的、实时的、低功耗的样设备的需求。

(2)要具备广泛的通信能力

这是实现万物互联必须具备的一点,无论是近场通信还是远距离的通信都需要有各种通信协议的支撑,那么如何实现各种协议的支撑则离不开我们物联网操作系统。因为物联网操作系统较原先的单任务系统,可以提供更丰富的开发的能力,以适应物联网样技术特性的要求。

(3)IoT 设备的可维护性

终端设备的固件烧录之后,若有新的迭代的需求,或有一些问题需要修复,还需要具备升级的功能,远程升级的功能可以通过云端服务进行在线升级。 IoT安全 系统需要预防恶意的攻击和篡改设备的固件以保证设备端的安全,因此,系统需要有一些安全协议。

(4)IoT 云平台

系统需要物联网的云平台管理远端设备,这些设备节点可以支撑整个IoT应用的场景,最后达到互联互通的需要。  

3、IoT 操作系统的通用架构

通用架构不仅适用于物联网操作系统,对于 AliOSThings 和 PC 端设备同样适用,只是 PC 端或移动端的设备层次更多,更为复杂。

对于物联网操作系统,由于其资源受限,可以简单地将整个的系统架构分为三个层次:

image.png

(1)硬件

基于物联网应用的特性,它主要是一些传感器、微控制器及网络,这是三大硬件特征。

(2)IoT操作系统

①硬件适配层

在硬件基础之上,它要求操作系统具有硬件的适配能力。对于整个嵌入式的终端,其异购性很强,包括整个版机厂商非常多,多样化很强,因此,操作系统必须具备适应性非常好的硬件适配层以支撑底层硬件的多样化。

②操作系统内核

操作系统在具备了硬件适配能力之后,还需要有内部资源管理的能力,即操作系统内核。它可以随意地调度处理器的资源,包括内存资源。这些都是由操作系统内核完成的。

③服务层

除了以上基础能力之外,应用需要依赖于服务层与云端通信,而服务层可以提供众多的连接协议的能力,为应用层提供更丰富的支撑,使其更薄、更易开发。

④应用层

在具备服务层之后,应用层就可以在服务层之上进行开发,在开发完成之后即可以与云端服务进行互动。

(3)云

数据上传、下载及 OTA 都是基于云端服务层实现的。 为了使物联网操作系统的开发更便捷、更易上手,系统还提供了操作系统需要的配套开发工具来屏蔽底层的复杂的场景化及跟意见相关的选择。

4、IoT 操作系统的典型实现

在通用架构的技术基础之上,目前物联网操作系统多种多样,有很多的厂商已经实现了很多适应于物联网操作系统的具体的实践。如,华为的 LiteOS、亚马逊的基于FreeRTOS 进行的扩展、我国较为主流的、应用较广的 RT-Thread,及阿里云推出的轻量级的 IoT 操作系统 AliOS Things 等。

image.png

(1)授权方式

在众多的物联网终端设备中,这些操作系统采用的都是开源的方式,只是授权的方法有所差异。AliOS Things 主要采用的授权方式是 APACHE。

(2)支持架构

目前 AliOS Things 支持的架构是 ARM,ARM 的支持已经在3.3版本中开源,RISC-V 也将陆续地开源。

(3)编程语言

从编程语言上看,除了原生的支持 C/C++ 的开发之外,还扩展了轻应用(JS 和Python)语言的开发的支持。

(4)集成开发环境(IDE)

IDE 主要是基于 GTC 进行编译。

(5)编译模型

编程模型采用多任务的方式。操作系统一般有两种典型的编译模型,即事件驱动型和多任务方式。采用多任务方式是为了方便开发者能够更大化地、多样化地实现自己的应用。

(6)无线连接

对于基本上通用的 wifi、蓝牙的基础的无线通信协议均支持,此外,MQTT 及 HTTP 这些更为上层的协议也为用户提供更便捷的连云功能。

(7)安全

从安全的角度考虑,AliOS Things 提供了 TLS 和 DTLS 两种安全协议。

(8)OTA

AliOS Things 支持应用升级及多并升级。 中间件 AliOS Things 具有文件系统相关的中间件、网络协议站,以及与 AI 音视频能力相关的组件。 人际交互(CLI) AliOS Things 推出了 AOS CLI,可以方便用户通过 CLI 的命令查看系统状况,更方便开发者进行开发。


二、AliOS Things

1、AliOS Things 系统概述

(1)AliOS Things 发展历程

AliOS Things从2017年首次开源,其基础是轻量级的 RTOS 系统特性;在发展到3.0版本之后,开始支持双态、多核,发展到3.1版本时就引入了 POSIX 支持,并且更丰富了连接组件;到最后发展到3.3版本之后则引入了轻应用开发的支持,轻应用开发目前支持两种解析语言,即 Python 和 Java Script,且对开发工具也进行了增强,目前推出了三合一开发工具,即同时支持 Native C、轻应用开发及集成开发环境 Haas Studio。

(2)AliOS Things 开源项目 AliOS Things 3.3版本目前在 Gitee、Github 和 Code China 都有相应的开源项目,开发工具和进行开发环境获取代码的默认的方式是从Gitee 获取。Gitee 采用的是一种多框、多仓库的管理方式,可以更大限度地提高组建代码的效率。而 Github 和 Code China 中的代码则是以单仓库的方式进行管理,可以方便用户浏览整个操作系统代码的全貌。以下是各个代码仓库的地址: Gitee:https://gitee.com/alios-things

Github:https://github.com/alibaba/AliOS-Things  

Code China:https://codechina.csdn.net/alios-things/Alios-Things

开发者也可以在 Gitee 贡献代码,网站有相应的提交入口。 AliOS Things 系统架构 AliOS Things 主要采用的是自底向上的分层设计,它是在沿用了我们前面提到物联网操作系统的通用架构之上,进行了丰富和细化:其具体的分层设计如下图所示:

image.png

(1)硬件

AliOS Things 目前支持的硬件有 HaaS 100、HaaS EDU 和 HaaS 200 系列,这些硬件类型都是根据不同的应用场景打造的。

(2)操作系统内核

在硬件之上的操作系统内核,除了具备基础的内核的能力,包括任务管理、内存管理,中断管理、时钟管理及基础的调试能力之外,海具备驱动的框架、驱动的子系统以及对cpu架构的支持。

(3)组件层

操作系统内核之上是组件层,也就是之前通用框架里提到的系统服务层。它主要提供与连接能力相关的一些组件(如网络组件、蓝牙组件)、与云端进行交互的相关组件(如 OTA 和云存储)以及 Haas UI 及轻应用框架。

(4)应用层

它是调用操作系统提供的组建和内核来进行业务逻辑的开发,在具体场景下可以进行具体产品的打造。应用层除了向下调用操作系统的自身能力之外,还可以请求云端服务,如人脸识别、支付等,多种接口都可以从云端获取,进而丰富物联网应用,加强互联互通。

3、 AliOS Things 系统特性

(1)硬件支持

image.png

目前有 Haas 100、Haas 200和 Haas EDU。

Haas100主要采用双核的 cotizem33 和双核的 cotus17 组成的硬件模块,主要是为了适用于物联网网关和远程的扬声器音箱所打造的通用款的开发版。 Haas 200 主要针对智能家居、智能园区所达到了一款轻氢量化的意见模块。 Haas EDU 是根据学习和物联网开发的需要产生的,它在具有精美的外壳的同时,也具备众多的调试能力和外扩能力,开发者可以基于自己的需要去外接扩展更多的传感器和模块,进行产品的打造。

(2)弹性内核

目前将内核由内而外分为几个层次: 最中间的一层是操作系统的核心,即任务管理、调度器和中断管理,是操作系统的基础,在核心组件的基础上,系统中的基础的任务就可以运行起来,去执行相应的代码片段。调度器目前支持三种调度方式,即优先级抢占调度、时间片轮转和非实时的完全公平调度。

image.png

为了加强任务间的通信互斥访问资源的能力,又提供了多种方式供用户根据自己的需要来选择,如互斥量、信号量和事件来做任务间的同步,提供消息队列机制实现任务间消息的数据传输。除此之外,还提供内存管理(内存管理是给用户提供的一种动态分配内存的能力)、为时间、TICK 提供相应的管理模式。

在操球内核的这些基础能力之上,最外层还提供了一些系统维护的些功能。

如异常处理系统监控、CLI 人机交互及 VFS 对接 POSIX,让操作系统更加兼容的话。

(3)驱动框架

可以向驱动层进行适配,目前的驱动支持两种方式来适配,即可支持 HAL 及驱动子系统的方式来供不同厂商适配到 AliOS Things 操作系统之上。 对上提供标准 C 库的 POSIX 接口 aos_open/aos_read/aos_write 来访问底层硬件,以减少应用与底层的耦合性。

image.png

(4)操作系统内部及上层提供的系统服务 如,对于多媒体的应用场景,要进行 IP camera,在其之上则需要一些多媒体功能,如音视频的采集、传输,那么就需要操作系统提供多媒体功能相关的组件可以将视频、旅游传上云端,云端做相应的解析并将结果返回设备端。  再如,对于定位场景、传感器的场景,此时需要有一些定位、温湿度,包括运动传感器运动信息的感知。此外,还有一些基础功能,如连接功能、文件系统、对于外设的支持,这些基础的能力可以为传感器和多媒体等能够更丰富应用案例的支撑。

image.png

有了系统服务能力之后,即可进行应用的打造。  

(5)应用开发

应用要包括 Native C 的应用和轻应用,这里着重介绍轻应用。轻应用目前是采用的框架包括基础的 API 层和快速编程的 API 层,基础的 API 层主要是对系统的基础能力传感器、硬件等基础的硬件的支持(如 UART、I2C、SPI 等),还有一些扩展的接口,如 BT、WIFI 等。为了方便用户能够快速进行开发,也将云的连接 AI 和多媒体进行封装以供用户调用。

image.png

同时,为了方便用户进行轻应用开发,也推出了相应的 IDE。IDE 也是基础的功能,如工程管理、代码编辑、调试、应用发布,开发环境都有很好的支撑。

有了开发环境和应用层的框架之后,即可打造轻应用案例,如人脸识别、语音播报、传感器驱动等等,进行应用开发。目前 AliOS Things 仍不支持 esp8266 和esp32,如果有相应需要,可以联系老师联系技术服务群进行解决。

(6)云端服务

借助阿里云平台,提供了丰富的云端服务。如,提供了对接支付宝的支付能力、云端一体的与钉钉的协同能力、达摩院提供的 AI 能力、对音视频模式识别的支撑能力、物流行业对地图的支持能力等云服务供大家进行选择。

4、AliOS Things 开发工具

以上内容是对操作系统的一些基础的框架和技术的介绍,下面将对操作系统配套的开发工具Haas Studio进行简单浏览。

image.png

以上是 Haas Studio 的开发界面,目前支持 C++ 开发、JavaScript 轻应用开发及Python 轻应用开发,用户可以在可视化界面中创建工程、打开工程,以及查看帮助文档、解决方案等。这些功能都可以在集成的开发环境中进行开发、编译、烧录打造应用。目前 Hass 服务的开源的代码支持连接阿里云,需要通过连接阿里云进行开发,后续也会对其他云服务支持。  

5、AliOS Things 说明文档

说明文档是整个操作系统的入口,是用户了解和快速获得操作系统信息的窗口,因此说明文档进行了丰富和重新的整编,将整个组件和开发案例都一一的进行分单元、分模块的样介绍,包括对内核也进行了详细的编程的讲解,以求能够给用户带来更多的帮助,使其能够快速的开发应用。今天的课程中对于说明文档只列出了一部分,在轻应用的开发等课程中会具体学习这些说明文档,让用户就入口就能够获得所有的信息。此外,说明文档也是开源的,用户可以进行完善和修正。

6、AliOS Things开发者服务

目前,阿里云的 Haas 官网和 Haas 技术社区即 Gitee issue 板块专门开设了 FAQ 仓库来供大家提交问题,阿里云会在24小时内进行回复。

对于语言的选择主要根据程序员的编程习惯,作为软件开发者,嵌入式基本以 C 为主流语言,而其他对JS和Python 较为熟悉的开发者也可以用 JS 和 Python 开发,可以降低嵌入式物联网开发的门槛,吸引更多的开发者加入到物联网开发的大军中。

此外,三者也有略微区别,如 JS 是单任务型的,相当于整个系统只能有一个任务,不支持多任务的并发;对于 C 语言,目前 C 语言在阿里云采用多任务的编程模型,支持多任务开发的。各类语言各有优缺点,供大家根据不同的场景需要来进行选择。

Micro Python 较方便,上手快,阿里云也基于 Micro Python 封装 Python 的接口,来跟操作系统进行联合,方便用户来调用操作系统提供的能力。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
24天前
|
消息中间件 网络协议 物联网
如何入门做物联网系统压测?
【4月更文挑战第18天】物联网系统在架构、网络模式、通信协议等方面与传统的互联网系统有所区别。因此,传统的性能测试方法不能直接套用到物联网系统中。
100 13
如何入门做物联网系统压测?
|
2天前
|
算法 物联网 数据库
Python 物联网入门指南(一)(4)
Python 物联网入门指南(一)
15 3
|
2天前
|
物联网 Linux 网络安全
Python 物联网入门指南(一)(3)
Python 物联网入门指南(一)
15 4
|
2天前
|
网络协议 物联网 Linux
Python 物联网入门指南(一)(2)
Python 物联网入门指南(一)
10 1
|
2天前
|
物联网 机器人 异构计算
Python 物联网入门指南(一)(1)
Python 物联网入门指南(一)
14 2
|
9月前
|
传感器 物联网 数据处理
【Python入门系列】第二十一篇:Python物联网和传感器应用
物联网和传感器在现代科技中扮演着重要的角色。物联网是指通过互联网连接各种设备和传感器,实现设备之间的通信和数据交换。传感器则是物联网的核心组成部分,用于感知和采集环境中的各种数据。在这篇文章中,我们将探讨使用Python开发物联网和传感器应用的主题。
408 0
|
12月前
|
数据采集 监控 并行计算
【工业物联网基础】工控安全入门分析
【工业物联网基础】工控安全入门分析
|
JSON 物联网 数据格式
阿里云物联网平台入门-云产品流转
上篇文章介绍了物联网平台上设备消息的上传,除了这种情况之外,不通设备间的数据也需要进行交互,此片文章参考官方文档介绍下云产品流转
1312 0
阿里云物联网平台入门-云产品流转
|
消息中间件 物联网 API
阿里云物联网平台入门-设备消息上传
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。此篇文章按照官方入门实例操作下设备消息的上传
770 0
阿里云物联网平台入门-设备消息上传
|
存储 消息中间件 安全
MQTT物联网通讯协议入门及Demo实现
MQTT物联网通讯协议入门及Demo实现

相关产品

  • 物联网平台