CN111522568A - 一种boot下验证升级文件的方法 - Google Patents
一种boot下验证升级文件的方法 Download PDFInfo
- Publication number
- CN111522568A CN111522568A CN202010378142.7A CN202010378142A CN111522568A CN 111522568 A CN111522568 A CN 111522568A CN 202010378142 A CN202010378142 A CN 202010378142A CN 111522568 A CN111522568 A CN 111522568A
- Authority
- CN
- China
- Prior art keywords
- boot
- address
- file
- starting
- flash
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及应用升级领域,特别涉及一种boot下验证升级文件的方法。其包括以下步骤:S1.启动参数判断:对boot模块软件升级的启动参数进行判断,判断待启动的地址上是否存在boot文件可用,若有则计算出新地址并将boot文件偏移至新地址,并执行步骤S2;若否则直接执行步骤S2;S2.boot启动;S3.flash偏移判断;S4.flash擦除;S5.文件烧写;S6.启动参数设置。该方法针对现有升级boot软件过程的不足,在boot启动阶段新增配置,使系统从特定区域启动,从而在保留原始系统启动文件完整的前提下,验证新软件的功能,达到避免系统挂死和不拆卸flash的目的,从而节约开发时间、提高开发效率。
Description
技术领域
本发明涉及应用升级领域,特别涉及一种boot下验证升级文件的方法。
背景技术
基于Linux的嵌入式设备在BSP开发过程中,经常需要升级boot模块软件,通用的升级方法都是擦除flash中特定区域的数据,将新文件写入该特定区域。该方法针对现有升级boot软件过程的不足,达到避免系统挂死和不拆卸flash的目的,从而节约开发时间、提高开发效率。
通用的软件升级,方法都是擦除flash中特定区域的数据,将新文件写入该特定区域,当软件出现错误时,经常导致boot不能启动或挂死的情况,从而只能通过拆卸flash或修改硬件引脚,使用U盘烧录的方法进行补救。该方法极大的影响项目开发效率。
发明内容
本发明提供一种boot下验证升级文件的方法,旨在设备在调试boot驱动中,解决软件出错导致系统不能启动,需要拆解flash的问题。
本发明提供一种boot下验证升级文件的方法,包括以下步骤:
S1.启动参数判断:对boot模块软件升级的启动参数进行判断,判断待启动的地址上是否存在boot文件可用,若有则计算出新地址并将boot文件偏移至新地址,并执行步骤S2;若否则直接执行步骤S2;
S2.boot启动:将新boot文件在待启动的地址上启动;
S3.flash偏移判断:解析启动参数,并判断待解析的地址是否存在flash数据,若是则将flash数据偏移,并执行步骤S4;若否则直接执行步骤S4;
S4.flash擦除:擦除待解析地址上的flash数据,预留出待解析空间;
S5.文件烧写:将新的boot文件写入待解析空间内;
S6.启动参数设置:使用命令设置启动参数。
作为本发明的进一步改进,所述步骤S1中,所述启动参数为U-Boot参数,所述U-Boot参数包括设置IP地址、设置串口波特率、传给kernel启动执行的参数。启动参数是新增的,用来判断是否需要boot地址偏移,相比现有的boot升级,通过对启动地址上的参数进行判断,将原有的boot数据转移至其他地方保存,作为备用,以备新的boot升级不成功仍可调用原有的boot进行启动。
作为本发明的进一步改进,所述步骤S2包括:
U-Boot在启动时读取默认参数值,在U-Boot启动后,系统设置U-Image默认参数的入口地址,并将入口地址设置在U-Image地址范围之外。此入口地址的设置避免了U-Image存在同个地址,避免原有数据的覆盖和擦除。
作为本发明的进一步改进,所述步骤S2中,入口地址通过计算内核、文件系统在flash中位置及大小得出。通过计算可以选取符合设置要求的入口地址,防止设置出错。
作为本发明的进一步改进,所述步骤S3中,flash数据偏移的位置为在flash的地址范围内,且不与内核、文件系统的地址冲突。此位置范围的设置、首先flash地址不能是坏块地址,其次,该地址最好为空白的整数地址,便于设置和寻址。
作为本发明的进一步改进,所述步骤S3中,flash数据偏移到RAM中。RAM中可以作为存储flash数据的一种方式,RAM作为系统启动优先读取的存储位置,将flash设置在这里便于系统快速调取。
作为本发明的进一步改进,所述步骤S3中,解析的启动参数为kernel文件。kernel文件控制着系统的内存管理、数据的输入输出操作和度中断处理,在boot启动时,kernel文件驻留在内存中特定的写保护区域,使别的程序无法占权用这个内存区域。
作为本发明的进一步改进,所述步骤S6具体包括:系统进入U-Boot后,使用命令setenv和参数选项来设置启动参数。进入U-Boot后再设置符合系统要求的启动参数,使U-Boot升级后能与系统兼容,保持升级后系统启动的稳定。
作为本发明的进一步改进,所述步骤S6中,设置的启动参数包括串口波特率、硬件设备型号、U-Boot环境变量、内核镜像名称及大小、文件系统类型及所在flash分区、CPU指令集等。启动参数的正确设置是为了能引导内核正确启动。
本发明的有益效果是:该方法针对现有升级boot软件过程的不足,在boot启动阶段新增配置,使系统从特定区域启动,从而在保留原始系统启动文件完整的前提下,验证新软件的功能,达到避免系统挂死和不拆卸flash的目的,从而节约开发时间、提高开发效率。
附图说明
图1是本发明一种boot下验证升级文件方法中系统启动及升级的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
实施例一:
如图1所示,本发明方法可以在不拆卸flash,不更改硬件电路图的情况下,通过修改boot启动方式,在保证flash中原文件不被损坏的条件下,验证软件是否正常,节约了定位、分析、解决问题的时间,提高了解决问题的效率。
本发明的一种boot下验证升级文件的方法,包括以下步骤:
S1.启动参数判断:对boot模块软件升级的启动参数进行判断,判断待启动的地址上是否存在boot文件可用,若有则计算出新地址并将boot文件偏移至新地址,并执行步骤S2;若否则直接执行步骤S2;启动参数为U-Boot参数,U-Boot在启动时会读取默认值为U-Boot启动做准备,例如设置IP地址、设置串口波特率、传给kernel启动执行的参数等。
S2.boot启动:将新boot文件在待启动的地址上启动;U-Boot在启动时读取默认参数值,U-Boot启动后,系统会设置U-Image默认参数的入口地址,此时需要设置入口地址为在U-Image地址范围之外入口地址通过计算内核、文件系统在flash中位置及大小得出。
S3.flash偏移判断:解析启动参数,并判断待解析的地址是否存在flash数据,若是则将flash数据偏移,并执行步骤S4;若否则直接执行步骤S4;解析的启动参数为kernel文件,flash数据偏移的位置为在flash的地址范围内,且不与内核、文件系统的地址冲突,优选将flash数据偏移到RAM中。
S4.flash擦除:擦除待解析地址上的flash数据,预留出待解析空间;
S5.文件烧写:将新的boot文件写入待解析空间内;
S6.启动参数设置:使用命令设置启动参数。系统进入U-Boot后,使用命令setenv和参数选项来设置启动参数。
本方法中,boot偏移的作用是让系统启动时,有两个boot可选,目的是在不损坏原文件的条件下验证boot是否可用,具体实现是通过flash偏移完成及启动参数完成的。
实施例二:
该方法借鉴内存管理机制,实现动态使用flash的目标。例如boot的启动地址为0x0,系统启动过程中,会从flash地址为0x10000的地址将boot数据搬移至RAM中,常规串口升级则将0x10000地址起始的1M空间擦除,再写入新文件。在本次设计中,增加启动参数,使flash可以从0x1000000的地址搬移数据到RAM,同样擦除0x1000000起始1M空间大小的区域。这样,在不影响原始boot内容的前提下,可以动态指定flash烧写区域,从而达到充分利用flash,节约了定位、分析、解决问题的时间,提高了解决问题的效率。
0x0、0x10000、0x1000000的地址数值的选择没有特定要求。其中,0x0地址是根据处理器平台决定的,表示系统上电后从0x0地址读取第一条命令运行,其它地址可根据flash情况和DDR情况进行相应设置。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种boot下验证升级文件的方法,其特征在于,包括以下步骤:
S1.启动参数判断:对boot模块软件升级的启动参数进行判断,判断待启动的地址上是否存在boot文件可用,若有则计算出新地址并将boot文件偏移至新地址,并执行步骤S2;若否则直接执行步骤S2;
S2.boot启动:将新boot文件在待启动的地址上启动;
S3.flash偏移判断:解析启动参数,并判断待解析的地址是否存在flash数据,若是则将flash数据偏移,并执行步骤S4;若否则直接执行步骤S4;
S4.flash擦除:擦除待解析地址上的flash数据,预留出待解析空间;
S5.文件烧写:将新的boot文件写入待解析空间内;
S6.启动参数设置:使用命令设置启动参数。
2.根据权利要求1所述boot下验证升级文件的方法,其特征在于,所述步骤S1中,所述启动参数为U-Boot参数,所述U-Boot参数包括设置IP地址、设置串口波特率、传给kernel启动执行的参数。
3.根据权利要求2所述boot下验证升级文件的方法,其特征在于,所述步骤S2包括:
U-Boot在启动时读取默认参数值,在U-Boot启动后,系统设置U-Image默认参数的入口地址,并将入口地址设置在U-Image地址范围之外。
4.根据权利要求3所述boot下验证升级文件的方法,其特征在于,所述步骤S2中,入口地址通过计算内核、文件系统在flash中位置及大小得出。
5.根据权利要求1所述boot下验证升级文件的方法,其特征在于,所述步骤S3中,flash数据偏移的位置为在flash的地址范围内,且不与内核、文件系统的地址冲突。
6.根据权利要求5所述boot下验证升级文件的方法,其特征在于,所述步骤S3中,flash数据偏移到RAM中。
7.根据权利要求1所述boot下验证升级文件的方法,其特征在于,所述步骤S3中,解析的启动参数为kernel文件。
8.根据权利要求1所述boot下验证升级文件的方法,其特征在于,所述步骤S6具体包括:
系统进入U-Boot后,使用命令setenv和参数选项来设置启动参数。
9.根据权利要求8所述boot下验证升级文件的方法,其特征在于,所述步骤S6中,设置的启动参数包括串口波特率、硬件设备型号、U-Boot环境变量、内核镜像名称及大小、文件系统类型及所在flash分区、CPU指令集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010378142.7A CN111522568A (zh) | 2020-05-07 | 2020-05-07 | 一种boot下验证升级文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010378142.7A CN111522568A (zh) | 2020-05-07 | 2020-05-07 | 一种boot下验证升级文件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111522568A true CN111522568A (zh) | 2020-08-11 |
Family
ID=71908754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010378142.7A Pending CN111522568A (zh) | 2020-05-07 | 2020-05-07 | 一种boot下验证升级文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522568A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012831A (zh) * | 2010-12-08 | 2011-04-13 | 四川金网通电子科技有限公司 | 基于Linux平台的OTA升级方法 |
CN102541572A (zh) * | 2010-12-08 | 2012-07-04 | 中兴通讯股份有限公司 | 一种实现操作系统内核引导的方法、系统及装置 |
CN103116502A (zh) * | 2011-11-17 | 2013-05-22 | 国家纳米技术与工程研究院 | 一种利用主备版本备份实现升级的方法 |
CN103914324A (zh) * | 2013-01-08 | 2014-07-09 | 海尔集团公司 | 一种自动烧写嵌入式设备固件的方法及其系统 |
CN103995717A (zh) * | 2014-05-07 | 2014-08-20 | 南京国电南自电网自动化有限公司 | 一种嵌入式设备软件升级的方法 |
CN108279935A (zh) * | 2016-12-30 | 2018-07-13 | 北京中科晶上科技股份有限公司 | 一种针对片上系统的操作系统启动引导方法 |
CN109165037A (zh) * | 2018-07-31 | 2019-01-08 | 西安霍威航空科技有限公司 | 一种基于串口处理器的程序在线更新方法及系统 |
CN110837376A (zh) * | 2019-10-28 | 2020-02-25 | 天津七一二通信广播股份有限公司 | 用于无线平面调车系统设备的linux系统及引入方法 |
-
2020
- 2020-05-07 CN CN202010378142.7A patent/CN111522568A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012831A (zh) * | 2010-12-08 | 2011-04-13 | 四川金网通电子科技有限公司 | 基于Linux平台的OTA升级方法 |
CN102541572A (zh) * | 2010-12-08 | 2012-07-04 | 中兴通讯股份有限公司 | 一种实现操作系统内核引导的方法、系统及装置 |
CN103116502A (zh) * | 2011-11-17 | 2013-05-22 | 国家纳米技术与工程研究院 | 一种利用主备版本备份实现升级的方法 |
CN103914324A (zh) * | 2013-01-08 | 2014-07-09 | 海尔集团公司 | 一种自动烧写嵌入式设备固件的方法及其系统 |
CN103995717A (zh) * | 2014-05-07 | 2014-08-20 | 南京国电南自电网自动化有限公司 | 一种嵌入式设备软件升级的方法 |
CN108279935A (zh) * | 2016-12-30 | 2018-07-13 | 北京中科晶上科技股份有限公司 | 一种针对片上系统的操作系统启动引导方法 |
CN109165037A (zh) * | 2018-07-31 | 2019-01-08 | 西安霍威航空科技有限公司 | 一种基于串口处理器的程序在线更新方法及系统 |
CN110837376A (zh) * | 2019-10-28 | 2020-02-25 | 天津七一二通信广播股份有限公司 | 用于无线平面调车系统设备的linux系统及引入方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6725178B2 (en) | Use of hidden partitions in a storage device for storing BIOS extension files | |
US7421573B2 (en) | Apparatus and method for updating firmware | |
CN102945173B (zh) | 用户程序在线升级系统和升级方法 | |
US7032213B1 (en) | Fixing incompatible applications using a light debugger | |
CN104123153A (zh) | 用于使用usb升级固件的装置与方法 | |
US9836417B2 (en) | Bridge configuration in computing devices | |
CN101634960A (zh) | 一种修改bios参数及重新生成校验和的方法 | |
CN105760191A (zh) | 嵌入式系统设备程序烧写量产方法 | |
CN111857776A (zh) | Dsp板卡类的应用程序的在线升级方法 | |
US20100030922A1 (en) | Computer peripheral device implemented as optic storage device or/and removable disk by software emulation and implementing method thereof | |
CN109240748B (zh) | 应用于嵌入式系统的镜像启动及适配的方法、系统 | |
CN113641390B (zh) | 一种系统升级方法、装置、设备及存储介质 | |
CN113377586B (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
CN114138295A (zh) | 一种电子设备的应用程序固件升级方法、装置及系统 | |
CN110825421B (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN113900693A (zh) | 一种固件升级方法、装置、系统、电子设备及存储介质 | |
CN111522568A (zh) | 一种boot下验证升级文件的方法 | |
US20240176887A1 (en) | Method for Running Startup Program of Electronic Device, and Electronic Device | |
CN115357275A (zh) | 一种基于Linux的Nand Flash镜像读取与升级的方法、介质及终端 | |
CN111984329B (zh) | 一种boot引导软件标准化生成、执行方法及系统 | |
JPH11265283A (ja) | 記憶装置におけるファームウェアの修正方法及び記憶装置 | |
CN118092989B (zh) | 一种存储器的固件升级方法、系统、设备及介质 | |
TWI417888B (zh) | An embedded chip system, a method for burning a wafer, and a computer program product | |
JPS61220030A (ja) | ソフトウエア識別方式 | |
CN111176735B (zh) | 一种心电图机启动加速方法 |
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 |