1、背景

    随着人工智能的迅速发展,智能家居的时代已经到来,除了智能安全防盗门、智能门锁,智能音箱等市场快速增长外,智能猫眼行业异军突起,成为智能家居板块的重要品类。房门作为每个房子的入口,其智能化改进空间远不止门锁。智能入户安全是一套解决方案,不仅门锁需要智能化,猫眼这个需求本身也是和入户安全息息相关,或许会是智能家居最主要的入口之一。

    据新思界产业研究中心发布的《2019-2025年中国智能猫眼行业市场深度评估及市场前景预测报告》[1],2017年全球智能家居设备在市场上的销售量为6.63亿台,预计到2023年,智能家居设备销售量将达到19.4亿台,超过智能手机销售量。自2014年以来,在智能家居市场的驱动下,智能猫眼市场膨胀速度惊人。据数据显示,2016年中国智能猫眼出货量超过60万台,同比增速超过40%,到2017年智能猫眼出货量超过110万台。

    单从这个数据来看倒也不用大惊小怪,但是如果我们换个角度从时间的维度来分析就会发现从2015年线上销售20万台到2017年的110万台,短短两年的时间整个销售数据却增加了5倍还多。而目前国内真正具有研发生产能力的电子猫眼厂家却屈指可数,整个市场已经出现了供不应求的局面,可见电子猫眼行业目前正处于红利期与爆发期。

    目前的智能猫眼一般具有红外夜视、移动侦测、Wi-Fi控制等。红外夜视功能是在子机内置了红外夜视灯,这样在晚上也能清晰的看清来访者。移动侦测即PIR人体感应当有人经过门前时会自动启动拍照或者录像功能记录来访者。Wi-Fi功能则可以实现手机与猫眼的远程连接,配合移动侦测功能当有人在门外移动时会自动推送信息到主人的手机上,但是目前具有Wi-Fi功能电子猫眼的功耗普遍较高,待机时间偏短,一个月可能就需要更换一次电池。

    智能猫眼的待机功耗主要是红外摄像头及其相应的电路,而移动侦测功能检测到有人经过门前时会自动启动猫眼内的摄像头进行拍摄或者录像功能记录来访者图像或视频,并且并且还要显示在屏幕上;因此,启动速度将会是影响功耗的重要原因。另外,为了实现防盗或安防的目的,当人体经过时需要即时完成启动并抓拍图像;人体经过摄像头的时间通常可能小于2秒钟,因此对启动速度提出了更高的要求。传统的Linux操作系统虽然全球通用,但也有其难以弥补的缺陷。Linux操作系统有庞大的内核,对任何中断指令的响应都需要一个复杂的处理过程,对一些需要快速响应的场合显得有些力不从心,系统重启更需要好几十秒。而RTOS实时操作系统内核小巧,对任何中断指令都可以做到马上响应,系统启动时间则只有几秒钟。因此如智能猫眼类的IPC(IP Camera)领域大量采用RTOS实时操作系统来保证系统的快速响应与高可靠性。

采用了RTOS实时操作系统的IPC设备可以在无需工作时进入深度休眠,一旦需要再快速启动,这种真待机功能为IPC设备大大降低功耗,提高IPC设备的待机时间。

2、竞品分析

    传统的RTOS操作系统相较于Linux系统具备快速启动的优势,启动时间可以达到1秒以内,如RTT Smart启动时间可以做到500 ms [2]。但这对于大多电池供电的IPC设备而言,启动时间仍然过长;因为IPC设备启动过程的电流高达几百毫安,因此启动时间的长短将对IPC设备的电池更换或充电频率仍然带来相当严重的影响。

图2-1 Linux

    传统RTOS的启动流程如图2-2所示,启动过程分成若干阶段,每个阶段完成不同的初始化操作。设备上电或重启或唤醒首先进入RESET入口函数,完成必要的CPU工作模式和系统栈初始化操作,接着进入RTOS内核入口再完成一系列硬件初始化操作;这些操作全部串行进行,如图2-2中完成pre_hw_1_init的初始化操作之后,再进行pre_hw_2_init的初始化操作;另外,硬件的初始化操作大部分都是需要一定时间来等待硬件电路的真正初始化完成,如pre_hw_1_init完成对应硬件寄存器写入操作之后,还需要等待对应的硬件真正完成初始化之后才可以进行后续硬件pre_hw_2_init的初始化操作,即使pre_hw_1_initpre_hw_2_init没有依赖关系。传统的RTOS启动模型导致启动时间的进一步优化相当困难,因为硬件必须要确保真正完成初始化之后才可以进行相关操作,否则会带来不确定的错误。

图2-2 RTOS

    如果需要进一步降低RTOS的启动速度,进而降低IPC设备的待机时间,提高IPC设备的用户体验,传统RTOS的初始化模型将举步维艰。微内核AliOS Things引入了一种新的系统启动模型,启动时间相较于传统RTOS的启动时间降低一个数量级。

3、AliOS Things启动加速引擎

    传统RTOS的串行化启动模型,导致不同的初始化过程只能一个接一个的初始化,系统启动的总时间等于所有操作和等待硬件完成相关设置的时间,如图2-2中的,而其中大部分时间都是等待硬件完成相关设置的时间。而阶段内部的大部分初始化操作都是不相关的,完成可以并行化操作,也即pre_hw_1_init完成相关寄存器的读写操作后,在等待与pre_hw_1_init相关硬件完成具体设置的过程中进行pre_hw_2_init的初始化操作,这样与pre_hw_1_initpre_hw_2_init相关具体硬件设置等待时间就可以重合,阶段的总用时就可以由降低为,模型如图3-1所示。

 图3-1 AliOS Things Bengine模型图

    Bengine提高初始化注册接口供系统按照不同的优先级注册初始化函数,相同优先级的初始化函数之间没有依赖关系,相同优先级的初始化函数由Bengine根据具体的执行时间负责分组,保证不同不同组之间的初始化函数的总用时均匀分布,同时确保所有高优先级的初始化函数执行完毕之后才会执行次优先级初始化例程。

图3-2 AliOS Things Bengine架构图

  • init mgmt: 提供初始化例程的注册功能,注册时可以根据时间需要指定初始化例程的优先级;
  • init grouping: 对相同优先级或相同阶段的初始化例程按照执行时间进行分组,保证每个组内的初始化例程总用时基本相同;
  • grp scheduler: 对不同的分组启动多任务调度,同时保证所有的分组都执行完毕之后,再去处理次优先级的初始化阶段;
  • grp schuduler: 不同的分组调度到不同的任务执行;
  • grp sync: 不同分组的任务执行完组内的初始化例程之后,完成与调度器之间的同步,便于调度器处理次优先级的初始化例程;
  • lockfree ipc: 采用高速并行化的IPC通信机制,保证初始化任务之间的高速并行,相互之间无干扰;
  • bengine stat: 性能统计和初始化例程的执行时间统计;

    相较于传统的RTOS启动流程,Bengine的启动模型需要相关驱动进行简单的修改,但不牵涉到具体算法和驱动框架的修改,只是在驱动需要等待硬件完成相关设置时,主动让出CPU的执行权限(如图3-3中的红色标注的 sleep或者 sw_wait_for_sem操作),以便于让其他初始化获得执行的机会,具体改造示例如图3-3所示。

图3-3 Bengine代码示例

4、测试数据

    采用Bengine加速引擎的微内核AliOS Things与某厂商合作的IPC设备系统启动时间如图4-1所示,整个内核+驱动的启动总用时为57ms左右,相较于传统RTOS启动耗时500 ms基本降低了一个数量级;

图4-1 AliOS ThingsBengine

开发者支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。

更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com

如何将RTOS系统启动时间做到“毫秒级”?AliOS Things是这样做的相关推荐

  1. Qt 打印时间 毫秒级

    Qt---打印系统时间,毫秒级 //获取当前时间 QDateTime current_date_time = QDateTime::currentDateTime(); QString current ...

  2. 兴业银行与第四范式开启AI平台加速模式 毫秒级信用卡反欺诈系统上线

    近日,基于第四范式为兴业银行打造的低门槛.自动化的人工智能平台,兴业银行信用卡中心推出了毫秒级智能交易反欺诈系统,实现了对信用卡欺诈风险自动化.智能化.精确化的甄别与管控,为信用卡用户提供最安全.可信 ...

  3. 第四范式推出业界首个基于持久内存、支持毫秒级恢复的万亿维线上预估系统...

    线上预估服务是AI在企业应用落地的关键环节,企业通常会采用分布式计算架构在内存中完成实时数据处理和高达万亿维的模型特征存储,并通过多集群副本解决传统纯内存(DRAM)天生的易"失" ...

  4. 毫秒级预测,性能卓越!检测、跟踪、行为识别都搞定!这套行人分析系统重磅开源!...

    行人检测跟踪计数.人员行为分析.人员属性分析.人员操作及穿戴合规监测等场景化能力在工业.安防.金融.能源等行业有着极其广泛的应用需求.以深度学习视觉技术为核心的行人分析能力,则是以上任务的核心关键,也 ...

  5. php站群系统,ThinkPhp内核逐鹿泛目录站群系统 毫秒级加载速度 丰富的内容库搭配(价值8000元)...

    [温馨提示]源码包解压密码:www.youhutong.com 资源描述 ThinkPhp内核逐鹿泛目录站群系统 毫秒级加载速度 丰富的内容库搭配(价值8000元) 源码介绍: 逐鹿泛目录站群完整源码 ...

  6. 毫秒级精度计划任务管理、系统运维管理、定时执行任务、定时任务执行、任务定时执行软件 —— 定时执行专家

    目录 一.使用教程 1.软件下载 2.软件的安装方法 3.软件第一次运行,选择界面语言 4.设置软件开机启动,自动运行.自动隐藏(自动隐身运行) 二.软件简介 1.支持 23 种任务类型 2.支持 1 ...

  7. c++获取系统时间戳和unix时间(毫秒级)

    前一段时间工作需要用到毫秒级的时间戳,就百度了一下,网上都有,现在我把它封装一下给大家方便使用. 先上代码:(我使用的IDE:VS2017) #include <windows.h> #i ...

  8. 充电桩软件设计之RTOS 系统选择

    充电桩软件设计之RTOS 系统选择 1.是否需要RTOS? 在选择之前可以问问以下几个问题: 1.系统对一些事件的响应延迟时间有要求吗?该时限在微秒级. 2.系统对一些事件的处理有时限要求? 该时限接 ...

  9. linux 获取启动时间不对,linux获取系统启动时间

    1.前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同.linux内核里面用一个名为jiffes的常量来计算时间戳.应用层有time.getdaytime等函数.今天需要 ...

最新文章

  1. java~mac下的终端工具oh-my-zsh
  2. mysql using btree_mysql导入数据时提示 USING BTREE 错误解决办法
  3. Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完整开发环境 (准备工作)...
  4. LeetCode题解之Reorder List
  5. 微信小程序开发系列七:微信小程序的页面跳转
  6. ionic更改端口号
  7. kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能)
  8. techempower之Plaintext上7百万RPS
  9. python selenium对象怎么序列化_python selenium爬取斗鱼
  10. sqlyong的一个bug(代号2013)
  11. Windows Phone 7 不温不火学习之《Expression Blend 创建渐变效果和创建Storyboard动画》...
  12. chr() 、ord()
  13. 这5款电影资源网站,让人第一眼就心动,第二眼就流连忘返!
  14. oracle如何把误删的数据恢复,oracle误删数据恢复方法小结
  15. java异地登录验证_同一帐号异地登录
  16. java给文件777权限_Linux常用命令:chmod修改文件权限 777和755分别是什么意思?
  17. 拍沪牌服务器响应,上海虹口代拍沪牌费用,百兆光线实时响应
  18. 【纯净版windows系统】U盘启动制作图文教程
  19. 机器人编程趣味实践20-版本课程(教学)
  20. 两个系统怎样使用通用的接口来对接

热门文章

  1. python在哪里设置改成中文版_pycharm如何设置成中文
  2. ios应用数据存储方式(偏好设置)-转
  3. JAVA RPG游戏
  4. 阿里云服务器到期会提醒吗
  5. MySQL - 03DDL之数据表
  6. c语言error c2198,为何会出现error C2198: 'create' : too few actual parameters呢?
  7. vue手机端项目自适方案
  8. 新款文章,绝无仅有!微信语音aud文件转换为mp3格式
  9. 邹欣对话图灵奖得主Jeffrey Ullman:数据库不会进入周期性的坏循环 |《新程序员》
  10. 华为项目管理法读书笔记