以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「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. [Python]-sklearn.model_selection模块-处理数据集

    拆分数据集train&test from sklearn.model_selection import train_test_split 可以按比例拆分数据集,分为train和test x_t ...

  2. Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复

    目录 一.系统环境 二.前言 三.etcd数据库 3.1 概述 四.安装部署etcd单节点 4.1 环境介绍 4.2 配置节点的基本环境 4.3 安装部署etcd单节点 4.4 使用客户端访问etcd ...

  3. .NET 7 SDK 开始 支持构建容器化应用程序

    微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要.显式 Docker 构建阶段. 这一决定背后的基本认知是简 ...

  4. 【debug】 Linux中top的使用

    在我们日常的开发中,我们经常需要查看每个线程的cpu使用情况.其实,在linux中,top也是我们查看cpu使用状况的一个好帮手 top:先查看每一个进程的使用状况 我们可以发现PID:3800这个经 ...

  5. 【微服务】- Nacos - 注册中心

    微服务 - 注册中心 - Nacos 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 上一 ...

  6. 示例:Ingress通过互联网访问应用

    Ingress Ingress 是 Kubernetes 的一种 API 对象,将集群内部的 Service 通过 HTTP/HTTPS 方式暴露到集群外部,并通过规则定义 HTTP/HTTPS 的路 ...

  7. Elasticsearch from/size-浅分页查询-深分页 scroll-深分页search_after深度查询区别使用及应用场景

    Elasticsearch调研深度查询 1.from/size 浅分页查询 一般的分页需求我们可以使用from和size的方式实现,但是这种的分页方式在深分页的场景下应该是避免使用的.深分页的页次增加 ...

  8. k3s部署全过程

    # 安装k3s博客 ## 准备工作 1.准备俩台可以相互访问的服务器 2.需要先安装dockers 3.以下教程将使用VsCode+ssh插件来进行插件图 ssh连接到俩台服务器 点击打开ssh操作界 ...

  9. 手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集(含源码)

    目录 前言 一.工具包位置 二.图像采集与色彩空间转换 1.文件读写 2.实现图片读取 3.使用算子cvtColor实现颜色空间转换 三.从摄像头采集图像 1.Camera类 2.属性节点 3.实现摄 ...

  10. [CG从零开始] 3. 安装 pyassimp 库加载模型文件

    assimp 是一个开源的模型加载库,支持非常多的格式,还有许多语言的 binding,这里我们选用 assimp 的 python 的 binding 来加载模型文件.不过社区主要是在维护 assi ...