十年前笔者还是CSDN移动大区的版主,当时的嵌入式领域的发展趋势还是非常不错的,不过随着安卓的出现,它逐渐发展,蚕食了很多原本属于嵌入式技术的市场,比如导航仪、工业用的手持式操作面板,都逐渐被平板甚至手机所取代。不过随着万物互联的Lot时代到来,安卓相对于物联网终端来说还是太重了,他们之间并不匹配。
而且随着国家的物联网发展“十三五”规划中直接将物联网操作系统列为关键技术,各大厂商也纷纷推出了自己的OS。为了获得第一手的资料,笔者直接趁着“双十一”的优惠活动在淘宝上下单了Lite OS的开发板,向大家分享一下Lite OS的使用经验。
物联网发展简史
1999年美国召开的移动计算和网络国际会议首先提出的。由麻省理工大学的阿什顿教授提出了基于互联网、RFID技术、EPC标准,在计算机互联网的基础上,利用射频识别技术、无线数据通信技术等,构造了一个实现全球物品信息实时共享的实物互联网“Internet of things”(简称物联网)的方案,这也是物联网(LOT)正式被提出来。
2003年,《技术评论》杂志提出传感网络技术将是未来改变人们生活的十大技术之首。
2005年信息社会世界峰会(WSIS)上,国际电信联盟(ITU)发布《ITU互联网报告2005:物联网》,引用了“物联网”的概念。并拓宽了物联网对于传感器定义指出,无所不在的“物联网”通信时代即将来临.
2009年时任IBM首席执行官彭明盛提出“智慧地球”战略,建议新政府投资新一代的智慧型基础设施。具体地说,就是把感应器嵌入和装备到电网、铁路、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道等各种物体中,并且被普遍连接,形成物联网,而且还非常具有前瞻性的提出了“智慧“的概念。与“信息高速公路“哺育了互联网一样,”智慧地球“战略也极大的帮助了物联网的发展。
2009年有关领导在视察中科院无锡物联网产业研究所,提出“感知中国”战略,物联网被正式列为我国新兴战略性产业之一,写入“政府工作报告”,而且笔者做为当时CSDN嵌入式版的版主,对于此事件可谓记忆犹新,印象深刻,与其它国家的战略不同,在我国物联网和中国制造的结合程度相当紧密。
2014年印度新当选总理莫迪提出了数字印度计划,提出了全民享有数字权利的口号,虽然印度的通信网络基础设施还比较落后,但是对比20年前中国的互联网行业发展的情况也能知道,网络的价值更多的体现在连接节点的数量,所有人口大国印度在物联网方面的发展潜力也不容小觑。
由此我们也可以看到物联网有两个发展趋势非常明显
一、智慧化:物联网已经由之前单纯的传感器网络变成了现在的智慧网络了,那么也就要求终端必须装有操作系统,能够处理网络的反馈指令。
二、开源化:物联网技术链条中目前都有开源趋势,尤其是操作系统的开源社区建设已经化身为各大厂商为自身建立生态圈的重要手段之一了。
我们今天的主角Lite OS,就是专门为物联网时代设计的操作系统。
LITE OS初体验
LiteOS 是华为面向IoT领域,构建的轻量级物联网操作系统,遵循BSD-3开源许可协议,可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域,大幅降低设备布置及维护成本,有效降低开发门槛、缩短开发周期。总体来说Lite OS的开发体验相当不错,只要打开相应的CUBE工程将完成编译下载之后
并把开关拨到AT-MCU模式,后就可以操作PC上的串口与USART1的连接了。
打开Github仔细学习一下Lite OS其内核的架构如下:
包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,可以单独运行。做为大厂中最早发布的物联网OS,Lite OS最主要的优势就是高实时性(软RTOS)、高稳定性以及低功耗。
笔者看了一下Lite OS有关任务调度的源码,发现还是很有亮点的。比如其任务状态迁移图如下:
也放弃了一般操作系统中将任务指定内核运行的调度操作,节约了spinlock的资源。是非常简练而且巧妙的设计。以LOS_TaskReseme为例其代码及说明注释如下
LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskResume(UINT32 uwTaskID)
{
UINTPTR uvIntSave;
LOS_TASK_CB *pstTaskCB;
UINT16 usTempStatus;
UINT32 uwErrRet = OS_ERROR;
if (uwTaskID > LOSCFG_BASE_CORE_TSK_LIMIT)
{
return LOS_ERRNO_TSK_ID_INVALID;
}
pstTaskCB = OS_TCB_FROM_TID(uwTaskID);
uvIntSave = LOS_IntLock();
usTempStatus = pstTaskCB->usTaskStatus;
if (OS_TASK_STATUS_UNUSED & usTempStatus)
{
uwErrRet = LOS_ERRNO_TSK_NOT_CREATED;
OS_GOTO_ERREND();
}
else if (!(OS_TASK_STATUS_SUSPEND & usTempStatus))
{
uwErrRet = LOS_ERRNO_TSK_NOT_SUSPENDED;
OS_GOTO_ERREND();
}
//以上为任务状态检查
pstTaskCB->usTaskStatus &= (~OS_TASK_STATUS_SUSPEND);//清除任务的suspend标志位置
if (!(OS_CHECK_TASK_BLOCK & pstTaskCB->usTaskStatus) )//若任务的还自在阻塞状态则变为就绪状态 ,并调用 LOS_Schedule()进行调度
{
pstTaskCB->usTaskStatus |= OS_TASK_STATUS_READY;
LOS_PriqueueEnqueue(&pstTaskCB->stPendList, pstTaskCB->usPriority);//任务优先级usPriority调整
if (g_bTaskScheduled)
{
(VOID)LOS_IntRestore(uvIntSave);
LOS_Schedule();
return LOS_OK;
}
g_stLosTask.pstNewTask = LOS_DL_LIST_ENTRY(LOS_PriqueueTop(), LOS_TASK_CB, stPendList); /*lint !e413*/
}
(VOID)LOS_IntRestore(uvIntSave);
return LOS_OK;
LOS_ERREND:
(VOID)LOS_IntRestore(uvIntSave);
return uwErrRet;
}
而且在其SDK中还直接实现了MQTT等通讯协议,整体成熟度很高。
Lite OS与华为OceanConnect云服务的无缝结合
华为OceanConnect的架构如下:
使用Lite OS的设备在华为云服务中进行简单注册并实名认证之后后(网址:https://www.huaweicloud.com/product/iot.html)就能使用体验功能感受物联网+云计算的强大了。笔者试着配置了一个体验版的智慧路灯,按照官方文档一步步操作,总体没遇到什么卡壳的地方,感觉非常不错。
后记
目前,物联网产业在中国还是处于前期的概念导入和产业培育期,没有形成成熟的技术标准和完善的技术体系,整体产业处于爆发前的酝酿阶段。由于涉及的产业链过长,所以在没有云计算技术的帮助下规模效应难以显现。而目前各大厂商的物联网产品已经日趋成熟,物联网产业的成长效应开始显现。
据推测,物联网的终端数量是目前互联网节点数量的30倍,这一规模也预示着物联网潜在的巨大商机难以估计。2018年整行行业产值已经突破万亿,可谓腾飞在即。