【资料分享】MicoKit固件开发手册

Elecfans管家 ( 楼主 ) 2015-5-29 13:57:57  显示全部楼层
一、概述
MicoKit 固件基于庆科MICO 物联网操作系统,快速接入Wi-Fi 网络;并通过庆科的FogCloud 云完成设备和手机APP 之间的交互,从而实现物联网应用的各种功能。本文档主要介绍MicoKit 固件开发方法以及所涉及到的相关内容,主要包括MICO 系统、FogCloud 云接入、以及固件App 框架,帮助开发者深入理解MicoKit 的工作机制,以便进行更深入的二次开发工作。

二、固件开发方法
MicoKit 固件开发使用庆科提供的固件开发工具包进行开发。该开发包主要包括了MicoKit 固件实例工程、开发调试工具、相关资料文档。
固件SDK 包使用步骤:
1.登录MICO 开发者网站mico.io 下载MicoKit Firmware SDK 开发包;
2.解压SDK 开发包,安装固件开发环境:
(a) 安装IAR workbench for ARM on Windows(7.30.1 及以上);
(b) 安装ST-LINK 驱动;
(c) 安装USB 虚拟串口驱动(FTDI);
3.打开SDK 开发包中的Demo 工程:
4.修改、编译代码、下载到开发板中;
5.按开发板上的Reset 键运行程序,可通过串口LOG 查看固件运行情况,并使用SDK
中配套的手机APP 测试功能。

实例工程说明:
1.工程路径:MicoKit_Firmware_SDK_v1.0.0\Project\
1.png
2.使用IAR 打开\Projects\STM32F4xx\Demo.eww 工程环境,有两个子工程:Bootloader和COM.mxchip.MicoKit
2.png
3.选择COM.MXCHIP.MicoKit 工程,配置选择MiCOKit-3288;
3.png
4.查看(修改)用户代码:
工程中Application/User/下的代码。
5.编译、调试、下载。
4.png
6.连接好USB,PC 上配置好串口,查看设备运行LOG:
5.png
7.手机APP 登陆、设备配网、设备控制(详细操作方法见《MicoKit 快速入门v1.0.0》)。

三、MICO
       MiCO(micro-controller based Internet Connectivity Operating System 是一个面向智能硬件优化设计的、运行在微控制器上的、高度可移植的操作系统和中间件开发平台。MiCO 作为独立的系统,拥有开放架构,还包括了底层的芯片驱动、无线网络协议、射频控制技术、安全、应用框架等,能够帮助IoT 设备开发者降低软件开发难度,快速形成可以量产的产品。
       MiCO 内含一个面向IoT 设备的实时操作系统内核,特别适合运行在能量受限的微控制设备上。此外,MiCO 还包含了网络通信协议栈,安全算法和协议,硬件抽象层,编程工具等开发IoT 必不可少的软件功能包。
6.png
        MiCO 提供MCU 平台的抽象化, 使得基于MiCO 的应用程序开发不需要关心
        MCU 具体件功能的实现,通过MiCO 中提供的各种编程组件快速构建IoT 设备中的软件,配合MiCOKit 开发套件实现快速产品原型开发。

MiCO 的关键特性

(1)支持多种网络协议栈,并持续增加中:Bluetooth®low energy,以太网,Wi-Fi,ZigBee,6LoWPAN;
(2)全自动高效功耗管理;
(3)支持多种MCU 体系结构:Cortex-M 系列,MIPS 等,提供MCU 平台级的抽象化,
标准外设驱动接口
(4)完整的网络安全算法和协议栈,支持常用的传输层安全协议TLS;
(5)方便易用的应用程序框架,使MiCO 应用安全地直达云端;
(6)支持多种MCU 常用的开发调试环境,可以进行硬件仿真。提供命令行接口和标准调
试信息输出,方便实现运行中的调试;
(7)提供完整的设备量产技术,如引导程序,量产烧录,远程网络升级服务,生产测试
程序等;
(8)基于MiCO 系统开发的IoT 设备软件已经成功地运行在大量的商品上,是一个被证
明了的,安全,稳定,可靠的软件平台。
MICO 详细资料请查看MICO 开发者网站:http://mico.io/?page_id=31

四、FogCloud
FogCloud 是专门为智能硬件提供后台支持的云服务平台,实现了硬件产品与智能手机及云端服务互连,为多种行业提供云端解决方案。目前庆科云可以提供包括设备云端互联、MiCO 软件OTA 升级、阿里智能云、微信等第三方公有云接入等支持服务。
MicoKit 接入FogCloud 工作架构图:
7.png
设备接入FogCloud 流程:
(1)申请产品ID 和KEY;
(2)设备使用产品ID/KEY 向FogCloud 激活,获取设备ID 和KEY;
(3)设备使用设备ID/KEY 连接FogCloud 消息服务器,收发消息;
(4)设备从云端注销(删除设备)。
8.png
FogCloud 详细接入流程请参考FogCloud Wiki: http://api.easylink.io/wiki/

五、AppFramework

       MicoKit 基于MICO 操作系统,并且集成了FogCloud 云接入功能,给开发者提供了一套简单易用的固件应用程序框架,用户只需要修改控制具体硬件模块的代码即可测试相应的功能,无需关心设备网络连接、云接入、手机APP 软件界面的修改等工作,大大节约了固件开发者的开发工作。
       MicoKit AppFramework 默认接入FogCloud 云;采用抽象的方法将设备上的各个模块抽象成服务(service),将每个模块的各个功能点抽象成属性(property);设备通过设备描述表的形式将它所具有的功能告诉FogCloud 云端以及配套的手机APP,手机APP 根据设备描述表中的内容来自动生成设备控制界面,并且通过读写各个属性值来控制设备上的功能模块。
1.MicoKit 固件结构图:
9.png
2. 固件流程图:
10.png
3.MicoKit 设备抽象
(1)设备描述表
将Mico 设备所具有的功能模块(如开关LED、串口等外设)抽象成可访问的服务(service);将每个模块所具有的功能(开关的状态、LED 灯的亮度值等)抽象成可读写的属性(property)。每一个service/property 都分配一个固定的iid,作为访问标识。APP 从设备获取到该描述表之后,就可以描绘出整个设备所具有的功能模块,展示给用户,并且可以使用iid 来读写设备的每一个属性,从而完成对设备的控制。
设备描述表在固件中的由servcie_table 数组来定义,示例如下:
  1. const struct mico_service_t service_table[] = {
  2. [0] = {.type = "public.map.service.dev_info", // service 1: dev_info (uuid)
  3. .properties = {
  4. [0] = {.type = "public.map.property.name", // device name uuid
  5. .value = &(user_context.config.dev_name),
  6. .value_len = &(user_context.config.dev_name_len),
  7. .format = MICO_PROP_TYPE_STRING,
  8. .perms = (MICO_PROP_PERMS_RO | MICO_PROP_PERMS_WO),
  9. .get = string_get, // get string func to get device name
  10. .set = string_set, // set sring func to change device name
  11. .notIFy_check = NULL, // not notifiable
  12. .arg = &(user_context.config.dev_name), //extra arg for get/set/notify_check
  13. .event = NULL, // not notifiable
  14. .hasMeta = false, // no max/min/step
  15. .maxStringLen = MAX_DEVICE_NAME_SIZE, // max length of device
  16. name string
  17. .unit = NULL // no unit
  18. },
  19. [1] = {NULL} // end flag
  20. }
  21. },
  22. [1] = {.type = "public.map.service.rgb_led", // service 2: rgb led (uuid)
  23. .properties = {
  24. [0] = {.type = "public.map.property.switch", // led switch uuid
  25. .value = &(user_context.config.rgb_led_sw),
  26. .value_len = &bool_len, // bool type len
  27. .format = MICO_PROP_TYPE_BOOL,
  28. .perms = (MICO_PROP_PERMS_RO | MICO_PROP_PERMS_WO),
  29. .get = rgb_led_sw_get, // get led switch status function
  30. .set = rgb_led_sw_set, // set led switch status function
  31. .notify_check = NULL, // not notifiable
  32. .arg = &user_context, // user context
  33. .event = NULL,
  34. .hasMeta = false,
  35. .maxStringLen = 0,
  36. .unit = NULL
  37. },
  38. [1] = {NULL}
  39. }
  40. },
  41. [2] ={ NULL}
  42. }
复制代码

设备描述表上传给APP 时采用JSON 格式,使用一个services 对象数组表示设备的模块
列表;每一个service 对象中使用一个properties 对象数组表示该模块所具有的所有属性;每
一个属性中使用不同的字段表示该属性的特征。
设备描述表结构示例如下:
  1. {
  2. "services": [
  3. {
  4. "type": "UUID", // service1 UUID
  5. "iid": <integer>, // service iid
  6. "properties": [
  7. { // property 1
  8. "type": "UUID", // property UUID
  9. "iid": <integer>, // property iid
  10. "format": "data_type", // property value type
  11. "perms": [ // property permission
  12. "pr", // can read
  13. "pw", // can write
  14. "ev" // will notify
  15. ],
  16. "maxValue": <value>, // max value for int/float
  17. "minValue": <value>, // min value for int/float
  18. "minStep": <value>, // min step value for int/float
  19. "maxStringLen": <integer> // max string length in byte
  20. "unit": "unit string" // property data unit
  21. },
  22. { // property 2
  23. ...
  24. }
  25. ...
  26. ]
  27. },
  28. { // service2
  29. ...
  30. },
  31. ...
  32. ]
  33. }
复制代码

用户要添加新功能模块,连接好相应的硬件后,只需要在固件的设备描述表中添加相应的services 和properties 及相关属性的get/set/notify_check 操作即可告知APP 新添加的模块。
设备描述表字段说明:
11.png
12.png
13.png
(2)属性操作
每一个属性都需要用户根据不同的硬件自定义属性的操作方法,即get/set/notify_check方法。AppFramework 调用相应的get/set 方法读取硬件数据或者操作硬件,调用notify_check方法检测属性值是否需要上报给云端。其中:
get 方法:读取硬件的属性值,AppFramework 会调用该方法获取硬件状态;
                  读取成功,返回0;
                  读取失败,返回非零值。
set 方法:根据属性值操作相应的硬件,AppFramework 会调用该方法操作硬件;
                 操作成功,返回0;
                 操作失败,返回非零值。
notify_check:如果该模块的某一个属性是具有主动通知特性的(perms 字段包含ev),则需要定期检查是否需要主动上报该属性值;AppFramework 会调用该方法判断是否满足主动上传属性值的条件。满足通知条件(例如:属性值发送了变化),返回1;否则返回0。

4.设备网络配置
使用手机APP 对MicoKit 进行Wi-Fi 网络配置以及云端激活、绑定方法请参考文档:《MicoKit 网络配置协议》。

5.云端数据通信
MicoKit 和手机APP 通过FogCloud 的数据通信协议参考文档:《MicoKit 云数据通信协议》
MicoKit固件开发手册v1.0.0.pdf (1.09 MB, 下载次数: 338)

18个回复

qingcaodi128 发表于 2015-6-3 08:47:59
好资料,学习一下,感谢!
回复

举报 使用道具

artruth 发表于 2015-7-13 11:52:59
好好学习一下,物联网一大趋势
shenglangle 发表于 2015-7-21 21:23:58
好好学习一下,资料和描述一抹一眼~
flyangus 发表于 2015-7-29 22:09:55
先回帖再下载,哎
回复

举报 使用道具

yangzhi150706 发表于 2015-8-6 16:23:39
好感!好感!好感!好感!
回复

举报 使用道具

feiji323 发表于 2015-8-30 20:10:06
名字听起来挺牛的样子,了解一下先
weslydreamer 发表于 2015-9-2 16:35:40
不断学习中,敬请期待
回复

举报 使用道具

DDL123 发表于 2015-9-15 15:02:27
正需要,现在下载下来看看
chengjia213 发表于 2015-9-16 22:01:48
好文章```````````````藏```
michael_xing 发表于 2015-9-25 22:12:25
赞,好东东。。。。。。。。。。。。。。。。。。。。。
回复

举报 使用道具

豫华商 发表于 2015-10-16 15:16:39
哪里有IAR  (7.30)以上的版本啊?
2g3g4g 发表于 2015-11-19 11:03:33
豫华商 发表于 2015-10-16 15:16
哪里有IAR  (7.30)以上的版本啊?

http://mico.io/download/install/IAR%207.3.zip
可以下载
2g3g4g 发表于 2015-11-19 11:04:25
这个资料对我很有用,得收藏一下
wshini7316 发表于 2015-12-31 17:19:39
学习中。很好的资料。
回复

举报 使用道具

yangzhixiong11 发表于 2016-3-4 21:20:02
好的   谢谢分享
kob24bry81 发表于 2016-5-2 16:41:36
非常好的资料,可以拿来学习,谢谢
马松 发表于 2017-6-20 20:41:59
不错,学习一下
使者0123 发表于 2018-5-25 08:49:09
现在在用庆科模块,官网上好多资料都找不到
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 粤ICP备14022951号-2 )

GMT+8, 2020-1-18 03:20 , Processed in 0.743262 second(s), Total 21, Slave 14 queries , Memcache On.

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表