CN116954750A - 一种固件的在线修改方法、装置及相关产品 - Google Patents
一种固件的在线修改方法、装置及相关产品 Download PDFInfo
- Publication number
- CN116954750A CN116954750A CN202310838699.8A CN202310838699A CN116954750A CN 116954750 A CN116954750 A CN 116954750A CN 202310838699 A CN202310838699 A CN 202310838699A CN 116954750 A CN116954750 A CN 116954750A
- Authority
- CN
- China
- Prior art keywords
- configuration file
- modification
- modified
- data
- firmware
- 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
- 238000002715 modification method Methods 0.000 title claims abstract description 21
- 230000004048 modification Effects 0.000 claims abstract description 241
- 238000012986 modification Methods 0.000 claims abstract description 241
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 29
- 125000004122 cyclic group Chemical group 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000007405 data analysis Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开一种固件的在线修改方法、装置及相关产品。该方法接收对固件的配置文件的修改指令;解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址;将配置文件从flash存储器读取到内存中;根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据;将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件;将修改后的配置文件重新写入flash存储器中。可见,既无需进行修改源码、编译和烧录等步骤,减少了人工的成本和工作负担;又将修改后的配置文件重新写入flash存储器中,减少了固件加载失败的情况出现,能够提高固件的加载成功率。
Description
技术领域
本申请涉及固件修改技术领域,尤其涉及一种固件的在线修改方法、装置及相关产品。
背景技术
固件是指写入终端设备或者服务器中的可擦写可编程只读存储器或电可擦可编程只读存储器等存储器中的程序,也可称之为终端设备或者服务器内部保存的驱动程序。通过加载固件,终端设备或者服务器可以实现对应的业务需求。例如sas设备中嵌入了固件,当sas设备启动运行后,加载固件,可以实现根据业务需求预先为sas设备配置的功能。但是,当业务需求发生变化时,也需对固件进行对应的修改,方能使终端设备或服务器满足变化后的业务需求。
相关技术中,已有的固件修改方案可以分为以下两种:
一种方案是,开发人员修改固件的源码,再经过编译、烧录等步骤,上电启动加载固件,以实现不同功能。但该方案需人工操作多个繁琐步骤,导致增加了人工的成本和工作负担。为了解决此问题,另一种方案可以在线修改固件,减少人工的成本和工作负担。但容易存在的问题是,当加载修改后的固件时,容易出现固件加载错误,导致终端设备或服务器运行失败的情况。
因此,如何在减少人工的成本和工作负担的情况下,提高固件的加载成功率成为目标亟待解决的问题。
发明内容
本申请实施例提供了一种固件的在线修改方法、装置及相关产品,旨在提供一种在线修改固件的方案,在减少人工的成本和工作负担的同时,提高固件的加载成功率。
本申请第一方面提供了一种固件的在线修改方法,包括:
接收对固件的配置文件的修改指令;所述固件存储在flash存储器中;
解析所述修改指令得到修改数据,并得到所述修改数据的位数信息和所述修改数据的偏移地址;
将所述配置文件从所述flash存储器读取到内存中;
根据所述修改数据的位数信息和所述修改数据的偏移地址,从所述内存中遍历确定所述配置文件中的待修改数据;
将所述内存中所述配置文件中的待修改数据替换为所述修改数据,得到修改后的配置文件;
将所述修改后的配置文件重新写入所述flash存储器中。
本申请第二方面提供了一种固件的在线修改装置,包括:
修改指令接收模块,用于接收对固件的配置文件的修改指令;所述固件存储在flash存储器中;
修改指令解析模块,用于解析所述修改指令得到修改数据,并得到所述修改数据的位数信息和所述修改数据的偏移地址;
配置文件读取模块,用于将所述配置文件从所述flash存储器读取到内存中;
待修改数据确定模块,用于根据所述修改数据的位数信息和所述修改数据的偏移地址,从所述内存中遍历确定所述配置文件中的待修改数据;
待修改数据替换模块,用于将所述内存中所述配置文件中的待修改数据替换为所述修改数据,得到修改后的配置文件;
配置文件写入模块,用于将所述修改后的配置文件重新写入所述flash存储器中。
本申请第三方面提供了一种固件的在线修改设备,所述设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行第一方面提供的固件的在线修改方法的步骤。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被固件的在线修改设备执行时实现第一方面提供的固件的在线修改方法的步骤。
本申请第五方面提供了一种计算机程序产品,包括计算机程序,该计算机程序被固件的在线修改设备执行时实现第一方面提供的固件的在线修改方法的步骤。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种固件的在线修改方法、装置及相关产品。方法中先接收对固件的配置文件的修改指令,固件存储在flash存储器中。再对配置文件的修改指令进行解析,得到修改数据以及修改数据的位数信息和修改数据的偏移地址。接着,将配置文件从flash存储器读取到内存中,在内存中对配置文件进行修改。然后,根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据的位置。以便根据待修改数据的位置,将内存中配置文件中的待修改数据替换为从修改命令中解析得到的修改数据,得到修改后的配置文件。随后将修改后的配置文件重新写入flash存储器中,完成固件的在线修改。当加载固件时,可以从flash存储器中将该修改后的配置文件读取到内存中,以满足对应的业务需求。由于本申请根据修改指令,对固件的配置文件进行在线修改,无需进行修改源码、编译和烧录等复杂步骤,因此能够减少人工的成本和工作负担。同时,修改后的配置文件被重新写入flash存储器中,每次加载固件时,修改后的配置文件不会再发生变动,只需要将该修改后的配置文件读取到内存中,便可以实现修改后的配置文件对应的业务,减少固件加载失败的情况出现。因此,本申请能够在减少人工的成本和工作负担的同时,提高固件的加载成功率。
附图说明
图1为本申请实施例提供的一种人工修改固件的方案流程图;
图2为本申请实施例提供的一种固件的在线修改方法的场景架构图;
图3为本申请实施例提供的一种固件的在线修改方法的流程图;
图4为本申请实施例提供的一种flash存储器存储sas expander中固件的示意图;
图5为本申请实施例提供的一种sas expander中固件的在线修改的示意图;
图6为本申请实施例提供的一种具体的固件的在线修改方法的流程图;
图7为本申请实施例提供的一种固件的在线修改装置的结构示意图;
图8为本申请实施例中服务器的一个结构示意图;
图9为本申请实施例中终端设备的一个结构示意图。
具体实施方式
首先对本申请下文的实施例中可能涉及的若干个名词术语进行解释。
sas:Serial Attached SCSI,串行连接小型计算机系统接口。
sas expander:一种sas设备,用于存储系统中,使一个sas controller下连接更多的sas/sata硬盘。
sas controller:一种pcie转sas的设备,用于连接sas expander。
sata:Serial Advanced Technology Attachment串行高级技术,一种基于行业标准的串行硬件驱动器接口。
现阶段,对固件进行修改的方案主要分为以下两种:
一种方案是人工修改固件,具体可以参见图1所示,图1为本申请实施例提供的一种人工修改固件的方案流程图。结合图1所示,开发人员先根据业务需求修改固件的源码,再通过编译器对修改后的源码进行编译生成bin文件,然后将bin文件烧录到固件中的flash存储器,最后上电加载固件,以实现对应的功能。从图1的多个步骤中可以看出,该人工修改固件的方案,需要人工进行大量工作,极大增加了人工的成本和工作负担。
以sas expander作为示例,sas expander的链路信号质量参数、连接的硬盘数量、不同硬盘的槽位编号的排序或者链接的速率均需要在固件的配置文件中进行配置。而通常情况下,开发人员需多次调整链路信号质量参数来确定最佳链路信号质量参数,不同的业务中连接的硬盘数量或者需求的链接速率也可能均不相同。若采用相关技术中的人工修改固件的方案,则开发人员需操作进行大量且重复的工作,还会增加sas expander的业务需求落地时间。另外,若sas expander在运行过程中出现异常,则需要对固件的配置文件中与链路开关相关的内容进行修改,以定位问题原因,若采用人工修改固件的方案,则容易增加问题定位时间,导致问题解决的速度降低。
另一种方案可以在线修改固件,但是该在线修改固件的方案中,将修改数据存储到flash存储器中的额外存储空间中,导致每次加载固件时,均需要先将flash中的配置文件读取到内存中,再使用额外存储空间中存储的修改数据来修改配置文件,修改完成后,固件才能正常加载实现对应的功能。即在每次加载固件的过程中,均需要对固件进行一次修改,极容易出现修改数据存储出现位错误,或者配置文件的修改出现异常等情况,导致固件修改异常,无法成功加载,进而影响业务需求的实现。
鉴于以上问题,在本申请中提供了一种固件的在线修改方法、装置及相关产品,目的是提供一种在线修改固件的方案,在减少人工的成本和工作负担的同时,提高固件的加载成功率。在本申请提供的技术方案中,接收对固件的配置文件的修改指令;固件存储在flash存储器中;解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址;将配置文件从flash存储器读取到内存中;根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据;将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件;将修改后的配置文件重新写入flash存储器中。由此可见,本申请仅需根据修改指令,对固件的配置文件进行在线修改,能够减少人工的成本和工作负担。同时,修改后的配置文件被重新写入固件的flash存储器中,每次加载固件时,只需要将该修改后的配置文件读取到内存中,便可以实现修改后的配置文件对应的业务,能够提高固件的加载成功率。
接下来,对本申请实施例的执行主体进行介绍。本申请实施例提供的固件的在线修改方法的执行主体可以为终端设备。例如终端设备接收对固件的配置文件的修改指令。作为示例,终端设备具体可以包括但不限于手机、台式电脑、平板电脑、笔记本电能、掌上电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本申请实施例提供的固件的在线修改方法的执行主体也可以是服务器,即可以是服务器接收对固件的配置文件的修改指令。
此外,本申请实施例提供的固件的在线修改方法也可以由终端设备和服务器协同执行。例如对终端设备的固件进行在线修改,服务器先接收对终端设备的固件的配置文件的修改指令,解析修改指令得到修改数据,以及修改数据的位数信息和修改数据的偏移地址;再将修改数据、修改数据的位信息和修改数据的偏移地址发送给终端设备。终端设备接收到这些数据后,将配置文件从flash存储器读取到内存中;根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据;将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件;将修改后的配置文件重新写入flash存储器中。其中,终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。故本申请实施例中对于执行本申请技术方案的实现主体不做限定。
图2示例性地展示了一种固件的在线修改方法的场景架构图。图中包括服务器以及多种形式的终端设备。图2所示的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统。另外,服务器还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
接下来,以终端设备的角度,对本申请实施例提供的固件的在线修改方法进行具体介绍。
参见图3,该图为本申请实施例提供的一种固件的在线修改方法的流程图。如图3所示的固件的在线修改方法中,包括以下步骤:
S301:接收对固件的配置文件的修改指令。
在本申请实施例中,固件是指终端设备的“驱动程序”,固件的配置文件决定了该固件可以实现的功能。因此,若要实现固件的功能调整,则需要对固件的配置文件进行修改,以使固件实现不同的功能。其中,固件存储在flash存储器中。
作为一种示例,可以是操作系统向终端设备发送对固件的配置文件的修改指令,终端设备再接收该修改指令。举例而言,操作系统可以是linux操作系统,修改指令可以是sg_ses指令,本申请对此不做限定。
此外,在本申请一种可能的实施方式中,操作系统可以向终端设备发送获取指令,以得到终端设备的设备号,可以有针对性地向设备号对应的终端设备发送修改指令,避免发送错误的情况出现。
举例而言,终端设备可以为sas expander,操作系统可以为linux操作系统。linux操作系统向sas expander发送获取指令lsscsi-sg,sas expander接收到该lsscsi-sg指令后,向linux操作系统返回自身的设备号“/dev/sg3”。则linux操作系统可以向sasexpander发送修改指令sg_ses,该sg_ses指令的格式可以为:sg_ses-p 0xfd offset_address len修改数据/dev/sg3。其中的0xfd表示该sg_ses指令为修改指令,offset_address表示修改数据的偏移地址,len表示修改数据的位数信息。
S302:解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址。
终端设备接收的修改指令中包括修改数据,修改数据的位数信息以及修改数据的偏移地址,以便确定配置文件中待修改数据的准确位置。
此外,考虑到修改指令在操作系统与终端设备之间传输的过程中,以及终端设备对修改指令进行解析的过程中,修改指令中的多种信息容易出现存储的位错误、传输错误等问题,导致解析得到的修改数据、修改数据的位数信息以及修改数据的偏移地址出现错误,影响固件的在线修改。
因此,在本申请一种可能的实现方式中,在将配置文件从flash存储器读取到内存中之前,该固件的在线修改方法,还可以包括:判断对修改指令解析得到的修改数据的位数信息,与接受到的修改指令的位数信息是否相符;若修改数据的位数信息与修改指令的位数信息相符,则可以表明修改指令在传输过程和解析过程中没有出现问题,此时则可以执行后续的将配置文件从flash存储器读取到内存中的步骤;但若修改数据的位数信息与修改指令的位数信息不相符,则表明修改指令在传输过程和解析等过程中出现异常,此时可以向操作系统返回修改数据解析错误的指令,以提示操作系统可以重新发送对固件的修改指令。由此可见,在对修改指令进行解析之后增加判断步骤,确保解析得到的修改数据以及修改数据相关信息的准确性,能够及时发现异常,提高对固件修改的修改准确率。
S303:将配置文件从flash存储器读取到内存中。
在本申请实施例中,flash存储器是一种非易失性内存的存储器,在没有电源供应的条件下也能够长久地保持数据。实际应用中,启动运行终端设备后,需将固件的flash存储器中的配置文件读取到内存中,才能实现对应的功能。
S304:根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据。
在本申请实施例中,修改数据的位数信息是指修改数据的数据长度。修改数据的偏移地址是指修改数据在配置文件中的起始地址相对于首地址的偏移量。因此,可以先根据修改数据的偏移地址确定配置文件中待修改数据的起始地址,再根据修改数据的位数信息可以确定待修改数据的结束地址,根据待修改数据的起始地址和待修改数据的结束地址,即可在配置文件中确定待修改数据。
S305:将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件。
在对修改指令解析得到修改数据,以及确定好配置文件中的待修改数据后,可以将配置文件中待修改数据替换为修改数据,得到修改后的配置文件。
一般情况下,固件的配置文件中会包含循环冗余校验码,但该循环冗余校验码是对应原有配置文件的,无法校验修改后的配置文件。因此,为了进一步校验修改后的配置文件的修改是否正确,可以重新利用循环冗余校验函数对修改后的配置文件进行校验。在本申请一种可能的实施方式中,S305具体可以包括:先将已被读取到内存中的配置文件中的待修改数据替换为修改数据,得到需要进行循环冗余校验的待校验配置文件;再通过循环冗余校验函数校验待校验配置文件,并生成新循环冗余校验码;随后将待校验配置文件中的循环冗余校验码替换为新循环冗余校验码,即可得到修改后的配置文件。其中,循环冗余校验函数是一种根据网络数据封包或电脑档案等数据产生少数固定位数的一种散列函数,可以用来确保修改后的配置文件的完整性和正确性。
S306:将修改后的配置文件重新写入flash存储器中。
在得到修改后的配置文件之后,将该修改后的配置文件重新写入到flash存储器中,存入flash存储器中的数据保存的更为持久,能够避免修改后的配置文件丢失,造成固件加载失败的情况出现。
为了满足在不影响终端设备运行的情况下,对终端设备的固件进行修改的需求,可以在flash存储器中设置两个存储区域,两个存储区域均存储配置文件。终端设备将一个存储区域中存储的配置文件读取到内存中,使终端设备正常启动运行;当接收到修改指令后,终端设备可以再将另一个存储区域中存储的配置文件读取到内存中,以对该配置文件进行修改得到修改后的配置文件。
在本申请实施例中,上述提及的S303存在多种可能的实现方式,下面分别进行介绍。需要说明的是,下文介绍中给出的实现方式仅作为示例性的说明,并不代表本申请实施例的全部实现方式。
在本申请一种可能的实施方式中,固件的flash存储器中可以包括第一存储区域、第二存储区域和启动标记区域。其中,第一存储区域和第二存储区域各存储一份配置文件,即,第一存储区域和第二存储区域可以分别作为flash存储器的主存储区域和备份存储区域,均存储着相同的配置文件。该flash存储器中也包括了一个启动标记区域,该启动标记区域中的启动标记信息可以标识第一存储区域,该启动标记区域中的启动标记信息用于标识flash存储器中被读取的存储区域,以便在终端设备的每次启动时,可以根据启动标记信息读取对应的存储区域。
则S303的第一种可选实现方式为:将配置文件从flash存储器中的第一存储区域读取到内存中。相应地,S306具体可以包括:将修改后的配置文件重新写入flash存储器中的第一存储区域,从第一存储区域读取的配置文件,可以再将配置文件重新写入其中。
S303的第二种可选实现方式为:考虑到此时终端设备的运行是将第一存储区域中的配置文件读取到内存中。而第二存储区域存储的配置文件的版本可能很长时间未使用,其版本与第一存储区域中的配置文件的版本不同。则可以先比较第二存储区域中存储的配置文件的版本与第一存区域中存储的配置文件的版本;若第二存储区域存储的配置文件的版本与第一存储区域存储的配置文件的版本相同,则将配置文件从flash存储器中的第二存储区域读取到内存中。但若第二存储区域存储的配置文件的版本与第一存储区域存储的配置文件的版本不同,表明第二存储区域存储的配置文件的版本还未进行升级,则需将第二存储区域存储的配置文件的版本变更为第一存储区域存储的配置文件的版本,并将配置文件从flash存储器中的第二存储区域读取到内存中。相应地,S306具体可以包括:将修改后的配置文件重新写入flash存储器中的第二存储区域。因为修改后的配置文件存储于第二存储区域,为了使终端设备下次启动运行时,能够读取flash存储器中的第二存储区域中的修改后的配置文件,可以将flash存储器中的启动标记区域中的启动标记信息更新为标识第二存储区域的启动标记信息。
由此可见,能够在不影响终端设备启动运行的情况下,对固件的配置文件进行在线修改,提高了固件的在线修改的便利性。需要说明的是,对于以上两种可选实现方式,终端设备可以择一种或结合多种去实现,本申请对此不做限制。
作为一种示例,参见图4,该图为本申请实施例提供的一种flash存储器中存储sasexpander中固件的示意图。sas expander中的固件通常由三个二进制文件构成,包括配置文件data、bin文件image以及引导加载程序bootloader。因此flash存储器中可以具有存储这些二进制文件的存储区域。如图4所示,flash存储器可以包括data0存储区域、data1存储区域、imag0存储区域、image1存储区域、启动标记信息flag cfg存储区域(即上述提及的启动标记区域)以及bootloader存储区域。每个存储区域左边为该存储区域中数据存储的起始地址,每个存储区域右边为该存储区域中数据的大小。结合图4所示,bootloader存储区域中存储的bootloader的起始地址为0x0000_0000,bootloader的大小为96KB;data0存储区域中存储的data的起始地址为0x0002_0000,大小为64KB;data1存储区域中存储的data的起始地址为0x0032_0000,大小也为64KB;image0存储区域中存储的image0的起始地址为0x0004_0000,大小为2624KB;image1存储区域中存储的image1的起始地址为0x0034_0000,大小也为2624KB;启动标记区域中存储的flag cfg的起始地址为0x0030_0000,大小为96KB。需要说明的是,以上仅作为flash存储器存储固件的示例,对于其中存储区域、存储区域的排列顺序、数据的起始地址以及数据大小等均不做限定。
此外,为了进一步校验固件的修改是否正确,操作系统可以在完成对固件的在线修改后,向终端设备发送查询指令,以查询修改后的配置文件的修改是否正确。终端设备可以根据该查询指令向终端设备返回修改数据,以使操作系统可以根据返回的修改数据查询修改后的配置文件的修改是否正确。
因此,在本申请一种可能的实施方式中,该固件的在线修改方法还可以包括:终端设备接收操作系统发送的对修改后的配置文件的查询指令,其中,查询指令为操作系统查询修改后的配置文件的修改是否正确的指令;终端设备解析查询指令,可以得到修改数据的位数信息和修改数据的偏移地址;以便根据修改数据的位数信息和修改数据的偏移地址,从flash存储器中遍历确定修改数据,即之前进行替换的修改数据;终端设备最后向操作系统返回修改数据;操作系统接收到终端设备返回的修改数据,可以将向终端设备发送的修改指令中的修改数据和返回的修改数据进行比较,二者相同则表明修改后的配置文件的修改正确;但若修改指令中的修改数据和返回的修改数据不同,则表明修改后的配置文件的修改出现异常。操作系统可以再向终端设备发送修改指令,终端设备接收到修改指令后,再次对固件的配置文件进行修改,直至修改正确为止。由此,可以确保正确配置文件的修改,进一步提高对固件在线修改的修改准确率。
以上述示例中提及的sas expander为例,参见图5,该图为本申请实施例提供的一种sas expander中固件的在线修改的示意图。如图5所示,sas expander上行与sascontroller连接,下行与多个硬盘分别连接(硬盘1、硬盘2、……、硬盘N)。结合图5所示,可以是linux操作系统将对sas expander的固件的处理指令sg_ses发送给sas controller,sas controller再将sg_ses指令发送给sas expander,以使sas expander根据sg_ses指令对固件的配置文件进行修改,或者对固件的修改后的配置文件进行查询。同样的,sasexpander也可以将查询到的数据通过sg_ses指令返回给sas controller,sas controller再将sg_ses指令返回给linux操作系统,以便linux操作系统查询修改后的配置文件的修改是否正确。
此外,终端设备可能会接收到多种对固件的处理指令,因此可以先判断对固件的处理指令的指令类型,以明确接受的固件的处理指令的指令类型,执行后续操作。在本申请一种可能的实施方式中,该固件的在线修改方法还可以包括:先判断对固件的处理指令的指令类型,若判断得到该处理指令的指令类型是对固件的配置文件的修改指令,则可以执行接收对固件的配置文件的修改指令的步骤,以使终端设备基于该修改指令对固件的配置文件进行修改。另外,当判断得到该处理指令的指令类型是修改后的配置文件的查询指令,则可以执行接收操作系统发送的对修改后的配置文件的查询指令的步骤,以查询修改后的配置文件的修改是否正确。
以上述示例中的sg_ses指令为例,可以预先为对固件的处理指令设置对应的源码,例如修改指令可以为“0xfd”,查询指令可以为“0xfe”。则在判断对固件的处理指令的指令类型时,若处理指令中包括“0xfd”,则可以判断得到该处理指令的指令类型为对固件的配置文件的修改指令,即可以继续执行后续的修改配置文件的步骤。同样的,若处理指令中包括“0xfe”,则可以判断得到该处理指令的指令类型为对固件的修改后的配置文件的查询指令,即可以继续执行后续的查询修改后的配置文件的修改是否正确的步骤。需要说明的是,以上仅作为示例,本申请对此不做限制。
作为一种示例,参见图6,该图为本申请实施例提供的一种具体的固件的在线修改方法的流程图。如图6所示,该具体的固件的在线修改方法具体可以包括:
S601:判断对固件的处理指令的指令类型。
S602:若对固件的处理指令的指令类型是对固件的配置文件的修改指令,则接收对固件的配置文件的修改指令。
S603:解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址。
S604:判断修改数据的位数信息与修改指令的位数信息是否相符。
S605:若修改数据的位数信息与修改指令的位数信息不相符,则不对固件的配置文件进行处理,向操作系统返回修改数据解析错误的指令。
S606:若修改数据的位数信息与修改指令的位数信息相符,则调用flash读取函数将配置文件从flash存储器中读取到内存中。
S607:根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据。
S608:将内存中配置文件中的待修改数据替换为修改数据,得到待校验配置文件。
S609:通过循环冗余校验函数校验待校验配置文件,并生成新循环冗余校验码。
S610:将待校验配置文件中的循环冗余校验码替换为新循环冗余校验码,得到修改后的配置文件。
S611:调用flash写入函数将修改后的配置文件重新写入flash存储器中。
S612:若对固件的处理指令的指令类型是对固件的修改后的配置文件的查询指令,则接收操作系统发送的对修改后的配置文件的查询指令。
S613:解析查询指令,得到修改数据的位数信息和修改数据的偏移地址。
S614:根据修改数据的位数信息和修改数据的偏移地址,从flash存储器中遍历确定修改数据。
S615:向操作系统返回修改数据。
由此可见,本申请先判断对固件的处理指令的指令类型,再根据指令类型依次执行对应的后续步骤,能够避免例如接收到处理指令A,却执行处理指令B对应的步骤等对固件处理错误的情况出现,从而顺利完成对固件的在线修改,提高修改后的配置文件的准确率,使固件加载成功。
基于前文实施例提供的固件的在线修改方法,本申请中还相应提供了一种固件的在线修改装置。下面对本申请实施例提供的固件的在线修改装置进行具体介绍。
参见图7,该图为本申请实施例提供的一种固件的在线修改装置的结构示意图。如图7所示,该固件的在线修改装置700,具体可以包括:
修改指令接收模块710,用于接收对固件的配置文件的修改指令;固件存储在flash存储器中;
修改指令解析模块720,用于解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址;
配置文件读取模块730,用于将配置文件从flash存储器读取到内存中;
待修改数据确定模块740,用于根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据;
待修改数据替换模块750,用于将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件;
配置文件写入模块760,用于将修改后的配置文件重新写入flash存储器中。
作为一种实施方式,flash存储器包括第一存储区域、第二存储区域和启动标记区域;第一存储区域和第二存储区域各存储一份配置文件;启动标记区域中的启动标记信息标识第一存储区域;启动标记区域中的启动标记信息用于标识flash存储器中被读取的存储区域;
配置文件读取模块730,具体可以用于:
将配置文件从flash存储器中的第一存储区域读取到内存中;
相应地,配置文件写入模块760,具体可以用于:
将修改后的配置文件重新写入flash存储器中的第一存储区域;
作为一种实施方式,flash存储器包括第一存储区域、第二存储区域和启动标记区域;第一存储区域和第二存储区域各存储一份配置文件;启动标记区域中的启动标记信息标识第一存储区域;启动标记区域中的启动标记信息用于标识flash存储器中被读取的存储区域;
配置文件读取模块730,具体可以包括:
第一配置文件读取单元,用于若第二存储区域存储的配置文件的版本与第一存储区域存储的配置文件的版本相同,则将配置文件从flash存储器中的第二存储区域读取到内存中;
第二配置文件读取单元,用于若第二存储区域存储的配置文件的版本与第一存储区域存储的配置文件的版本不同,则将第二存储区域存储的配置文件的版本变更为第一存储区域存储的配置文件的版本,并将配置文件从flash存储器中的第二存储区域读取到内存中;
相应地,配置文件写入模块760,具体可以用于:
将修改后的配置文件重新写入flash存储器中的第二存储区域;
相应地,该固件的在线修改设备700,还可以包括:
信息更新模块,用于将启动标记信息更新为标识第二存储区域的启动标记信息。
作为一种实施方式,该固件的在线修改设备700,还可以包括:
查询指令接收模块,用于接收操作系统发送的对修改后的配置文件的查询指令;查询指令为操作系统查询修改后的配置文件的修改是否正确的指令;
查询指令解析模块,用于解析查询指令,得到修改数据的位数信息和修改数据的偏移地址;
修改数据确定模块,用于根据修改数据的位数信息和修改数据的偏移地址,从flash存储器中遍历确定修改数据;
修改数据返回模块,用于向操作系统返回修改数据,以使操作系统基于修改数据,查询修改后的配置文件的修改是否正确。
作为一种实施方式,配置文件包括循环冗余校验码;待修改数据替换模块750,具体可以包括:
待修改数据替换单元,用于将内存中配置文件中的待修改数据替换为修改数据,得到待校验配置文件;
配置文件校验单元,用于通过循环冗余校验函数校验待校验配置文件,并生成新循环冗余校验码;
校验码替换单元,用于将待校验配置文件中的循环冗余校验码替换为新循环冗余校验码,得到修改后的配置文件。
作为一种实施方式,该固件的在线修改设备700,还可以包括:
位数信息判断模块,用于判断修改数据的位数信息与修改指令的位数信息是否相符;
第一步骤执行模块,用于若修改数据的位数信息与修改指令的位数信息相符,则执行将配置文件从flash存储器读取到内存中的步骤;
指令返回模块,用于若修改数据的位数信息与修改指令的位数信息不相符,则向操作系统返回修改数据解析错误的指令。
作为一种实施方式,该固件的在线修改设备700,还可以包括:
指令类型判断模块,用于判断对固件的处理指令的指令类型;
第二步骤执行模块,用于若处理指令的指令类型是对固件的配置文件的修改指令,则执行接收对固件的配置文件的修改指令的步骤。
本申请实施例提供了一种固件的在线修改设备,该固件的在线修改设备可以为服务器。图8是本申请实施例提供的一种服务器结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在服务器900上执行存储介质930中的一系列指令操作。
服务器900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作系统941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
其中,CPU 922用于执行如下步骤:
接收对固件的配置文件的修改指令;固件存储在flash存储器中;
解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址;
将配置文件从flash存储器读取到内存中;
根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据;
将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件;
将修改后的配置文件重新写入flash存储器中。
本申请实施例还提供了另一种固件的在线修改设备,该固件的在线修改设备可以为终端设备。如图9所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。以该终端设备为手机为例:
图9示出的是与本申请实施例提供的手机的部分结构的框图。参考图9,手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图9中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图9对手机的各个构成部件进行具体的介绍:
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,RF电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:LowNoise Amplifier,英文缩写:LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global Systemof Mobile communication,英文缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:CodeDivision Multiple Access,英文缩写:CDMA)、宽带码分多址(英文全称:Wideband CodeDivision Multiple Access,英文缩写:WCDMA)、长期演进(英文全称:LongTermEvolution,英文缩写:LTE)、电子邮件、短消息服务(英文全称:Short MessagingService,SMS)等。
存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文缩写:OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图9中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经RF电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体数据及信息收集。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。
手机还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该手机所包括的处理器1080还具有以下功能:
接收对固件的配置文件的修改指令;固件存储在flash存储器中;
解析修改指令得到修改数据,并得到修改数据的位数信息和修改数据的偏移地址;
将配置文件从flash存储器读取到内存中;
根据修改数据的位数信息和修改数据的偏移地址,从内存中遍历确定配置文件中的待修改数据;
将内存中配置文件中的待修改数据替换为修改数据,得到修改后的配置文件;
将修改后的配置文件重新写入flash存储器中。
本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序在固件的在线修改设备上运行时,使得该固件的在线修改设备执行前述各个实施例的一种固件的在线修改方法中的任意一种实施方式。
本申请实施例还提供一种包括计算机程序的计算机程序产品,当其在固件的在线修改设备上运行时,使得固件的在线修改设备执行前述各个实施例的一种固件的在线修改方法中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,系统的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个系统可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的系统可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储计算机程序的介质。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种固件的在线修改方法,其特征在于,所述方法包括:
接收对固件的配置文件的修改指令;所述固件存储在flash存储器中;
解析所述修改指令得到修改数据,并得到所述修改数据的位数信息和所述修改数据的偏移地址;
将所述配置文件从所述flash存储器读取到内存中;
根据所述修改数据的位数信息和所述修改数据的偏移地址,从所述内存中遍历确定所述配置文件中的待修改数据;
将所述内存中所述配置文件中的待修改数据替换为所述修改数据,得到修改后的配置文件;
将所述修改后的配置文件重新写入所述flash存储器中。
2.根据权利要求1所述的方法,其特征在于,所述flash存储器包括第一存储区域、第二存储区域和启动标记区域;所述第一存储区域和所述第二存储区域各存储一份所述配置文件;所述启动标记区域中的启动标记信息标识所述第一存储区域;所述启动标记区域中的启动标记信息用于标识所述flash存储器中被读取的存储区域;所述将所述配置文件从所述flash存储器读取到内存中,具体包括:
将所述配置文件从所述flash存储器中的所述第一存储区域读取到内存中;
所述将所述修改后的配置文件重新写入所述flash存储器中,具体包括:
将所述修改后的配置文件重新写入所述flash存储器中的所述第一存储区域。
3.根据权利要求1所述的方法,其特征在于,所述flash存储器包括第一存储区域、第二存储区域和启动标记区域;所述第一存储区域和所述第二存储区域各存储一份所述配置文件;所述启动标记区域中的启动标记信息标识所述第一存储区域;所述启动标记区域中的启动标记信息用于标识所述flash存储器中被读取的存储区域;所述将所述配置文件从所述flash存储器读取到内存中,具体包括:
若所述第二存储区域存储的配置文件的版本与所述第一存储区域存储的配置文件的版本相同,则将所述配置文件从所述flash存储器中的所述第二存储区域读取到内存中;
若所述第二存储区域存储的配置文件的版本与所述第一存储区域存储的配置文件的版本不同,则将所述第二存储区域存储的配置文件的版本变更为所述第一存储区域存储的配置文件的版本,并将所述配置文件从所述flash存储器中的所述第二存储区域读取到内存中;
所述将所述修改后的配置文件重新写入所述flash存储器中,具体包括:
将所述修改后的配置文件重新写入所述flash存储器中的所述第二存储区域;
所述方法还包括:
将所述启动标记信息更新为标识所述第二存储区域的启动标记信息。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
接收操作系统发送的对所述修改后的配置文件的查询指令;所述查询指令为所述操作系统查询所述修改后的配置文件的修改是否正确的指令;
解析所述查询指令,得到所述修改数据的位数信息和所述修改数据的偏移地址;
根据所述修改数据的位数信息和所述修改数据的偏移地址,从所述flash存储器中遍历确定所述修改数据;
向所述操作系统返回所述修改数据,以使所述操作系统基于所述修改数据,查询所述修改后的配置文件的修改是否正确。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述配置文件包括循环冗余校验码;所述将所述内存中所述配置文件中的待修改数据替换为所述修改数据,得到修改后的配置文件,具体包括:
将所述内存中所述配置文件中的待修改数据替换为所述修改数据,得到待校验配置文件;
通过循环冗余校验函数校验所述待校验配置文件,并生成新循环冗余校验码;
将所述待校验配置文件中的所述循环冗余校验码替换为所述新循环冗余校验码,得到所述修改后的配置文件。
6.根据权利要求1-3任一项所述的方法,其特征在于,在将所述配置文件从所述flash存储器读取到内存中之前,还包括:
判断所述修改数据的位数信息与所述修改指令的位数信息是否相符;
若所述修改数据的位数信息与所述修改指令的位数信息相符,则执行所述将所述配置文件从所述flash存储器读取到内存中的步骤;
若所述修改数据的位数信息与所述修改指令的位数信息不相符,则向操作系统返回修改数据解析错误的指令。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
判断对所述固件的处理指令的指令类型;
若所述处理指令的指令类型是所述对固件的配置文件的修改指令,则执行所述接收对固件的配置文件的修改指令的步骤。
8.一种固件的在线修改装置,其特征在于,所述装置包括:
修改指令接收模块,用于接收对固件的配置文件的修改指令;所述固件存储在flash存储器中;
修改指令解析模块,用于解析所述修改指令得到修改数据,并得到所述修改数据的位数信息和所述修改数据的偏移地址;
配置文件读取模块,用于将所述配置文件从所述flash存储器读取到内存中;
待修改数据确定模块,用于根据所述修改数据的位数信息和所述修改数据的偏移地址,从所述内存中遍历确定所述配置文件中的待修改数据;
待修改数据替换模块,用于将所述内存中所述配置文件中的待修改数据替换为所述修改数据,得到修改后的配置文件;
配置文件写入模块,用于将所述修改后的配置文件重新写入所述flash存储器中。
9.一种固件的在线修改设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储计算机程序,并将所述计算机程序传输给所述处理器;
所述处理器用于根据所述计算机程序中的指令执行权利要求1至7中任一项所述的固件的在线修改方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现权利要求1至7任一项所述的固件的在线修改方法的步骤。
11.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被固件的在线修改设备执行时实现权利要求1至7任一项所述的固件的在线修改方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310838699.8A CN116954750A (zh) | 2023-07-07 | 2023-07-07 | 一种固件的在线修改方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310838699.8A CN116954750A (zh) | 2023-07-07 | 2023-07-07 | 一种固件的在线修改方法、装置及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116954750A true CN116954750A (zh) | 2023-10-27 |
Family
ID=88450414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310838699.8A Pending CN116954750A (zh) | 2023-07-07 | 2023-07-07 | 一种固件的在线修改方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954750A (zh) |
-
2023
- 2023-07-07 CN CN202310838699.8A patent/CN116954750A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106970790B (zh) | 一种应用程序创建的方法、相关设备及系统 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
WO2014169678A1 (en) | Method and device for signing program crash | |
CN103634294A (zh) | 信息验证方法和装置 | |
US20140115021A1 (en) | Method and Terminal for Accessing a File of a Terminal | |
CN111240897B (zh) | 一种数据处理方法及相关设备 | |
CN104281515A (zh) | 一种日志数据的调整方法和装置 | |
WO2014173211A1 (en) | Code coverage testing method, device and system | |
KR20120109800A (ko) | Fota 기반의 데이터 갱신 방법 및 이를 지원하는 휴대 단말기 | |
CN110046497B (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN114115895A (zh) | 一种代码查询方法、装置、电子设备和存储介质 | |
CN106708555B (zh) | 一种加载插件的方法和装置 | |
US9928134B2 (en) | Method and apparatus for repairing dynamic link library file | |
CN116610372B (zh) | 一种中央处理器配置方法、装置及相关产品 | |
CN106407800A (zh) | 一种hook的方法及终端设备 | |
US9442825B2 (en) | Method and device for signing program crash | |
CN116954750A (zh) | 一种固件的在线修改方法、装置及相关产品 | |
CN112463199A (zh) | 一种系统升级方法及终端 | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
CN116563041A (zh) | 一种数据对账方法以及相关装置 | |
CN111078233B (zh) | 一种应用推广的实现方法、装置、设备及存储介质 | |
CN115756879A (zh) | 一种内存共享方法和相关装置 | |
CN109308164B (zh) | 一种系统迁移的方法和装置 | |
CN107402715B (zh) | 数据搬移的方法、装置、存储器及终端 | |
CN111475177B (zh) | 一种服务器的程序写入方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |