CN115951909A - 一种片内动态加载应用软件的在线升级固化方法 - Google Patents
一种片内动态加载应用软件的在线升级固化方法 Download PDFInfo
- Publication number
- CN115951909A CN115951909A CN202310058363.XA CN202310058363A CN115951909A CN 115951909 A CN115951909 A CN 115951909A CN 202310058363 A CN202310058363 A CN 202310058363A CN 115951909 A CN115951909 A CN 115951909A
- Authority
- CN
- China
- Prior art keywords
- application software
- file
- app
- dll
- curing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种片内动态加载应用软件的在线升级固化方法,属于工业控制领域。本发明在RAM内申请一定大小的内存作为ApplicationSoftware地址空间,用于临时存储上传的应用软件数据;将闪存划定为3部分区域:一部分用于存储通用型引导镜像;一部分用于存储操作系统镜像;剩余部分地址空间保留。本发明无须使用片外存储设备,无须定制化开发通用引导程序,无须借助固化工具,仅依靠片内闪存,帮助用户解决嵌入式应用软件的在线升级、固化以及版本回退的难题。
Description
技术领域
本发明属于工业控制领域,具体涉及一种片内动态加载应用软件的在线升级固化方法。
背景技术
随着电子技术的飞速发展,电子设备集成度越来越高,集成化设备在各行各业中应用广泛。在实际工控领域,从产品的研制阶段,到产品的后期维护升级,都需要不断的改进和完善设备终端(下位机)用户软件,以适应新需求或优化产品性能,因而需要多次对设备终端用户软件进行升级。传统的嵌入式工业终端设备,由于硬件资源和环境条件的限制,在生产阶段就需要将软件代码固化,一旦设备交付就无法现场在线修改。当出现软件升级或故障调试需求,就必须拆开产品,将产品主控芯片的仿真器接口暴露出来,通过连接固化工具(仿真器)构建通讯链路,通过专业软件对程序进行更新;甚至须要在现场拆换设备板卡、替换局部程序存储设备或者将设备返厂。
为了能够满足用户持续变化的需求,延长产品的生命周期,工业控制领域逐渐改进产生了一些较为先进的升级固化方法,笔者将其归结为以下几类:
(1)二级引导升级固化方法
介于通用引导程序(例如Uboot、BootLoader以及PMON等)与系统镜像间设计一种二级引导程序,用于负责系统镜像的搬移与启动。
这种升级固化方式属于离线升级。因为系统镜像往往需要固化在闪存,系统镜像升级时需要设备断电并连接固化工具,操作流程较为复杂;用户也需要购置固化工具,增加硬件成本;操作系统与应用软件编译耦合在一起,一旦启动异常,系统将无法正常工作并退出。
当然这种方式优势也很明显,能够有效摆脱对通用引导程序的依赖,无须定制化修改通用引导程序;同时设备无须返厂,用户可在工业现场自行升级系统镜像。
(2)动态加载应用软件升级固化方法
随着计算机水平的提高,通用引导程序已经支持文件系统(例如FAT)管理,具备外部存储设备上的文件增、删、改、查功能。用户可以通过指令调用将系统镜像通过网络上传并固化到外部存储设备,供引导程序加载启动。
①操作系统与应用软件可以编译耦合在一起,直接由引导程序加载运行。但是这种情况下加载的系统镜像一旦启动异常,系统将无法正常工作并退出。
②操作系统与应用软件可以分开编译,将操作系统镜像与应用软件分别上传并固化到外部存储设备。设备上电,引导程序加载启动系统镜像,待操作系统启动后,利用动态加载技术装载、解析、调用以及卸载应用软件。
方式②与方式①相比较优势更为明显:首先,动态加载新版本应用软件失败返回错误后,操作系统可以继续正常运行,继续动态加载旧版本应用软件程序;其次,能够支持在线升级、固化与启动新版本应用软件的功能,无须断电;最后,操作系统与应用软件分离,对于故障问题的分析定位缩小了范围。当然,方式②实现存在技术难点,需要引导程序和操作系统支持的文件系统符合统一标准协议,否则无法交互访问。
(3)双启动区升级固化方法
嵌入式系统镜像存储器中划分有具有对等结构的A区和B区,系统的引导过程依次从A区和B区轮流进行,每次进行系统镜像升级则调换引导区域;系统镜像升级包更新的区域是当前非引导区域,即当系统从A区引导,则系统镜像更新至B区;反之,系统从B区引导,则系统镜像更新至A区。
该升级固化方法,使得系统镜像在程序存储器保存双备份,如果升级过程失败,可以从上一次成功启动的区域加载启动,具有鲁棒性。但是该方法不适用于外存或闪存较小的嵌入式终端,因为双启动区需要预留足够的存储空间,确保一定能存储下当前以及迭代升级的镜像数据,这就导致一定的存储浪费。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种片内动态加载应用软件的在线升级固化方法,以解决应用软件在线升级、固化与版本回退的难题。
(二)技术方案
为了解决上述技术问题,本发明提出一种片内动态加载应用软件的在线升级固化方法,该方法包括如下步骤:
步骤1:嵌入式终端设备上电,首先执行通用引导程序;完成硬件设备初始化以及内存空间的映射表的建立等,从而搭建操作系统运行的软硬件环境;然后搬移闪存内系统镜像数据至内存并完成PC指针跳转启动操作系统;
步骤2:操作系统启动后,接管嵌入式终端设备,同时完成FTP服务器初始化以及根文件系统挂接;
步骤3:系统启动后台任务自动检索RFS下是否有应用软件可执行文件,如果有则动态加载应用软件、解析并调用执行;如果没有应用软件可执行文件,则以用户约定的方式提示用户上传应用软件可执行文件;
步骤4:用户通过FTP指令的方式将预升级或上传的应用软件发送至设备终端,由系统后台任务负责接收并解析文件数据至Application Software地址空间;
步骤5:系统后台任务从Application Software地址空间提取应用软件有效长度数据内容写入RFS,存储为特定名称或版本的应用软件可执行文件App.dll文件;写入前,若已存在App.dll文件则将其备份为App.dll.bak,然后读取App.dll文件的数据获取MD5码,与Application Software地址空间存储的MD5码进行比对;如果MD5码数据相同,则表示应用软件上传成功;否则表示应用软件上传失败,由系统后台任务删除App.dll文件;
步骤6:应用软件上传成功后,如果正在运行应用软件,用户通过shell调用动态加载指令动态卸载当前正在运行的旧版本应用软件,然后调用指令动态加载、解析新版本应用软件App.dll,并调用执行命令恢复当前应用软件运行状态;如果没有运行应用软件,则直接调用动态加载指令加载、解析App.dll并调用执行。
进一步地,所述步骤2中,如果嵌入式终端不支持网口,则初始化其他特定的服务器。
进一步地,其他特定的服务器为RapidIO。
进一步地,所述步骤3中,提示方式为操作系统后台任务向上位机发送FTP提示日志文件、支持图形界面的终端显示弹窗、终端设备警鸣报警或者亮灯提示上传应用软件可执行文件。
进一步地,所述步骤5中,备份前,若已存在App.dll.bak文件,则将其直接删除。
进一步地,所述步骤5在删除App.dll文件时,若存在App.dll.bak文件,则将其重命名回App.dll。
进一步地,操作系统正常可访问操作的地址空间包括随机存储器RAM、闪存;在RAM内申请一定大小的内存作为Application Software地址空间,用于临时存储上传的应用软件数据;将闪存划定为3部分区域:一部分用于存储通用型引导镜像;一部分用于存储操作系统镜像;剩余部分地址空间保留,待操作系统启动后由根文件系统RFS统一管理,负责对应用软件可执行文件进行增、删、改、查。
进一步地,通用型引导镜像和系统镜像在硬件设备出厂或交付时借助固化工具一次性烧写到闪存内。
进一步地,在上位机编译生成的应用软件可执行文件前添加文件头,共32字节;其中,0-3字节存储应用软件可执行文件的有效长度;4-15字节为预留扩展空间,填充空/无效数据;16-31字节存储应用软件可执行文件的MD5校验码;文件尾部补0,实现地址对齐。
进一步地,硬件设备出厂或交付时,由厂家利用固化工具一次性固化通用引导和系统镜像,用户仅需维护升级应用软件。
(三)有益效果
本发明提出一种片内动态加载应用软件的在线升级固化方法,将操作系统与应用软件分离,在不使用任何外部存储设备(例如硬盘、SD卡、U盘等)与固化工具(例如JTAG、FlashTool)的情况下,最大化利用片内存储,有效解决应用软件在线升级、固化与版本回退的难题。
本发明无须使用片外存储设备,无须定制化开发通用引导程序,无须借助固化工具,仅依靠片内闪存,帮助用户解决嵌入式应用软件的在线升级、固化以及版本回退的难题。
本发明在线升级时,新版本应用软件动态加载、解析或者调用失败,均可以通过指令调试,不会影响嵌入式操作系统的执行;同时,整个升级过程无须断电、拆除设备或者借用固化工具,完全在线操作。
附图说明
图1为本发明的地址空间分配;
图2为本发明的系统镜像文件格式;
图3为本发明的动态加载应用软件及在线升级、固化、版本回退流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明涉及工业控制领域,提供一种具有嵌入式操作系统的嵌入式计算机的应用软件在线升级固化方法。本发明设计的在线升级固化方法,将操作系统与应用软件分离,在不使用任何外部存储设备(例如硬盘、SD卡、U盘等)与固化工具(例如JTAG、FlashTool)的情况下,最大化利用片内存储,有效解决应用软件在线升级、固化与版本回退的难题。
32位操作系统正常可访问操作的地址空间大小为4G,包含随机存储器(RAM)、闪存(FlashMemory)以及其他地址空间。RAM为引导程序、操作系统以及其他运行中程序的临时数据存储介质;闪存为一种长寿命的非易失性存储器,具有断电保存数据的物理属性,可用于固化引导、系统镜像以及应用软件程序。本发明划定的地址空间分布如图1所示。
在RAM内申请一定大小的内存作为Application Software地址空间,用于临时存储上传的应用软件数据。
将闪存划定为3部分区域:一部分用于存储通用型引导镜像(比如:Uboot、BootLoader以及PMON等);一部分用于存储操作系统镜像;剩余部分地址空间保留,待操作系统启动后由根文件系统(Root File System,简称RFS)统一管理,负责对应用软件可执行文件进行增、删、改、查。其中,通用型引导镜像和系统镜像可以在硬件设备出厂或交付时借助固化工具一次性烧写到闪存内,因为用户并不需要关注或者升级引导程序以及操作系统。
应用软件上传文件打包数据格式
为方便校验上传和固化应用软件可执行文件数据的正确性,本发明在上位机编译生成的应用软件可执行文件(通常为.a、.dll或者.lib文件)前添加文件头,共32字节。其中,0-3字节存储应用软件可执行文件的有效长度;4-15字节为预留扩展空间,填充空/无效数据;16-31字节存储应用软件可执行文件的MD5校验码。文件尾部可以补0,实现地址对齐。最终上位机打包上传的应用软件可执行文件格式如图2所示。
在线升级与固化方法核心优势
针对现有升级固化技术中存在的优缺点,本发明的目的在于提供一种新型动态加载嵌入式应用软件的在线升级固化方法。本发明无须使用片外存储设备,无须定制化开发通用引导程序,无须借助固化工具,仅依靠片内闪存,帮助用户解决嵌入式应用软件的在线升级、固化以及版本回退的难题。
本发明不仅适用于存储空间充裕的嵌入式终端,同样适用于存储空间有限的嵌入式设备,甚至适用于只用CPU片内存储的嵌入式设备;相对于“双启动区”升级固化方法对存储器的使用率更高。
在线升级与固化方法实现
硬件设备出厂或交付时,由厂家利用固化工具一次性固化通用引导和系统镜像,用户仅需维护升级应用软件。
步骤1:嵌入式终端设备上电,首先执行通用引导程序。完成硬件设备初始化以及内存空间的映射表的建立等,从而搭建操作系统运行的软硬件环境;然后搬移闪存内系统镜像数据至内存并完成PC指针跳转启动操作系统。
步骤2:操作系统启动后,接管嵌入式终端设备,同时完成FTP(File TransferProtocol——文件传输协议,是TCP/IP协议组中的协议之一,具备数据校验与数据重传机制,能够确保数据传输的正确性)服务器初始化以及根文件系统挂接。
如果嵌入式终端不支持网口,则可以初始化其他特定的服务器(比如RapidIO)。
步骤3:系统启动后台任务自动检索RFS下是否有应用软件可执行文件,如果有则动态加载应用软件、解析并调用执行;如果没有应用软件可执行文件,则以用户约定的方式提示用户上传应用软件可执行文件。
提示方式可以为操作系统后台任务向上位机发送FTP提示日志文件;支持图形界面的终端可以显示弹窗;终端设备警鸣报警或者亮灯提示上传应用软件可执行文件等。
步骤4:用户可以通过FTP指令的方式将预升级或上传的应用软件发送至设备终端,由系统后台任务负责接收并解析文件数据至Application Software地址空间。
步骤5:系统后台任务从Application Software地址空间提取应用软件有效长度数据内容写入RFS,存储为特定名称或版本的应用软件可执行文件(比如App.dll文件;写入前,若已存在App.dll文件则将其备份为App.dll.bak(备份前,若已存在App.dll.bak文件,则将其直接删除)),然后读取App.dll文件的数据,获取MD5码,与Application Software地址空间存储的MD5码(首地址偏移16~31字节数据)进行比对。获取MD5码的方法为:读取可执行文件数据内容后,系统调用相关接口函数来计算得到MD5码。如果MD5码数据相同,则表示应用软件上传成功;否则表示应用软件上传失败,由系统后台任务删除App.dll文件(若存在App.dll.bak文件,则将其重命名回App.dll)。
步骤6:应用软件上传成功后,如果正在运行应用软件,用户可以通过shell调用动态加载指令动态卸载当前正在运行的旧版本应用软件,然后调用指令动态加载、解析新版本应用软件并调用执行命令恢复当前应用软件运行状态;如果没有运行应用软件,则直接调用动态加载指令加载、解析App.dll并调用执行。
新版本应用软件动态加载、解析或者调用失败,均可以通过指令调试,不会影响嵌入式操作系统的执行;同时,整个升级过程无须断电、拆除设备或者借用固化工具,完全在线操作。
综上,本发明设计的一种片内动态加载应用软件的在线升级固化方法,在不使用任何外部存储设备与固化工具的情况下,最大化利用片内存储,有效解决应用软件在线升级、固化与版本回退的难题。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种片内动态加载应用软件的在线升级固化方法,其特征在于,该方法包括如下步骤:
步骤1:嵌入式终端设备上电,首先执行通用引导程序;完成硬件设备初始化以及内存空间的映射表的建立等,从而搭建操作系统运行的软硬件环境;然后搬移闪存内系统镜像数据至内存并完成PC指针跳转启动操作系统;
步骤2:操作系统启动后,接管嵌入式终端设备,同时完成FTP服务器初始化以及根文件系统挂接;
步骤3:系统启动后台任务自动检索RFS下是否有应用软件可执行文件,如果有则动态加载应用软件、解析并调用执行;如果没有应用软件可执行文件,则以用户约定的方式提示用户上传应用软件可执行文件;
步骤4:用户通过FTP指令的方式将预升级或上传的应用软件发送至设备终端,由系统后台任务负责接收并解析文件数据至ApplicationSoftware地址空间;
步骤5:系统后台任务从ApplicationSoftware地址空间提取应用软件有效长度数据内容写入RFS,存储为特定名称或版本的应用软件可执行文件App.dll文件;写入前,若已存在App.dll文件则将其备份为App.dll.bak,然后读取App.dll文件的数据获取MD5码,与ApplicationSoftware地址空间存储的MD5码进行比对;如果MD5码数据相同,则表示应用软件上传成功;否则表示应用软件上传失败,由系统后台任务删除App.dll文件;
步骤6:应用软件上传成功后,如果正在运行应用软件,用户通过shell调用动态加载指令动态卸载当前正在运行的旧版本应用软件,然后调用指令动态加载、解析新版本应用软件App.dll,并调用执行命令恢复当前应用软件运行状态;如果没有运行应用软件,则直接调用动态加载指令加载、解析App.dll并调用执行。
2.如权利要求1所述的片内动态加载应用软件的在线升级固化方法,其特征在于,所述步骤2中,如果嵌入式终端不支持网口,则初始化其他特定的服务器。
3.如权利要求2所述的片内动态加载应用软件的在线升级固化方法,其特征在于,其他特定的服务器为RapidIO。
4.如权利要求1所述的片内动态加载应用软件的在线升级固化方法,其特征在于,所述步骤3中,提示方式为操作系统后台任务向上位机发送FTP提示日志文件、支持图形界面的终端显示弹窗、终端设备警鸣报警或者亮灯提示上传应用软件可执行文件。
5.如权利要求1所述的片内动态加载应用软件的在线升级固化方法,其特征在于,所述步骤5中,备份前,若已存在App.dll.bak文件,则将其直接删除。
6.如权利要求5所述的片内动态加载应用软件的在线升级固化方法,其特征在于,所述步骤5在删除App.dll文件时,若存在App.dll.bak文件,则将其重命名回App.dll。
7.如权利要求1-6任一项所述的片内动态加载应用软件的在线升级固化方法,其特征在于,操作系统正常可访问操作的地址空间包括随机存储器RAM、闪存;在RAM内申请一定大小的内存作为ApplicationSoftware地址空间,用于临时存储上传的应用软件数据;将闪存划定为3部分区域:一部分用于存储通用型引导镜像;一部分用于存储操作系统镜像;剩余部分地址空间保留,待操作系统启动后由根文件系统RFS统一管理,负责对应用软件可执行文件进行增、删、改、查。
8.如权利要求7所述的片内动态加载应用软件的在线升级固化方法,其特征在于,通用型引导镜像和系统镜像在硬件设备出厂或交付时借助固化工具一次性烧写到闪存内。
9.如权利要求7所述的片内动态加载应用软件的在线升级固化方法,其特征在于,在上位机编译生成的应用软件可执行文件前添加文件头,共32字节;其中,0-3字节存储应用软件可执行文件的有效长度;4-15字节为预留扩展空间,填充空/无效数据;16-31字节存储应用软件可执行文件的MD5校验码;文件尾部补0,实现地址对齐。
10.如权利要求8所述的片内动态加载应用软件的在线升级固化方法,其特征在于,硬件设备出厂或交付时,由厂家利用固化工具一次性固化通用引导和系统镜像,用户仅需维护升级应用软件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310058363.XA CN115951909A (zh) | 2023-01-16 | 2023-01-16 | 一种片内动态加载应用软件的在线升级固化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310058363.XA CN115951909A (zh) | 2023-01-16 | 2023-01-16 | 一种片内动态加载应用软件的在线升级固化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115951909A true CN115951909A (zh) | 2023-04-11 |
Family
ID=87296857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310058363.XA Pending CN115951909A (zh) | 2023-01-16 | 2023-01-16 | 一种片内动态加载应用软件的在线升级固化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115951909A (zh) |
-
2023
- 2023-01-16 CN CN202310058363.XA patent/CN115951909A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101143112B1 (ko) | 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법 | |
CN101477471B (zh) | 一种嵌入式系统固件在线升级方法 | |
US8423991B2 (en) | Embedded network device and firmware upgrading method | |
US6438688B1 (en) | Method and computer for locally and remotely updating a basic input output system (BIOS) utilizing one update file | |
US20100235617A1 (en) | System recovery method and embedded system with automatic recovery function | |
KR20070034239A (ko) | 소프트웨어 업데이트 방법 및 시스템과 그 방법을 기록한컴퓨터 판독 가능한 기록매체 | |
CN101770383B (zh) | 一种跨平台版本在线升级的方法及装置 | |
CN112152846B (zh) | 一种基于物联网的计量仪表远程升级方法 | |
WO2015127730A1 (zh) | 版本文件的运行方法及装置 | |
CN111258666A (zh) | 计算机文件的读取方法、装置、计算机系统及存储介质 | |
CN112433769A (zh) | 一种bmc启动方法、装置、计算机设备及存储介质 | |
CN114756290A (zh) | 一种操作系统安装方法、设备及可读存储介质 | |
WO2024113995A1 (zh) | 一种bmc异构升级方法、系统、设备及可读存储介质 | |
CN117130672A (zh) | 服务器启动流程控制方法、系统、终端及存储介质 | |
CN110286953B (zh) | 嵌入式系统的启动方法、装置、嵌入式设备及存储介质 | |
CN115951909A (zh) | 一种片内动态加载应用软件的在线升级固化方法 | |
CN116150111A (zh) | 内核崩溃日志的保存方法、装置、介质以及电子设备 | |
CN115756558A (zh) | 一种可在线引导重启并校验的dsp软件在线升级方法 | |
CN113778485A (zh) | 电子芯片的系统运行方法、装置、电子芯片和存储介质 | |
CN114510375A (zh) | 一种Flash芯片数据区域动态共享系统及方法 | |
CN113377425A (zh) | Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
CN112631637B (zh) | 基于rtos的ota升级方法、系统、设备及存储介质 | |
US20120185686A1 (en) | Method, Apparatus and Computer Program for Loading Files During a Boot-Up Process | |
CN114115977B (zh) | Bmc镜像构建方法、系统、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |