OTA下载控制方法、装置及介质与流程
本发明涉及嵌入式系统软件升级,特别是涉及一种ota下载控制方法、装置及介质。
背景技术:
1、在搭载图形用户界面的嵌入式设备中,应用级ota(over-the-air)软件升级通常采用双进程协同架构。在该架构下,图形用户界面(gui)主进程负责响应用户交互、展示升级进度及管理升级状态;当触发升级任务时,gui主进程通过系统接口以提权及独立进程组方式启动shell脚本子进程,由该脚本子进程以前台阻塞方式调用下载工具(例如curl或wget)从远程服务器拉取大体积升级包文件,并由脚本子进程在下载完成后继续执行包体校验、解压及安装操作。
2、在通用操作系统及shell运行环境中,shell脚本的信号捕获机制(例如bash的trap机制)存在固有的执行时机限制:当脚本子进程正在等待前台命令执行完成时,外部发送给shell脚本的终止信号会被挂起,直到该前台命令自然退出后,预设的清理例程才获得执行机会。若gui主进程在接收到用户发起的暂停请求后直接对整个进程组发送强制终止信号(sigkill),下载工具虽能立即停止,但脚本子进程无法捕获该信号,导致退出清理例程被跳过,已下载的半截升级包状态未明且临时标记残留,破坏了文件系统的状态一致性;若向多级启动链路发送常规终止信号(sigterm),又极易因提权工具转发及进程组拓扑隔离导致信号无法准确送达前台下载工具,出现下载进程持续占用网络带宽及存储资源的失控现象。
3、此外,在网络故障或设备异常断电导致升级中断的场景中,现有的断点续传机制通常直接依据本地已存在文件的字节长度向服务器发起范围请求。若此前写盘操作在中途受到强杀或异常掉电影响,本地残留的半截升级包可能出现物理尺寸已达到预期总大小但内部数据已损坏的异常工况。在此情况下,常规断点续传工具会误判文件已完整下载而直接退出,进而导致后续的完整性终校验失败;而在故障恢复循环中再次拉起续传时,依然会重复上述判定,从而引发无法自动恢复的重试死循环。
技术实现思路
1、本发明实施例提供了一种ota下载控制方法、装置及介质,针对现有双进程架构在执行前台下载时,受限于脚本信号处理被前台命令阻塞的机制,导致外部暂停指令无法在下载中途即时生效,而强杀进程组又会跳过清理逻辑导致半截升级包状态失控、无法可靠续传,并在断电或异常中断后极易因伪完整坏包引发续传死循环等问题。
2、本发明核心技术主要是在脚本子进程前台运行下载工具前预先启动独立的后台哨兵子进程以轮询检测磁盘持久化暂停标记并定向终止下载工具,在下载工具退出后由脚本退出清理程序依据磁盘阶段标记分流执行半截包保留与现场清理,并在断点续传前对达到预期尺寸的本地半截包执行完整性预校验以自愈损坏包。
3、第一方面,本发明提供了一种ota下载控制方法,所述方法包括以下步骤:
4、响应于升级触发指令,通过gui主进程启动脚本子进程,并由脚本子进程以前台方式执行下载工具以进行升级包下载,其中,脚本子进程在执行下载工具前启动后台运行的哨兵子进程;
5、响应于暂停请求,通过gui主进程在存储介质的预设路径下创建持久化的暂停标记文件,存储介质中维护有用于指示升级阶段的阶段标记,阶段标记至少包括暂停标记文件;
6、哨兵子进程周期性轮询预设路径,并在检测到暂停标记文件时,向下载工具发送终止信号,以使处于前台运行状态的下载工具响应终止信号而退出;
7、下载工具退出后,触发脚本子进程执行预先注册的退出清理程序,退出清理程序根据阶段标记进行分流处理,当检测到暂停标记文件时,保留已下载的半截升级包并控制脚本子进程退出;
8、响应于恢复指令,通过gui主进程清除暂停标记文件,并重新启动脚本子进程,以从半截升级包的断点继续下载升级包。
9、进一步地,响应于暂停请求,通过gui主进程在存储介质的预设路径下创建持久化的暂停标记文件之后,还包括:通过gui主进程向脚本子进程所在的进程组发送终止信号;
10、由gui主进程向进程组发送终止信号的主通道,与由哨兵子进程轮询暂停标记文件并向下载工具发送终止信号的兜底通道并行执行,通过最先送达下载工具的终止信号触发下载工具退出;
11、gui主进程在接收到暂停请求并置位暂停意图标志期间,主动屏蔽下载进度超时监控处理逻辑,以使暂停流程优先于超时判定。
12、进一步地,哨兵子进程在后台运行期间,通过向脚本子进程发送探针信号以探测脚本子进程的存活状态,当检测到脚本子进程退出时,哨兵子进程自动退出;
13、向下载工具发送终止信号,包括:哨兵子进程按照包含待下载升级包路径的命令行模式向下载工具精确匹配并发起终止信号;
14、下载工具正常完成下载后,脚本子进程在进入解压安装阶段前,依据记录的哨兵子进程的进程标识主动终止并回收哨兵子进程;
15、哨兵子进程周期性轮询预设路径的轮询周期为0.3秒。
16、进一步地,阶段标记包括下载阶段标记、暂停标记文件以及安装锁定标记;
17、退出清理程序根据阶段标记进行分流处理,包括:
18、在检测到暂停标记文件时,删除暂停标记文件与下载阶段标记,保留半截升级包,并以显式退出码退出脚本子进程;
19、在未检测到暂停标记文件且存在下载阶段标记时,删除半截升级包及下载阶段标记;
20、在检测到安装锁定标记时,保留安装现场,且通过gui主进程拒绝针对升级过程的取消请求与暂停请求;
21、其中,退出清理程序中阶段标记的删除操作先于文件的删除操作执行,且在存储介质处于无标记状态时默认放行退出。
22、进一步地,还包括断点续传前的预校验步骤:
23、在重新启动脚本子进程后且重新拉起下载工具前,当检测到本地已存在半截升级包且其文件尺寸大于或等于升级清单中的预期总尺寸时,计算半截升级包的校验哈希值,并将校验哈希值与升级清单中的期望哈希值进行比对;
24、若比对不匹配,则判定半截升级包为损坏包,删除半截升级包并切换为全量下载模式重新拉起下载工具进行下载;
25、若比对匹配,则放行进入后续阶段;
26、若半截升级包的文件尺寸小于预期总尺寸,则直接拉起下载工具执行断点续传。
27、进一步地,在重新启动脚本子进程前,gui主进程通过文件系统接口获取半截升级包在当前时刻的物理文件尺寸作为续传起始字节数,以与脚本子进程重新执行下载工具时向远程服务器发起的断点请求起点在同一时间锚定对齐;
28、脚本子进程在以断点续传模式执行下载的循环中,同时配置预设重试次数阈值和预设累计等待时间阈值;
29、当下载工具返回指示远程服务器不支持断点范围请求的错误码时,脚本子进程删除半截升级包并将下载模式自动降级为全量下载模式;
30、脚本子进程在每次发起重试前检测存储介质的剩余可用空间,在剩余可用空间低于预设存储阈值时退出下载循环并上报存储异常。
31、进一步地,当升级包包含多个待升级组件且各组件串行执行下载与安装时,进入当前组件的下载阶段时写入下载阶段标记,当前组件下载完成时清除下载阶段标记并写入安装锁定标记,当前组件安装完成或失败时清除安装锁定标记;哨兵子进程在每个组件进入下载阶段前启动,并在该组件下载结束后被回收;
32、当升级过程因异常中断重启后,gui主进程在初始化阶段扫描存储介质;若检测到安装锁定标记,则恢复锁定状态并探测脚本子进程是否存活;若不存在存活的脚本子进程,则判定安装锁定标记为崩溃残留,并在启动新升级任务前清除残留的阶段标记,对残留的半截升级包执行完整性校验以决定续传或重新下载。
33、第二方面,本发明提供了一种ota下载控制装置,包括:
34、升级启动模块,用于响应于升级触发指令,通过gui主进程启动脚本子进程,并由脚本子进程以前台方式执行下载工具以进行升级包下载,其中,脚本子进程在执行下载工具前启动后台运行的哨兵子进程;
35、标记创建模块,用于响应于暂停请求,通过gui主进程在存储介质的预设路径下创建持久化的暂停标记文件,存储介质中维护有用于指示升级阶段的阶段标记,阶段标记至少包括暂停标记文件;
36、哨兵控制模块,用于通过哨兵子进程周期性轮询预设路径,并在检测到暂停标记文件时,向下载工具发送终止信号,以使处于前台运行状态的下载工具响应终止信号而退出;
37、分流清理模块,用于在下载工具退出后,触发脚本子进程执行预先注册的退出清理程序,退出清理程序根据阶段标记进行分流处理,当检测到暂停标记文件时,保留已下载的半截升级包并控制脚本子进程退出;
38、续传控制模块,用于响应于恢复指令,通过gui主进程清除暂停标记文件,并重新启动脚本子进程,以从半截升级包的断点继续下载升级包。
39、第三方面,本发明提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的ota下载控制方法。
40、第四方面,本发明提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上述的ota下载控制方法。
41、本发明的主要贡献和创新点如下:
42、1.本发明通过在脚本子进程拉起前台下载工具之前预先启动独立的后台哨兵子进程,并以存储介质中的持久化标记文件作为跨进程指令信道,有效绕过了脚本进程运行前台命令时信号捕获例程被延迟执行的系统底层限制。当用户发起暂停时,哨兵子进程通过周期性轮询快速感知标记,并通过精准匹配向下载工具本体定向下发终止信号,促使前台下载工具迅速退出并及时将执行权移交给退出清理程序,大幅缩短了从指令下发到下载中断的响应时延,避免了因多级进程链路信号转发受阻导致的后台无效下载。
43、2.本发明通过由脚本退出清理程序读取不同阶段写入的持久化阶段标记,将进程终止转化为受控的退出流程。在检测到暂停标记时保留已下载的半截升级包供后续断点续传,在下载异常取消时清理残存包与下载标记,在解压安装阶段通过安装锁定标记阻断非法打断并保护安装现场。配合阶段标记优先于文件删除的执行顺序与无标记状态的默认放行策略,保障了清理逻辑的幂等性与原子性,有效防止升级现场状态混乱及无效残包对存储空间的异常占用。
44、3.针对设备在断电或异常终止时产生的“文件尺寸已达标但数据内容损坏”的特定工况,本发明在断点续传启动前引入了前置哈希预校验机制。当本地半截包尺寸大于或等于预期总大小时,先行核验其完整性,若校验失配则删除坏包并自动重置为全量下载模式,避免了传统断点续传工具误判文件已完整而秒退所导致的反复重试与校验失败死循环;同时该前置校验对正常未完成的截断包不增加额外计算开销,兼顾了续传效率与故障自愈容错能力。
45、4.通过在暂停标志置位期间主动屏蔽下载超时监控逻辑,消除了弱网长耗时等待下超时判定与暂停流程的竞态冲突,避免因超时逻辑抢先介入而导致正常暂停被误判为升级失败;在恢复续传时通过文件系统实时重新读取半截包物理尺寸作为续传起点,使界面显示的进度与底层实际发起的断点请求范围同步;此外,哨兵子进程通过存活探针实现随父脚本退出而自动终止,并在正常下载结束后由脚本显式回收,避免了后台孤儿进程泄漏与空转资源损耗。
46、本发明的一个或多个实施例的细节在以下附图和描述中提出,以使本发明的其他特征、目的和优点更加简明易懂。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com