AliOS Things 3.3 轻松上手实践典籍
AliOS Things 3.3版本于2021年4月23日正式发布开源,项目地址:
- Gitee: https://gitee.com/alios-things
- Github: https://github.com/alibaba/AliOS-Things
- Code China: https://codechina.csdn.net/alios-things/AliOS-Things
本次发布包含的新特性有:
- 升级AliOS Things操作系统功能 新增内核对象管理功能、优化驱动框架和AOS内核接口、增强调试能力。
- 增加轻应用开发框架 支持JavaScript和Python两种语言开发AliOS Things应用。
- 增强AliOS Things操作系统配套的开发工具 开发环境支持界面化应用开发、升级构建工具和资源配置方式、自研在线分析工具。SmartTraceV1.4发布以及增加对通用分析工具SystemView的支持。
- 更新AliOS Things操作系统及配套开发工具的说明文档 提供更详尽,更易读的中文文档。 文档与操作系统源代码同时开源,开放与开发者的共建文档资源库的窗口。
- 扩充AliOS Things操作系统开发者生态 推出CSDN和微信技术社区、钉钉群以及HaaS百事通等通道,全方位的服务开发者。
我们会继续秉持全面开源的思想,不断把新开发出来的组件和案例,快速的贡献到开源社区,请大家持续关注。
AliOS Things 3.3 开源仓库
AliOS Things 3.3版本分别在Gitee、Github、Code China开源,分支均为rel_3.3.0。用户贡献代码可在Gitee上提交申请,AliOS Things开发工具默认是从Gitee下载源码。Github、Code China主要是方便用户浏览所有开源代码。
Gitee
AliOS Things 3.3版本在Gitee平台上,每个功能模块分配一个独立的仓库。概览页面的精选区域目前是放置着常用的案例仓库和通用文档仓库,如简单示例工程helloworld_demo、通用文档仓库documentation等,如下图。
若用户想查看或搜索其他组件或案例仓库,可以点击上图选项栏中的“仓库”切换到“仓库”页,如下图。在搜索栏中输入目标组件或案例的名称,确认后即可显示搜索结果。
打开目标组件或案例的仓库,切换代码分支为rel_3.3.0,即可查看到该组件或案例3.3版本对应的源代码,如下图。
Github
AliOS Things 3.3版本在Github平台上,所有功能模块共用一个仓库。用户可以通过登录本项目在Github上的地址,并切换代码分支为rel_3.3.0,即可查看到AliOS Things 3.3 版本所有开源代码,如下图。
Code China
AliOS Things 3.3版本在Code China平台上,所有功能模块共用一个仓库。用户可以通过登录本项目在Code China上的地址,并切换代码分支为rel_3.3.0,即可查看到AliOS Things 3.3 版本所有开源代码,如下图。
AliOS Things 3.3 系统概述
系统架构
AliOS Things 3.3版本系统架构如下图:
- 硬件支持HaaS生态的HaaS100系列、HaaS EDU系列、HaaS200系列开发板;CPU架构支持ARM;内核提供调度、任务管理、内存管理等基础功能;组件层提供支持Native应用开发和HaaS轻应用开发的多种功能组件;系统增强了设备端应用与云服务的交互能力。
- 为了降低物联网开发的门槛,我们提供了轻应用的开发框架:提供支撑轻应用运行所需的全套基础设施,是一套集成了包括硬件抽象、网络接口、物联网组件、运行时引擎、对象封装等功能的应用软件框架。
- 为提高开发者基于AliOS Things进行应用开发的效率,本次发布对AliOS Things配套的开发工具进行了全面的升级和增强。推出针对轻应用的开发工具、升级了AliOS Studio和构建系统、新增SytemView和SmartTrace工具辅助开发者调试分析。
系统架构图中,使用深灰色和橙色字体标记的模块是经过测试验证并已开源的模块,如“OTA组件”、“JS引擎”;而使用浅灰色字体标记的模块是正在研发或待测试的模块,如“支付组件”,今后会陆续开源。
代码目录
AliOS Things 3.3版本源码是按照系统架构的分层设计进行目录划分:
- components——集合了操作系统内核之上的所有功能组件
- hardware——包含系统已适配的板级支持包和CPU适配代码
- kernel——提供操作系统内核,包含调度、任务管理、任务间通信等功能
- solutions——提供物联网应用典型案例工程
- documentation——包含系统概述、快速上手、开发工具、贡献代码等说明文档
内核优化
AliOS Things3.3版本操作系统内核新增内核对象管理功能,对任务、互斥量、信号量等资源进行一致性管理,并对驱动框架、调试能力以及AOS API做了优化和升级。
- 内核对象管理
对系统内核资源如任务、互斥量、信号量等采用相同的管理方式,提高代码的可维护性和可扩展性。
- 驱动框架优化
新版本驱动框架,对上提供全新便利的AOS API,对下提供原子化驱动原语,把驱动复杂逻辑封装在各驱动子系统中。最大化提升应用和厂商驱动的开发效率。
- 调试能力增强
提升栈回溯解析率、新增printk调试打印接口、cpuuage统计改善、增加调试诊断命令等。
- AOS内核接口优化 优化APOS内核API,并考虑到与AliOS Things3.1接口的兼容性。详情参见:https://haas.iot.aliyun.com/aliosthings/aos_kernel.html。
组件整编
本次发布是在AliOS Things 3.1版本基础之上,精简了不必要的组件,增加了满足物联网领域所需的音视频、UI交互以及AI能力相关的组件,并对OTA、LinkSDK等核心组件进行了升级,详情参见下表:
组件仓库名称 | 仓库地址 | 功能描述 | 整编属性 |
---|---|---|---|
amp | https://gitee.com/alios-things/amp | 提供运行在资源受限设备上的轻量级应用软件框架,使得业务代码脚本化,使用JavaScript脚本循序构建轻应用 | 新增 |
amp_adapter | https://gitee.com/alios-things/amp_adapter | 轻应用适配层,对接轻应用与系统底层及硬件接口 | 新增 |
amp-utility | https://gitee.com/alios-things/amp-utility | 存放python类定义信息,用于IDE编辑器语法高亮 | 新增 |
py_engine | https://gitee.com/alios-things/py_engine | 基于MicroPython打造而成,可以快速实现IoT场景连云、控端、AI等最常见功能。 | 新增 |
ugraphics | https://gitee.com/alios-things/ugraphics | 基于SDL2封装的接口,支持JPEG/PNG图像解码绘制、点/线/框图像等绘制、图像旋转、RGB格式转换、中英文字符绘制等功能 | 新增 |
udisplay | https://gitee.com/alios-things/udisplay | 提供显示接口进行framebuffer及背光调节等操作 | 新增 |
ucloud_ai | https://gitee.com/alios-things/ucloud_ai | 基于alicloud OpenAPI实现的云端AI推理引擎,对接的阿里云视觉智能开放平台AI能力,目前支持15种AI模型:人脸识别、表情识别、人物动漫化、物体检测、主体检测、通用分割、人脸分割、身份证识别、银行卡识别、文字识别、垃圾分类、水果识别、图像人体擦除、风格迁移,未来将加入更多AI能力 | 新增 |
ai_agent | https://gitee.com/alios-things/ai_agent | AI的代理引擎框架,支持不同推理引擎的注册,对用户提供统一的接口,简化用户操作 | 新增 |
vfs | https://gitee.com/alios-things/vfs | 统一文件和驱动的接入方式,同时提供IO多路复用机制 | 新增 |
littlefs | https://gitee.com/alios-things/littlefs | 一个高度完整的嵌入式文件系统,可以用在自身不带坏块处理、磨损均衡等功能的内存芯片上 | 新增 |
fatfs | https://gitee.com/alios-things/fatfs | 为微型嵌入式系统提供的一种通用的FAT/exFAT文件系统模块 | 新增 |
a2sa | https://gitee.com/alios-things/a2sa | 音频系统服务框架,包括音频驱动层、音频服务接口层以及音频插件管理等 | 新增 |
uvoice | https://gitee.com/alios-things/uvoice | 提供了RTOS系统上端到云全链路的语音能力,包括音频硬件管理、音频增强算法、播放器、录音等基本音频功能,也结合阿里的智能语音云端服务,提供了TTS、语音控制、语音对话等能智能语音功能 | 新增 |
ucamera | https://gitee.com/alios-things/ucamera | 摄像头图像数据处理中间框架,提供Wi-Fi摄像头的支持 | 新增 |
oss | https://gitee.com/alios-things/oss | 对接阿里云的对象存储服务(Object Storage Service),为设备增加云端存储的能力 | 新增 |
trace | https://gitee.com/alios-things/trace | SytemView分析工具适配层 | 新增 |
ota | https://gitee.com/alios-things/ota | 支持多模块升级、支持用户自定义升级路径和模块名称、支持HaaS200压缩升级、支持HaaS100/HaaS EDU K1轻应用(js脚本)升级 | 升级 |
linksdk | https://gitee.com/alios-things/linksdk | 升级到4.0版本,新增设备引导服务、设备诊断、日志上报功能。 | 升级 |
cli | https://gitee.com/alios-things/cli | 改善cli的操作,支持上下左右方向键、新增文件系统操作命令集、改善tab 键命令补齐,支持文件系统路径补齐、支持Ctrl A/B/D/E/F/H/K/U等类 linux 快捷键、新增console管理 | 升级 |
debug | https://gitee.com/alios-things/debug | backtrace调用栈解析率提升、新增printk调试打印、cpuusage统计改善、调试诊断命令增加 | 升级 |
posix | https://gitee.com/alios-things/posix | 扩充更多接口 | 升级 |
典型案例
AliOS Things研发团队根据典型的物联网应用场景为开发者打造的多个实用的示例工程,方便开发者在此基础上快速的打造属于自己的物联网应用。示例工程仓库地址和使用说明如下表:
轻应用支持
AliOS Things提供的轻应用功能采用解释型编程语言JavaScript或Python,开发过程无需搭建嵌入式开发环境、无需编译、烧录。硬件设备的开发可以不再依赖嵌入式软件技术栈,调用简洁的API即可操控硬件行为。支持一键热更新推送应用代码到硬件,获取极致的开发体验。开发者可以参考如下教程开始AliOS Things轻应用的开发:
-
使用Python进行嵌入式应用开发
视频参见:Python轻应用开发教程
文章参见:https://blog.csdn.net/HaaSTech/article/details/115179241
-
使用JavaScript进行嵌入式应用开发
视频参见:JavaScript轻应用开发教程
文章参见:https://blog.csdn.net/HaaSTech/article/details/110158362
AliOS Things 支持的HaaS开发板
目前AliOS Things 3.3支持的HaaS开发板如下:
HaaS开发板 | 硬件配置 | 购买链接 |
---|---|---|
HaaS100 | 双核cortex-m33 和双核cortex-A7;1x1802.11a/b/g/n双频 wifi4模块、 音视频编码模块、电源管理模块、双模蓝牙5.0模块、三路模拟麦克风阵列以及六路数字麦克风阵列和丰富外设资源; 2.5MBSRAM、16MBPSRAM和16MBflash; 用于物联网控制网关、wifi远程扬声器和智能蓝牙音响等场景 |
点击购买HaaS100 |
HaaS200 | 高性能KM4和低功耗KM0,KM4 采用armv8M架构,主频高达200MHz, 兼容CortexM33指令集并支持浮点dsp功能,集成512KBsram和4MBpsram; km0同样采用armv8架构,主频20MHz,兼容cortexM23指令集并集成64MKBsram和1KBretentionsram; 支持wifi802.11a/b/g/n 双频、蓝牙5.0和丰富的外设资源; 用于智能家居、智慧园区等场景 |
点击购买HaaS200 |
HaaS EDU K1 | 有别于传统裸板开发板,外观鲜艳靓丽、青春活力; 内置1200mAh锂电池、OLED屏幕和游戏键盘设计; 内嵌Z8IDA金融级国密芯片; Tf 卡槽、USBtypeC接口(充电、烧录、调试等) |
点击购买HaaS EDU K1 |
AliOS Things 开发工具
开发环境
alios-studio是AliOS Things配套的开发环境基于VSCode的插件。支持图形化应用开发、编译、调试、烧录等功能,使用方法可参考: 开发环境使用视频教程
构建工具
aos-tools是AliOS Things团队开发的命令行构建工具,支持组件管理、程序编译、烧录等功能。aos-tools是使用git来获取组件代码并维护代码版本。aos-tools的安装及常用命令的操作说明如下:
常用命令 | 描述 |
---|---|
pip install -U aos-tools
|
|
aos command options
|
b. install、unisntall等命令必须在aos工作区[2]目录下使用 c. make、burn等命令必须在aos工作区的工程目录[3]下使用 options:执行命令的可选项 aos list b. 显示服务器端所有组件信息 aos list -r |
aos help
|
|
aos help command
|
aos help init |
aos init
|
mkdir alios_iot cd alios_iot aos init |
aos init manifest-lab -b branchname
|
branchname:可选项,仓库版本分之名称 aos init git@gitlab.alibaba-inc.com:alios_iot/manifest.git -b v1.0.0 |
aos install component aos install component -b branchname
|
aos install helloworld_demob. 下载v1.0.0版本的cli组件 aos install cli -b v1.0.0 |
aos show
|
|
aos make aos make V=1
|
cd solutions/helloworld_demo aos make |
aos make clean
|
|
aos burn
|
|
aos debug
|
|
aos create project aos create project -b <board> -t <solution> -d <destdir> <solution_name>
|
-t :可选项,指定已有的解决方案名称,如http_demo。如果未设置,默认为helloworld_demo; -d :必选项,指定工作区workspace目录,如果该目录指向已初始化过的工作区 ,则复用原来的工作区; -r :可选项,指定远程manifest仓库地址,默认为https://gitee.com/alios-things/manifest.git; -B:可选项,指定远程manifest仓库的分支,默认为master; solution_name:必选项,指定工程名。 aos create project -b haas100 -t helloworld_demo -d /home/johnny/myworkspace mysolution |
注解: [1] aos命令是指aos-tools支持的命令。 [2] aos工作区是指已执行过aos init的文件夹路径。 [3] aos工作区工程目录是指aos工作区solution目录下的工程根目录,如solution/helloworld_demo。
配置文件
package.yaml是组件或工程的配置文件,配置内容包含源文件,头文件,宏定义,以及组件依赖关系描述等等,替代了传统的makefile文件。
-
yaml语法说明
-
yaml格式校验工具
-
构建配置字段说明
https://haas.iot.aliyun.com/aliosthings/packageyaml_user_manual.html
a. 组件名称
b. 依赖信息****
c. 编译链接信息
d. 宏配置信息
分析工具
-
SmartTrace是AliOS Things自研的智能调试分析工具:支持查看串口日志、coredump死核分析、实时查看内存变量、在运行时设 置内存变量、通过uart、telnet等方式连接设备、本地日志离线分析。工具下载和使用方法可参见: https://alios-things-public.oss-cn-hangzhou.aliyuncs.com/SmartTrace_v1.4.zip, https://haas.iot.aliyun.com/aliosthings/smarttrace.html。
-
SystemView AliOS Things现支持业内常用的性能分析工具SystemView,工具说明和使用方法可参见: https://haas.iot.aliyun.com/aliosthings/trace.html, https://blog.csdn.net/HaaSTech/article/details/117779881。
AliOS Things 说明文档
内容提纲
为方便开发者能够迅速的定位到目标内容,我们对AliOS Things操作系统内核、组件、案例、API以及配套开发工具的所有相关文档进行了梳理分层,目录层次包括:
-
提供AliOS Things 操作系统框架、版本说明、文档入口、支持硬件、开发者交流通道等信息。
-
为用户提供基于HaaS100或HaaS EDU k1等硬件,快速搭建开发环境、下载源码、运行简单示例工程或设备连接阿里云示例工程的方法。
-
介绍AliOS Things操作系统配套的开发环境aos-studio、构建工具aos-tools以及构建配置package.yaml的使用方法。
-
从AliOS Things操作系统内核实现原理出发,提供任务、互斥量、信号量等功能的使用示例,帮助开发者为其应用编程选择合适的内核能力以及正确使用API。
-
组件是AliOS Things操作系统为物联网应用开发提供的上层能力。该板块列出了所有开源组件的使用说明,帮助用户快速的了解组件的用途和使用方法。
-
案例是AliOS Things操作系统根据典型的物联网应用场景为开发者打造的示例工程。该板块列出了每个案例所需的软硬件条件和使用说明,方便开发者在此基础上快速的打造属于自己的物联网应用。
-
为开发者贡献文档、贡献代码提供操作指南。
-
对内核和组件常用API的提供说明。
访问入口
- AliOS Things新版文档库
- AliOS Things文档中心,选择“AliOS Things 文档库(新)”进入AliOS Things新版文档库
- HaaS官网,点击“学习路径”菜单即可进入AliOS Things新版文档库
- 阿里云官网,点击主页右上方的“文档”菜单进入阿里云文档中心,找到“物联网”板块,选择“IoT物联网操作系统”即可进入AliOS Things文档中心
AliOS Things 开发者生态
开发者贡献
开发者支持
- HaaS官网:https://haas.iot.aliyun.com/
- HaaS技术社区:https://blog.csdn.net/HaaSTech
- 开发者钉钉群和微信公众号见下图,开发者钉钉群每天都有技术支持同学值班。