以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/M660Sc4ey1SxCpRT6vcM9g


what?

不知有多少朋友玩过或者接触过新能源车,虽然新能源囊括的范围很广,不过这里指的新能源车特指电动汽车,比如特斯拉等车企生产的电动车。

特斯拉车主应该对车载软件的自动更新功能很熟悉了,特斯拉会不定期通过wifi或者蜂窝网络(比如4G、5G信号网),向车主推送最新的车载软件升级包,里边既可能包含有新功能的添加,也可能包括有对现有功能的完善补丁,这里所用的技术就是OTA。

OTA, 英文全称Over-the-air,直译成中文就是无线升级的意思。OTA执行过程,是不需要设备生产厂家或者专业人士携带专用工具对目标产品执行软件更新的。需要的条件是,让设备接入网络,自动接收软件更新包后,在设备所有者的同意下执行升级操作。

好了,这就是所谓的OTA。

why ?

以往的电子产品,从设计阶段就会把整个产品的功能安排得明明白白,虽然也会预留OTA的升级功能,不过,仅是为了修补已有软件漏洞。

但是埃隆·马斯克就把互联网的产品思维引入汽车行业,不断开发迭代新软件功能,比如特斯拉一再宣称领先于同行的自动驾驶导航算法就不断地推出升级版本,甚至还有车载游戏推出,然后通过OTA的方式推送给特斯拉的客户。

以前的汽车,消费者更愿意把它当作出行工具,可能一买就是十年八载的事了。而现在的智能汽车除了不失出行的功能,更像是一件不断迭代变化的电子玩物工作站,随着新功能的不断推送,于是消费者更愿意提高消费频率为新功能埋单。

马斯克的造车思维开启了现代智能汽车时代,也对特斯拉的成就功不可没。这里边用到的OTA的技术就是必要的桥梁了。

how ?

好了,上面都是在费口水,下面把电动车换成扫地机,就以扫地机器人为例,让我们来探讨一下怎么玩OTA升级。

推送的更新包从哪来?

设备维护厂家负责跟踪对外已销售的产品质量反馈,及时收集客户的诉求,然后组织项目团队评估可行性和细节,再给研发团队制定目标并及时输出软件更新包,最后厂家还要负责把更新包发布到云端,并指定更新策略。

怎样开始推送呢?

假设扫地机器人已经和云端绑定上,云端查询后台推送开关已打开则通过网络通知APP--设备有软件更新包可用,然后APP提示客户是否需要此次更新。一旦同意,APP则请求云端把更新包的下载链接发送给设备,接着设备进入下载软件更新包的流程,下载完成后再执行升级的具体操作。

升级过程在做什么?

扫地机主机的升级

机器人从云端接收完软件更新包后,更新包暂存在内存中。为了避免升级过程中出现电量供应不足而中途关机的尴尬,升级开始之前,需要对机器的电量状态或者是否正在充电中进行自检,根据自检状态判断机器当前是否适合开始执行升级动作。

自检通过后,先对更新包文件做校验,以确保文件没有损坏或者被插入恶意文件信息,然后备份更新包文件(备份包的用处稍后解释),解压更新包提取里边的各个软件资源,逐一执行升级,同时每完成一步操作需要向云端报告进度,直到最后所有解压所得的资源都被升级利用完毕。

如果其中任何一步出错需要中止升级流程,机器人都需要向云端报告状态,由云端提示APP结束OTA升级流程。升级完成后,所有软件都需重启,所有重启完成后需向云端报告软件当前的新版本号,APP再根据新版本号判断升级目标是否达成。无论升级是否成功,机器人都需要在最后把已备份的更新包从机器内部清理掉,以清除未升级结束的标志。

如果升级过程中途断电了,那么重启后,可以依据备份的更新包文件是否存在来判断是否需要重新进入升级流程。

基站的升级

最近主流的扫地机都已经进化到配备有清洗基站了,何为清洗基站?

这个基站的工作目标是为了给扫地机器人自动清理尘盒和拖布等污损组件,尽量做到避免购买扫地机的消费者介入扫地机的清扫工作过程中,减轻消费者的不必要负担,进一步满足消费者的舒适需求。

以往的扫地机给普通消费者的体验就是,工作过程中,需要人工不断介入,帮助清理机器的污损组件,否则机器就不能好好连续工作。为了解决这些痛点,基站的诞生和功能迭代就势不可挡了。

鉴于主机已经带有wifi模组可以和云端直接通信,而且与云端正常通信之前必须经过绑定的过程,为了简化功能设计,基站其实可以通过主机和云端通信,所以没有必要在基站也配置wifi模组了。

那么,主机(扫地机器人主体)怎么和基站协同工作呢?它们之间靠什么来互通有无呢?

目前行业内的基站通信方案绝大部分都采用433的无线通信协议与扫地机主机通信,但是433的通信丢包率实际上是很高的,导致在OTA升级这种高要求的使用场景下,通信环节要格外关注通信质量的问题,因此应用层通信协议必须包含容错的重发机制。

你听说过OTA吗?的更多相关文章

  1. 商业研究(20):滴滴出行,进军海外包车?与OTA携程和包车创业公司,共演“三国杀”?看看分析师、投资人和权威人士等10个人的观点碰撞

     小雷友情提示:创业有风险,投资需谨慎.      前一篇文章,在探讨境外游创业公司-皇包车和易途8的时候,提到"滴滴如果进军海外包车,为海外华人提供打车和包车服务,有较大可能对海外包车公司 ...

  2. 我听说 C...

    我听说在 c 语言的世界里,goto 和异常处理都是声名狼藉的东西,而我认为它们在一起就能化解各自的问题.

  3. 听说你们要开始学C了

    同学们好: 先自我介绍一下,我是你们的助教吴喆(厚颜无耻地要求大家叫我吉吉老师:-D),本科学的电子,所以陆陆续续接触了不少C/C++的工作,曾经被编码折磨得死去活来,如今却对其念念不舍,颇有点“斯德 ...

  4. 使用HTTPS网站搭建iOS应用内测网站(OTA分发iOS应用)

    为什么要搭建应用内测网站呢? 1.AppStore的审核速度比较慢,万一被拒,还得等,而且一旦发布,任何人都可以下载,而有些时候只有老板想知道最新的修改是否符合要求,万一不符合要求呢?又要修改了. 2 ...

  5. [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?

    由于英语对于一个程序员来说,重要性你懂得.因此我会开始逐渐在博客上加入英语的一些东西. 听说不背单词,考英语会是这种下场 在中国, 「学英语」大抵遵循着这样一条 罗蒙诺索夫质量守恒定律 因为英语学着学 ...

  6. 听说你会打地鼠(动态规划dp)

    题目来源:https://biancheng.love/contest-ng/index.html#/41/problems G 听说你会打地鼠 时间限制:300ms   内存限制:65536kb 题 ...

  7. OTA(空中下载技术)

    选自:http://baike.baidu.com/link?url=bKOx4Gcgefi17Zt09pRA6zI-p7zzKVkoN07khRVTPfUtqyRMzdG5xURfpnp3wSP_A ...

  8. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  9. ALM/QC OTA Field in Database(查询ALM数据库的字段)

    在使用ALM的OTA接口编写脚本的时候,通常会需要知道各个选项在数据库中对应的字段,才能通过脚本读取或写入数据.比如要获取test case的step内容,要在测试结束时将测试实际结果写回test s ...

  10. ALM11 OTA API接口的问题

    ALM11 在安装的时候好像不会自动加载OTA接口. 正常情况下, OTA的接口文件的路径为: C:\Program Files\Common Files\Mercury Interactive\Qu ...

随机推荐

  1. SpringMVC 06: 日期类型的变量的注入和显示

    日期处理和日期显示 日期处理 此时SpringMVC的项目配置和SpringMVC博客集中(指SpringMVC 02)配置相同 日期处理分为单个日期处理和类中全局日期处理 单个日期处理: 使用@Da ...

  2. swagger访问url

    http://172.16.5.130:8080/swagger-ui.html 上面的ip:port 根据实际情况调换 如果设置了server.servlet.context-path 比如: se ...

  3. 在Windows客户端自动设置AD用户头像

    Windows现在可以设置用户头像,并在开始菜单显示.如果你安装了Exchange或者Lync,那么可以在Outlook或者Skype里看到用户的头像.这个图片是存储在AD用户属性里的.对于桌面电脑的 ...

  4. 《Java基础——break与continue用法详解》

    Java基础--break与continue用法详解       1. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不 ...

  5. kibana访问多个 Elasticsearch 节点间的负载均衡

    如果 Elasticsearch 集群有多个节点,分发 Kibana 节点之间请求的最简单的方法就是在 Kibana 机器上运行一个 Elasticsearch 协调(Coordinating onl ...

  6. 使用Prometheus和Grafana监控RabbitMQ集群 (使用RabbitMQ自带插件)

    配置RabbitMQ集群 官方文档:https://www.rabbitmq.com/prometheus.html#quick-start 官方github地址:https://github.com ...

  7. Elasticsearch单字段支持的最大字符数

    ignore_above的作用 ES中用于设置超过设定字符后,不被索引或者存储. 当字符超过给定长度后,能否存入 keyword类型的最大支持的长度为--32766个UTF-8类型的字符. 也就是说t ...

  8. Loki日志系统基础知识

    文章摘抄转载自:https://lluozh.blog.csdn.net/article/details/111027998 Loki 日志系统由以下3个部分组成: loki是主服务器,负责存储日志和 ...

  9. Docker MySql 查看版本的三种方法

    目录 Docker MySql 查看版本的三种方法 1.mysql -V命令查看版本 2.status命令查看版本 3.version命令查看版本 Docker MySql 查看版本的三种方法 1.m ...

  10. Opengl ES之FBO

    FBO介绍 FBO帧缓冲对象,它的主要作用一般就是用作离屏渲染,例如做Camera相机图像采集进行后期处理时就可能会用到FBO.假如相机出图的是OES纹理,为了方便后期处理, 一般先将OES纹理通过F ...