一种基于AliOS Things的uData感知设备软件框架
摘要: uData框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架。
点此查看原文:http://click.aliyun.com/m/40592/
uData诞生背景
uData框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架。uData的主要目的是为了解决IoT端侧设备传感器开发的周期长、应用算法缺少和无云端数据一体化等痛点问题。
uData概要介绍
uData设计之初是遵循分层解耦的模块化设计原则,其目的是为了让uData根据客户的不同业务和需求组件化做移植适配。下图是当前架构模块图,主要分kernel和framework两层,kernel层主要是负责传感器驱动,硬件端口配置和相关的静态校准,包括轴向校准等;framework层主要是负责应用服务管理、动态校准管理和对外模块接口等。
uData关键模块说明
uData,目前主要有三大模块支撑整个架构。其他模块均可以按照业务需求进行组件化配置或者增加新功能。
uData数据表
当前uData的框架中分别有三张数据表,应用服务表、抽象数据表,物理传感器表。
uData数据类型
uData主要分两种类型的数据,一种是uData的应用算法数据类型,开发者和外部模块也只和这类型的数据进行通信和交互;另外一种是物理传感器数据类别,存在于kernel的sensor驱动层,并和uData framework层进行通信和交互,暂不对外。一般情况下,每一个应用算法服务数据会订阅一个物理传感器数据,也可能一个应用算法数据基于多个物理传感器数据。
/* uData应用算法数据类型 */
typedef enum
{UDATA_SERVICE_ACC = 0, /* Accelerometer */ UDATA_SERVICE_MAG, /* Magnetometer */UDATA_SERVICE_GYRO, /* Gyroscope */UDATA_SERVICE_ALS, /* Ambient light sensor */UDATA_SERVICE_PS, /* Proximity */UDATA_SERVICE_BARO, /* Barometer */UDATA_SERVICE_TEMP, /* Temperature */UDATA_SERVICE_UV, /* Ultraviolet */UDATA_SERVICE_HUMI, /* Humidity */UDATA_SERVICE_HALL, /* HALL sensor */UDATA_SERVICE_HR, /* Heart Rate sensor */UDATA_SERVICE_PEDOMETER, UDATA_SERVICE_PDR, UDATA_SERVICE_VDR,UDATA_MAX_CNT,
}udata_type_e;
/* uData物理传感器数据类型 */
typedef enum{TAG_DEV_ACC = 0, /* Accelerometer */TAG_DEV_MAG, /* Magnetometer */TAG_DEV_GYRO, /* Gyroscope */TAG_DEV_ALS, /* Ambient light sensor */TAG_DEV_PS, /* Proximity */TAG_DEV_BARO, /* Barometer */TAG_DEV_TEMP, /* Temperature */TAG_DEV_UV, /* Ultraviolet */TAG_DEV_HUMI, /* Humidity */TAG_DEV_HALL, /* HALL */TAG_DEV_HR, /* Heart Rate */TAG_DEV_SENSOR_NUM_MAX,
} sensor_tag_e;
物理传感器介绍
当前uData所支持的都是基于MEMS传感器(微机电系统,Microelectro Mechanical System)来设计实现的,下表是对现有的传感器做一个简单的介绍,可以增加对整个文档的理解和uData的认识。
uData开机流程
在本章节中,涉及介绍uData的开机流程。主要是从系统开机,到内核初始化,sensor初始化,framework初始化再到uData的framework初始化。也可以从下图中可以清楚的了解到整个初始化过程。
uData模块间通信模式
当前的uData模块间通信是基于AliOS Things的yloop异步处理机制的。当前uData所支持的异步事件按如下所示,也可以在includeaosyloop.h中查阅相关信息:
/** uData event */
#define EV_UDATA 0x0004
#define CODE_UDATA_DEV_READ 1
#define CODE_UDATA_DEV_IOCTL 2
#define CODE_UDATA_DEV_OPEN 3
#define CODE_UDATA_DEV_CLOSE 4
#define CODE_UDATA_DEV_ENABLE 5
#define CODE_UDATA_DEV_DISABLE 6
#define CODE_UDATA_SERVICE_SUBSRIBE 7 /* 目前用于外部组件的订阅,如数据上云业务 */
#define CODE_UDATA_SERVICE_UNSUBSRIBE 8 /* 目前用于外部组件的退阅,如数据上云业务 */
#define CODE_UDATA_SERVICE_PROCESS 9
#define CODE_UDATA_SERVICE_IOCTL 10
#define CODE_UDATA_REPORT_PUBLISH 11 /* 当uData数据准备好之后,会广播事件通知相关的外部模块 */
在uData框架的framework层,目前设计了一个任务调度器(uData_service_dispatcher)和一个定时器(g_abs_data_timer)来实现整个uData的通讯机制。
数据读取方式
轮询方式(POLLING) :基于定时器发起的方式。
中断方式(PUSH/INT):基于传感器中断发起的方式。
一般业务,基本以轮询方式来读取数据都能满足业务需求,中断方式基本用于低功耗管理,系统唤醒等业务居多,比如基于加速度计的系统唤醒机制。
根据上面的各模块介绍,汇总了下图来描述了对整个uData框架的整体实现和通讯机制的理解和认识。
uData框架小结
本文主要是从uData的软件设计实现方面来实现。关于uData移植,sensor驱动开发等请参考其他相关的文档。
一种基于AliOS Things的uData感知设备软件框架相关推荐
- 一种基于“spark lite”和“按键自动精灵”软件的不间断跑流量方法
本文目录 1 问题背景 2 解决方法 3 软硬件需求 4 实现步骤 4.1 spark lite软件测试 4.2 按键自动精灵软件安装设置 4.2.1 开启软件权 4.2.2 新建任务 4.2.3 运 ...
- 南京计算机学校李鑫,南京邮电大学李鑫等:一种基于参数扰动的芯片成品率双目标优化框架...
原标题:南京邮电大学李鑫等:一种基于参数扰动的芯片成品率双目标优化框架 目的: 基于工艺参数扰动及环境参数扰动,实现对芯片漏电功耗成品率及芯片时延成品率的双目标优化,得到分布均匀的帕累托优化解集. 创 ...
- 一种基于分层设计的小家电控制板通用程序框架
本文设计了一种基于分层设计的小家电控制板通用程序框架.分层设计有以下优点: (1)降低系统复杂度.由于每层都是相对独立的,每层可以单独实现. (2)隔离变化.通过分层设计,可以把变化的部分独立出来,让 ...
- 抽取+生成:一种基于背景知识的参考感知网络对话模型
「论文访谈间」是由 PaperWeekly 和中国中文信息学会社会媒体处理专委会(SMP)联合发起的论文报道栏目,旨在让国内优质论文得到更多关注和认可. 目前,对话系统(Dialogue System ...
- STM32一种基于NTC的控温电路及软件实现
NTC(Negative Temperature Coefficient)是一种随温度上升时,电阻值呈指数关系减小的热敏电阻.应用广泛,最近我们就采用了NTC来控制加热并测温,并达到了预期的效果. 1 ...
- 基于机器学习的网络安全态势感知
人工智能技术与咨询 点击蓝字 · 关注我们 来源:<计算机科学与应用> ,作者杨怡等 关键词: 机器学习:态势感知:关联分析:攻击场景重建 摘要: 摘要: 在传统网络防御手段抵御攻击的基础 ...
- 大数据催生智慧园区_基于人工智能的智慧园区异构设备统一接入方法与流程
[技术领域] 本发明涉及智慧园区建设技术领域,尤其涉及基于人工智能的智慧园区异构设备统一接入方法. 背景技术: 智慧园区是一种以互联网.物联网.云计算.大数据等先进信息技术为支撑,在信息服务等各个环节 ...
- 论文笔记-基于代码属性图和Bi-GRU的软件脆弱性检测方法
一.摘要 提出了一种基于代码属性图和Bi-GRU的软件脆弱性检测方法.该方法通过从函数的代码属性图中提取出抽象语法树序列.控制流图序列作为函数表征的表征方式,减少代码表征过程中的信息的损失,并通过选 ...
- PU-Net:一种基于数据的3D点云上采样网络
点击上方"视学算法",选择"星标" 干货第一时间送达 论文下载: https://openaccess.thecvf.com/content_cvpr_2018 ...
最新文章
- Codeforces 997 C - Sky Full of Stars
- 皮一皮:落伍了落伍了
- java 数据结构详解,数组,集合,HashMap
- 5g算法matlab怎么用,使用 MATLAB 开发 5G NR 设计
- Win7 格式化U盘
- 树莓派python界面编程_玩转树莓派-RaspBerry,使用Python开发定制界面
- 美女,真的有标准吗?
- java实现生成pdf_详解Java生成PDF文档方法
- vue+高德地图 点击地图获取经纬度和详细地址
- MySQL练习题(经典50题)
- 单片机基础:MCS-51单片机的硬件结构(附硬件结构框图)
- Python可视化:python画图字体设置
- 《史蒂夫乔布斯传》部分读书摘录
- 多元相关与回归分析及R使用
- iOS和安卓的base64
- HDU1864 最大报销额 01背包
- 《闲扯Redis九》Redis五种数据类型之Set型
- eclipse新建项目没有src解决办法
- 通达OA使用手册(一)
- 【五六七人口普查】我国省市两级各行业门类人口及三次产业人口比重
热门文章
- python训练手势分类器_python-Keras分类器的准确性在训练过程中稳定...
- python合并视频和音频_真没想到,Python 还能实现 5 毛特效
- 【LeetCode笔记】394. 字符串解码(Java、递归、栈)
- 在线ajax测试,在线测试 - SosoApi,简单强大的api接口文档管理平台
- cplex安装_Excel软件规划求解工具的安装与功能介绍
- element ui 多个子组件_ElementUI 技术揭秘(2) 组件库的整体设计
- matlab 函数 命名参数,如何处理MATLAB中的函数参数的名称/值对
- 这套网红试卷火了!数学老师您应该是文案出身吧?
- centos普通用户修改文件权限_Linux实战014:Centos创建用户并添加root授权
- unixODBC的使用