软件升级之我见

简介:                                                               软件升级之我见        对于嵌入式产品软件升级功能是必不可少的,如何确保软件升级的安全性、便捷性显得非常重要。

                                                              软件升级之我见

 

     对于嵌入式产品软件升级功能是必不可少的,如何确保软件升级的安全性、便捷性显得非常重要。笔者以机顶盒产品为例谈一谈对软件升级功能的体会。产品的软件要升级,首先需要获取升级的软件,而获取升级软件的途径目前主要有通过网络下载到该产品,或者通过USB存储器。在国内的机顶盒产品中,常见的是运营商把升级软件嵌入运营的有线网络中,由机顶盒检测升级标志位判断是否从有线网络中下载新软件,通过这种方式获取的软件安全性高、防攻击能力强;而销售到国外市场的机顶盒要升级软件,用户可以通过销售商获取新软件再通过USB升级软件,这种方式也算比较简便。对于有internet功能的机顶盒,获取新软件的最方便的方式莫过于通过因特网,全面进行后台操作,由用户决定是否使用新软件即可。接下来将重点介绍笔者作为主要设计人员开发的软件升级模块。

    对于一个开放的机顶盒市场,机顶盒没有被运营商强行指定使用哪种产品,当然销售到该地区的机顶盒也不大可能把升级软件发到运营商网络中进行软件升级。笔者参与开发的产品定位海外,有internet功能,因此在软件升级模块(俗称loader)设计了通过因特网升级软件,以及通过USB进行软件升级。

      软件升级的具体操作跟软件打包工具是息息相关的,也可以说是一个逆过程,因此要做好loader,首先得做好升级软件制作工具。在升级软件打包制作工具中,笔者嵌入了软件版本号、硬件版本号、工厂ID、设备ID、软件日期等信息,并对其做CRC校验,对于纯软件数据(如uboot、kernel、filesystem)根据flash类型及BLOCK大小来打包成小section,对该section做一次CRC,当所有纯软件数据打包完以后,再对前面section所有的CRC数据再做一次CRC,这样就可以确保升级软件数据的完整性、准确性。

   首先来说一下通过USB升级软件的功能。用户获取了新软件存在U盘中,只要用户将此U盘插入机顶盒即可升级。在机顶盒软件的UBOOT中,开机检测有无USB设备,若有USB设备则检测特定名称的升级软件是否存在,如果存在则读入DDR中,对读入DDR中的软件版本号、硬件版本号、工厂ID、设备ID、软件日期等信息进行比较,计算CRC,确保软件数据的正确性、完整性,然后再写入flash中。

   而通过internet升级软件的功能则要稍稍复杂一些,首先获取软件要做到对用户透明、后台操作。由于使用的flash为NAND FLASH,所以存储空间不需要考虑。在下载新软件的的时候,首先将通过加密手段确保机顶盒跟服务器之间建立一条安全通道,下载的数据可以支持断点续传。当全部数据通过后台下载完毕时,通知用户是否升级新软件,用户一旦确认则设置软件升级标志位。在机顶盒重启时,检测该标志位,如果需要升级软件,则在uboot中奖升级软件从文件系统中加载到DDR中,其他处理跟通过USB升级一样。这种升级方式涉及软件加密及网络断点续传等技术,以及uboot控制能力,要做好此功能,需要严格测试。

   软件升级要考虑升级软件的便捷性、安全性、可靠性、可持续性。

 

目录
相关文章
|
运维 安全 数据处理
运维服务体系架构
【2月更文挑战第28天】构建数据中心的IT运维服务体系,需整合资源,规范行为,确保服务质量。该体系基于ITIL和ITSS标准,全面覆盖IT服务生命周期和业务类型,统筹规划并保持科学权威。体系由制度、流程、组织、队伍、技术平台和运维对象六部分组成,制度规定流程,组织和人员遵循制度执行标准化运维。重点包括运维服务制度与流程的制定、专业团队的建设和统一的工作流程,以及运用技术平台进行规范化管理。
|
传感器 机器学习/深度学习 人工智能
多模态大模型代表了人工智能领域的新一代技术范式
多模态大模型代表了人工智能领域的新一代技术范式
119 2
|
存储 机器学习/深度学习 前端开发
Git 中文参考(六)(5)
Git 中文参考(六)
80 0
|
JSON 自然语言处理 数据挖掘
4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取
4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取
|
测试技术 数据库
让你提前认识软件开发(43):软件产品升级流程
第3部分 软件研发工作总结 软件产品升级流程           一个软件产品做出来之后,并不是说永远都不用变了。基于以下的种种原因,我们需要对原软件产品进行升级:         (1) 用户对软件功能提出了新的要求,现在运行的软件不能满足用户的新需求。
1524 2
|
JavaScript 开发工具 git
《Node.JS学习—上篇》Visual Studio Code的使用—如何创建基本的Node.js + Express 应用
一、创建Express的项目 最近学习了一点点node.js,参与写了一下公司小程序的抽奖活动相关的接口,俺也是一个会写接口的移动端开发工程师了,哈哈,在此分享一下自己的学习经验,供初学者参考。
2827 0
|
监控 关系型数据库 MySQL
|
应用服务中间件 网络安全 nginx