目录
1 可调试
1.1 完善的log系统
1.1.1 log系统基本要求:
1.1.2 log系统中级要求:
1.1.3 log系统高级要求:
1.2 完善的系统调试工具
2 可裁剪
2.1 可配置的模块
3 可连接
3.1 较为丰富的设备连接协议
3.1.1 抽象的网络接口层,比如ble,NB,ZigBee,WIFI,Ethnet‘
3.2 通用的物联网协议支持:
3.2.1 面向TCP协议的MQTT(WIFI,Ethenet)
3.2.2 面向UDP协议的COAP(底层通信协议NB)
3.2.2 面向TCP协议的HTTP/HTTPS(WIFI,Ethenet)
4 可AI
5 可运营
5.1 升级模式支持
5.2 功能运营和模块运营
5.3 文档运营
5.4 社区运营
6 可生产
6.1 产线模式支持
7 可恢复及安全
7.1 异常处理
7.2 认证和安全机制
一个好的AIOT 操作系统设计一定是符合使用场景的设计,比如说使用场景,硬件场景等。那么其实就比较难去判别,我这边只是提出一些观点,供大家参考。可能是其中的一个模块,或是多个模块一起组合,才能合力形成一个系统。
本文中以FreeRTOS为基础作为扩展。
我觉的可以从以下几个维度来思考,供大家一起讨论。
一个软件系统,不管是应用软件,或是操作系统,必须具备完善的log系统。完善的log系统对应应用开发,调试及产品运营具有重要意义。
1)可分模块输出log;
2)可配置的log输出等级,通常的等级定义为:debug,info,warning,error,critical
3)支持多进程log输出
4)可定义的log格式化输出
5)可定制的log size rotation或是time rotation
1)异常log过滤
2)基于log信息可以定位到问题,或是能够追踪到现场
3)系统调试过程中的综合log输出,包括但不限于cpu使用率,温度,内存使用率,内存带宽占用等。
1)有匹配的云端后台
2)匹配的分析工具
3)上报云端后台的策略
4)error及Critical log时候的通知及响应策略
1)如cpu使用率,内存使用率,process运行情况,带宽占用情况等。
2)系统内模块调试工具,类似Android的procrank,dumpsys之类
3)内存泄露分析方法
4)可能的cli命令工具
5)系统信息获取,包括但不限制于:MAC地址,设备唯一标识,IP地址,BLE MAC地址等。
因AIOT面对的需求千差万别,采用的硬件系统也有很大的差异,所以对应模块的需求也有很大的不同。FreeRTOS应该说是最简洁的一个系统,只是提供了task调度,定时器,内存管理(可配置)等有限的功能,使其很快得到了很大的推广。
在AIOT中常见的模块有:
1)IIC读写模块
2)SPI读写模块
MQTT(Message Queuing Telemetry Transport)是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。
客户端
1.发布应用消息给其它相关的客户端。
2.订阅以请求接受相关的应用消息
3.取消订阅以移除接受应用消息的请求。
4.从服务端断开连接。
服务端
1.接受来自客户端的网络连接
2.接受客户端发布的应用消息
3.处理客户端的订阅和取消订阅请求。
4.转发应用消息给符合条件的客户端订阅。
MQTT vs HTTPS:
吞吐量:93倍
发送数据电量消耗: 1/11
接收数据电量消耗:1/170
连接保持电量消耗:1/2
网络开销:1/8
支持的平台:
---百度IoT hub套件:https://blog.csdn.net/putiancaijunyu/article/details/78906492
---阿里云物联网套件:https://blog.csdn.net/putiancaijunyu/article/details/78920810
---百度IoT hub套件:https://blog.csdn.net/putiancaijunyu/article/details/78906492
---阿里云物联网套件:https://blog.csdn.net/putiancaijunyu/article/details/78920810
1)Arm NN,是基于CMSIS的。
http://arm-software.github.io/CMSIS_5/NN/html/index.html
2)NCNN,腾讯推出的基于cpu优化的深度学习神经网络框架(linux,Android)
3)数据收集功能
比如,我们之前做的智能手环,特别开发一个功能用于收集运动过程中的传感器数据(存储空间有限,采用BLE实时传输,Android app接收并存储到手机上)
必须考虑后面的系统升级及迭代。可以参考Android的recovery模式。
比如开机率,使用频率,操作习惯等
1)系统移植文档;
2)硬件依赖文档;
3)系统api使用文档;
4)系统工具使用文档;
5)系统定位及目标用户说明;
必要的产线模式支持。
需要明确产线上的职责,就是测试硬件,因此怎么设计一套软件系统来测试硬件是非常重要的事情。一般整个产线软件的开发同产品的开发是同时进行的。
产线模式需要关注如下几点:
1)结合产线工位的安排,排序测试项目
2)尽量降低产线的时间,提高生产效率,降低成本;
3)高低温压力测试(全负荷运行即设计软件使CPU使用率100%,关闭watchdog等)
1)watchdog机制(软件watchdog和硬件watchdog)
2)内存回收机制
3)故障预测,升级应对及告警等
4)系统状态上报
1)芯片基本的安全;
2)数据加密安全;
3)设备级别的认证。
4)SSL传输安全