alibaba / AliOS-Things

面向IoT领域的、高可伸缩的物联网操作系统,可去官网了解更多信息https://www.aliyun.com/product/aliosthings
Apache License 2.0
4.59k stars 1.15k forks source link

AliOS Things 3.3 轻松上手实践典籍 #1326

Closed yaoqiuguo closed 2 years ago

yaoqiuguo commented 3 years ago

AliOS Things 3.3版本于2021年4月23日正式发布开源,项目地址:

本次发布包含的新特性有:

我们会继续秉持全面开源的思想,不断把新开发出来的组件和案例,快速的贡献到开源社区,请大家持续关注。

AliOS Things 3.3 开源仓库

AliOS Things 3.3版本分别在GithubGiteeCode China开源,分支均为rel_3.3.0。用户贡献代码可在Github上提交申请,AliOS Things开发工具默认是从Gitee下载源码。GithubCode China主要是方便用户浏览所有开源代码。

Github

AliOS Things 3.3版本在Github平台上,所有功能模块共用一个仓库。用户可以通过登录本项目在Github上的地址,并切换代码分支为rel_3.3.0,即可查看到AliOS Things 3.3 版本所有开源代码,如下图。

Gitee

AliOS Things 3.3版本在Gitee平台上,每个功能模块分配一个独立的仓库。概览页面的精选区域目前是放置着常用的案例仓库和通用文档仓库,如简单示例工程helloworld_demo、通用文档仓库documentation等,如下图。

若用户想查看或搜索其他组件或案例仓库,可以点击上图选项栏中的“仓库”切换到“仓库”页,如下图。在搜索栏中输入目标组件或案例的名称,确认后即可显示搜索结果。

打开目标组件或案例的仓库,切换代码分支为rel_3.3.0,即可查看到该组件或案例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版本系统架构如下图:

系统架构图中,使用深灰色橙色字体标记的模块是经过测试验证并已开源的模块,如“OTA组件”、“JS引擎”;而使用浅灰色字体标记的模块是正在研发或待测试的模块,如“支付组件”,今后会陆续开源。

代码目录

AliOS Things 3.3版本源码是按照系统架构的分层设计进行目录划分:

对系统内核资源如任务、互斥量、信号量等采用相同的管理方式,提高代码的可维护性和可扩展性。

新版本驱动框架,对上提供全新便利的AOS API,对下提供原子化驱动原语,把驱动复杂逻辑封装在各驱动子系统中。最大化提升应用和厂商驱动的开发效率。

提升栈回溯解析率、新增printk调试打印接口、cpuuage统计改善、增加调试诊断命令等。

组件仓库名称 仓库地址 功能描述 整编属性
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研发团队根据典型的物联网应用场景为开发者打造的多个实用的示例工程,方便开发者在此基础上快速的打造属于自己的物联网应用。示例工程仓库地址和使用说明如下表:​

案例仓库名称 仓库地址 使用说明
helloworld_demo https://gitee.com/alios-things/helloworld_demo helloworld简单示例
linksdk_demo https://gitee.com/alios-things/linksdk_demo WI-FI设备连接阿里云示例
linksdk_gateway_demo https://gitee.com/alios-things/linksdk_gateway_demo WI-FI设备实现网关协助子设备连接阿里云示例
audio_demo https://gitee.com/alios-things/audio_demo 用钉钉小程序控制HaaS100播放语音示例
auto_demo https://gitee.com/alios-things/auto_demo 智能小车:用钉钉小程序通过HaaS100控制驱动电机示例
eduk1_demo https://gitee.com/alios-things/eduk1_demo HaaS EDU K1教育开发案例合集
flower_demo https://gitee.com/alios-things/flower_demo 智能养花:用钉钉小程序通过HaaS100监测空气温湿度示例
ota_demo https://gitee.com/alios-things/ota_demo HaaS物联网设备OTA解决方案
rfid_demo https://gitee.com/alios-things/rfid_demo HaaS100实现RFID读卡器信息上报云端示例
lora_p2p_demo https://gitee.com/alios-things/lora_p2p_demo HaaS100实现LoRa点对点通信
ucloud_ai_demo https://gitee.com/alios-things/ucloud_ai_demo 老板来了:通过HaaS100实现端云一体人脸识别示例
relay_demo https://gitee.com/alios-things/relay_demo HaaS100实现继电器控制示例
miniapp_agent_demo https://gitee.com/alios-things/miniapp_agent_demo 蓝牙配网:通过支付宝小程序为HaaS板便捷配网示例
py_engine_demo https://gitee.com/alios-things/py_engine_demo python轻应用示例合集

轻应用支持

AliOS Things提供的轻应用功能采用解释型编程语言JavaScript或Python,开发过程无需搭建嵌入式开发环境、无需编译、烧录。硬件设备的开发可以不再依赖嵌入式软件技术栈,调用简洁的API即可操控硬件行为。支持一键热更新推送应用代码到硬件,获取极致的开发体验。开发者可以参考如下教程开始AliOS Things轻应用的开发:

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-tools
  • 使用限制
  • 系统已安装python环境,版本要求2.7或3.6及以上。
  • 使用说明
  • 该操作可在本地环境中执行或在miniconda3创建的虚拟环境中执行
aos command options
  • 功能用途
  • 调用aos命令[1]格式
  • 使用限制
  • a. help、init等命令在系统已安装aos-tools后即可使用
    b. install、unisntall等命令必须在aos工作区[2]目录下使用
    c. make、burn等命令必须在aos工作区的工程目录[3]下使用
  • 使用说明
  • command:aos-tools支持的命令
    options:执行命令的可选项
  • 使用示例
  • a. 显示本地所有组件信息
    aos list
    b. 显示服务器端所有组件信息
    aos list -r
aos help
  • 功能用途
  • 获取所有支持的aos命令信息
  • 使用限制
  • 可在aos工作区的任意目录下使用
  • 使用说明
  • 获取aos-tools支持的所有命令信息
aos help command
  • 功能用途
  • 获取指定aos命令的帮助信息
  • 使用限制
  • 可在aos工作区的任意目录下使用
  • 使用说明
  • command:可选项,用来获取指定命令的帮助信息
  • 使用示例
  • a. 查看init命令的用法,并包含该命令支持的可选项说明
    aos help init
aos init
  • 功能用途
  • 初始aos化工作区
  • 使用限制
  • 系统已安装aos-tools
  • 使用示例
  • a. 创建工作区alios_iot并初始化
    mkdir alios_iot
    cd alios_iot
    aos init
aos init manifest-lab -b branchname
  • 功能用途
  • 定制化的初始化工作区
  • 使用限制
  • 系统已安装aos-tools
  • 使用说明
  • manifest-lab:可选项,使用定制化的manifest仓库来初始化aos工作区
    branchname:可选项,仓库版本分之名称
  • 使用示例
  • a. 使用alios_iot的manifest仓库来初始化aos工作区
    _aos init git@gitlab.alibaba-inc.com:aliosiot/manifest.git -b v1.0.0
aos install component
aos install component -b branchname
  • 功能用途
  • 下载组件或示例工程
  • 使用限制
  • 可在aos工作区的任意目录下使用
  • 使用说明
  • component:组件或示例工程名称
    branchname:版本分之名称
  • 使用示例
  • a. 下载helloworld_demo示例工程,以及该所依赖的组件
    _aos install helloworlddemo
    b. 下载v1.0.0版本的cli组件
    aos install cli -b v1.0.0
aos show
  • 功能用途
  • 获取工程的构建配置信息
  • 使用限制只能在aos工作区的工程目录[3]下使用
  • 使用说明
  • 使用该命令可查看工程依赖的组件列表、库(路径)、头文件、宏定义、变量、构建选项等信息。
aos make
aos make V=1
  • 功能用途
  • 构建工程
  • 使用限制
  • 只能在aos工作区的工程目录[3]下使用
  • 使用说明
  • V=1:可选项,显示编译的详细信息
  • 使用示例
  • a. 构建helloworld_demo
    _cd solutions/helloworlddemo
    aos make
aos make clean
  • 功能用途
  • 清除构建信息
  • 使用限制
  • 只能在aos工作区的工程目录[3]下使用
aos burn
  • 功能用途
  • 烧录固件
  • 使用限制
  • 只能在aos工作区的工程目录[3]下使用
aos debug
  • 功能用途
  • 启动gdb server
  • 使用限制
  • 只能在aos工作区的工程目录[3]下使用
  • 使用说明
  • 需配合Visual Studio Code的调试功能使用
aos create project
aos create project -b <board> -t <solution> -d <destdir> <solution_name>
  • 功能用途
  • 创建工程
  • 使用限制
  • 系统已安装aos-tools
  • 使用说明
  • -b :必选项,指定开发板名称,如haas100;
    -t :可选项,指定已有的解决方案名称,如http_demo。如果未设置,默认为helloworld_demo;
    -d :必选项,指定工作区workspace目录,如果该目录指向已初始化过的工作区 ,则复用原来的工作区;
    -r :可选项,指定远程manifest仓库地址,默认为https://gitee.com/alios-things/manifest.git
    -B:可选项,指定远程manifest仓库的分支,默认为master; solution_name:必选项,指定工程名。
  • 使用示例
  • a. 以helloworld_demo为模版创建工程mysolution
    _aos create project -b haas100 -t helloworlddemo -d /home/johnny/myworkspace mysolution

注解: [1] aos命令是指aos-tools支持的命令。 [2] aos工作区是指已执行过aos init的文件夹路径。 [3] aos工作区工程目录是指aos工作区solution目录下的工程根目录,如solution/helloworld_demo。

配置文件

package.yaml是组件或工程的配置文件,配置内容包含源文件,头文件,宏定义,以及组件依赖关系描述等等,替代了传统的makefile文件。

a. 组件名称

b. 依赖信息**​**

c. 编译链接信息

d. 宏配置信息

分析工具

AliOS Things 说明文档

内容提纲

为方便开发者能够迅速的定位到目标内容,我们对AliOS Things操作系统内核、组件、案例、API以及配套开发工具的所有相关文档进行了梳理分层,目录层次包括:

访问入口

AliOS Things 开发者生态

开发者贡献

Pillar1989 commented 10 months ago

https://m.gelonghui.com/p/679272 AliOS-Things以后是什么路线呢 ? 还搞吗 ?

Pillar1989 commented 10 months ago

@YiluMao