一种基于AliOS Things的uData感知设备软件框架
摘要: ??uData框架設(shè)計(jì)之初的思想是基于傳統(tǒng)sensorhub概念基礎(chǔ)之上的,結(jié)合IoT的業(yè)務(wù)場景和AliOS Things物聯(lián)網(wǎng)操作系統(tǒng)的特點(diǎn)設(shè)計(jì)而成的一個(gè)面對IoT的感知設(shè)備處理框架。
點(diǎn)此查看原文:http://click.aliyun.com/m/40592/
uData誕生背景
??uData框架設(shè)計(jì)之初的思想是基于傳統(tǒng)sensorhub概念基礎(chǔ)之上的,結(jié)合IoT的業(yè)務(wù)場景和AliOS Things物聯(lián)網(wǎng)操作系統(tǒng)的特點(diǎn)設(shè)計(jì)而成的一個(gè)面對IoT的感知設(shè)備處理框架。uData的主要目的是為了解決IoT端側(cè)設(shè)備傳感器開發(fā)的周期長、應(yīng)用算法缺少和無云端數(shù)據(jù)一體化等痛點(diǎn)問題。
uData概要介紹
??uData設(shè)計(jì)之初是遵循分層解耦的模塊化設(shè)計(jì)原則,其目的是為了讓uData根據(jù)客戶的不同業(yè)務(wù)和需求組件化做移植適配。下圖是當(dāng)前架構(gòu)模塊圖,主要分kernel和framework兩層,kernel層主要是負(fù)責(zé)傳感器驅(qū)動,硬件端口配置和相關(guān)的靜態(tài)校準(zhǔn),包括軸向校準(zhǔn)等;framework層主要是負(fù)責(zé)應(yīng)用服務(wù)管理、動態(tài)校準(zhǔn)管理和對外模塊接口等。
uData關(guān)鍵模塊說明
uData,目前主要有三大模塊支撐整個(gè)架構(gòu)。其他模塊均可以按照業(yè)務(wù)需求進(jìn)行組件化配置或者增加新功能。
uData數(shù)據(jù)表
當(dāng)前uData的框架中分別有三張數(shù)據(jù)表,應(yīng)用服務(wù)表、抽象數(shù)據(jù)表,物理傳感器表。
uData數(shù)據(jù)類型
uData主要分兩種類型的數(shù)據(jù),一種是uData的應(yīng)用算法數(shù)據(jù)類型,開發(fā)者和外部模塊也只和這類型的數(shù)據(jù)進(jìn)行通信和交互;另外一種是物理傳感器數(shù)據(jù)類別,存在于kernel的sensor驅(qū)動層,并和uData framework層進(jìn)行通信和交互,暫不對外。一般情況下,每一個(gè)應(yīng)用算法服務(wù)數(shù)據(jù)會訂閱一個(gè)物理傳感器數(shù)據(jù),也可能一個(gè)應(yīng)用算法數(shù)據(jù)基于多個(gè)物理傳感器數(shù)據(jù)。
/* uData應(yīng)用算法數(shù)據(jù)類型 */ 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物理傳感器數(shù)據(jù)類型 */ 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;物理傳感器介紹
當(dāng)前uData所支持的都是基于MEMS傳感器(微機(jī)電系統(tǒng),Microelectro Mechanical System)來設(shè)計(jì)實(shí)現(xiàn)的,下表是對現(xiàn)有的傳感器做一個(gè)簡單的介紹,可以增加對整個(gè)文檔的理解和uData的認(rèn)識。
uData開機(jī)流程
在本章節(jié)中,涉及介紹uData的開機(jī)流程。主要是從系統(tǒng)開機(jī),到內(nèi)核初始化,sensor初始化,framework初始化再到uData的framework初始化。也可以從下圖中可以清楚的了解到整個(gè)初始化過程。
uData模塊間通信模式
當(dāng)前的uData模塊間通信是基于AliOS Things的yloop異步處理機(jī)制的。當(dāng)前uData所支持的異步事件按如下所示,也可以在includeaosyloop.h中查閱相關(guān)信息:
/** 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 /* 目前用于外部組件的訂閱,如數(shù)據(jù)上云業(yè)務(wù) */ #define CODE_UDATA_SERVICE_UNSUBSRIBE 8 /* 目前用于外部組件的退閱,如數(shù)據(jù)上云業(yè)務(wù) */ #define CODE_UDATA_SERVICE_PROCESS 9 #define CODE_UDATA_SERVICE_IOCTL 10 #define CODE_UDATA_REPORT_PUBLISH 11 /* 當(dāng)uData數(shù)據(jù)準(zhǔn)備好之后,會廣播事件通知相關(guān)的外部模塊 */在uData框架的framework層,目前設(shè)計(jì)了一個(gè)任務(wù)調(diào)度器(uData_service_dispatcher)和一個(gè)定時(shí)器(g_abs_data_timer)來實(shí)現(xiàn)整個(gè)uData的通訊機(jī)制。
數(shù)據(jù)讀取方式
輪詢方式(POLLING) :基于定時(shí)器發(fā)起的方式。
中斷方式(PUSH/INT):基于傳感器中斷發(fā)起的方式。
一般業(yè)務(wù),基本以輪詢方式來讀取數(shù)據(jù)都能滿足業(yè)務(wù)需求,中斷方式基本用于低功耗管理,系統(tǒng)喚醒等業(yè)務(wù)居多,比如基于加速度計(jì)的系統(tǒng)喚醒機(jī)制。
根據(jù)上面的各模塊介紹,匯總了下圖來描述了對整個(gè)uData框架的整體實(shí)現(xiàn)和通訊機(jī)制的理解和認(rèn)識。
uData框架小結(jié)
本文主要是從uData的軟件設(shè)計(jì)實(shí)現(xiàn)方面來實(shí)現(xiàn)。關(guān)于uData移植,sensor驅(qū)動開發(fā)等請參考其他相關(guān)的文檔。
總結(jié)
以上是生活随笔為你收集整理的一种基于AliOS Things的uData感知设备软件框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7类合作伙伴,190条沟通路径,高德汽车
- 下一篇: 阿里云DDoS高防 - 访问与攻击日志实