CN115904421A - 固件空中升级方法、装置和植于处理器的软件架构 - Google Patents
固件空中升级方法、装置和植于处理器的软件架构 Download PDFInfo
- Publication number
- CN115904421A CN115904421A CN202110956977.0A CN202110956977A CN115904421A CN 115904421 A CN115904421 A CN 115904421A CN 202110956977 A CN202110956977 A CN 202110956977A CN 115904421 A CN115904421 A CN 115904421A
- Authority
- CN
- China
- Prior art keywords
- service
- loaded
- new version
- upgrading
- mapping file
- 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
Abstract
本申请涉及一种固件空中升级方法、装置和植于处理器的软件架构。固件空中升级方法包括:获取待加载服务升级包内的映像文件;待加载服务升级包为服务器制作且储存于片外FLASH内;将映像文件存入片内ROM的业务层内对应的区域;片内ROM的业务层内包括为各类服务划分的一一对应的独立区域;加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务,避免传统技术对整个业务层删除再重写导致在升级过程中其他功能服务不能使用的问题,而实现固件升级过程中,其他功能服务仍然能够使用,由于本申请固件空中升级方法针对需要升级更新的服务或者新添服务,因此大大缩减了升级包的长度,在固件空中升级过程中,减少了对储存芯片的占用。
Description
技术领域
本申请涉及软件技术领域,特别是涉及一种固件空中升级方法、装置和植于处理器的软件架构。
背景技术
固件空中升级(Firmware Over The Air,FOTA)是指利用无线传输为具有连网功能的设备,提供固件升级的服务,以达到更迭产品功能的目的。传统升级方法采用以一片连续的ROM(Read-Only Memory,只读存储器)区域作为对象进行升级。对ROM空间地址划分为boot loader(引导加载程序)层、协议栈层、业务层,且每一层次的代码空间分配是连续的。由于业务层代码是实现设备的逻辑功能的区域,升级大部分情况只对业务层代码升级替换。
具体升级过程为将整块业务层代码进行打包制作成升级包,然后下发至设备,升级业务层代码时,设备需要先跳转至boot loader层引导启动升级,升级过程中会擦除整块业务层区域的代码,然后将接收到的升级包内容写回业务层中,最后跳转回业务层代码运行。
该升级方案特点是实现流程单一、易操作,但存在短板:用户在设备升级期间无法正常使用所有功能,原因是进入升级后,代码需要跳转到boot loader层引导升级,升级阶段下还会擦除整块业务层区域的代码,所以导致这个期间无法正常使用设备的业务,需等整个升级过程完成后,跳转回业务层才能正常使用。因此,在实现过程中,发明人发现传统技术中至少存在如下问题:传统固件空中升级技术在升级过程中导致设备功能无法正常使用。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在加载新服务时保证其他功能服务能够正常使用的固件空中升级方法、装置和植于处理器的软件架构。
第一方面,本申请实施例从终端设备侧提供一种固件空中升级方法,包括以下步骤:
获取待加载服务升级包内的映像文件;待加载服务升级包为服务器制作且储存于片外FLASH内;
将映像文件存入片内ROM的业务层内对应的区域;片内ROM的业务层内包括为各类服务划分的一一对应的独立区域;
加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务。
可选的,加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务的步骤中,还包括步骤:
解析映像文件,得到映像文件内的代码段;
调用分散加载器对代码段进行重定位,转化成新版服务。
可选的,调用分散加载器对代码段进行重定位,转化成新版服务的步骤中,包括步骤:
调用分散加载器对新版服务对应的接口进行重定位;
调用分散加载器对新版服务对应的调用函数进行重定位;
调用分散加载器对新版服务对应的全局变量进行重定位。
可选的,加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务的步骤中,包括步骤:
将新版服务写入服务管理列表;
调用服务管理器对新版服务进行注册;
调用任务调度器创建新版服务对应的任务,并采用时间片轮询调度策略运行已有任务和新版服务对应的任务。
可选的,加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务的步骤之前,还包括步骤:
若存在与新版服务相对应的旧版服务,则删除旧版服务。
可选的,删除旧版服务的步骤中,包括步骤:
调用服务管理器注销旧版服务,并将旧版服务从服务管理列表中移除;
调用任务调度器注销旧版服务对应任务的任务接口。
可选的,获取待加载服务升级包内的映像文件的步骤中,包括步骤:
利用片外FLASH接收服务器下发的待加载服务升级包;
利用片外FLASH解析待加载服务升级包,得到待加载服务升级包内的映像文件。
第二方面,本申请实施例还从服务器侧提供一种固件空中升级方法,包括以下步骤:
获取待加载服务的代码;
采用交叉编译对待加载服务的代码进行编译,生成映像文件;
对映像文件进行封装,生成待加载服务升级包;
将待加载服务升级包通过TV端下发至终端设备;待加载服务升级包用于指示终端设备加载新版服务。
第三方面,本申请实施例还从终端设备侧提供一种固件空中升级装置,包括:
文件获取模块,用于获取待加载服务升级包内的映像文件;待加载服务升级包为服务器制作且储存于片外FLASH内;
对位存储模块,用于将映像文件存入片内ROM的业务层内对应的区域;片内ROM的区域为在片内ROM的业务层上为各类服务划分的独立区域;
加载运行模块,用于加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务。
第四方面,本申请实施例还从服务器侧提供一种固件空中升级装置,包括:
代码获取模块,用于获取待加载服务的代码;
编译模块,用于采用交叉编译对待加载服务的代码进行编译,生成映像文件;
封装模块,用于对映像文件进行封装,生成待加载服务升级包;
数据传输模块,用于将待加载服务升级包通过TV端下发至终端设备;待加载服务升级包用于指示终端设备加载新版服务。
第四方面,本申请实施例还提供一种植于处理器的软件架构,包括业务层;
业务层包括按服务划分的独立服务模块;各独立服务模块一一对应地储存于处理器的片内ROM业务层内的隔离区域。
上述技术方案中的一个技术方案具有如下优点和有益效果:
本申请固件空中升级方法,在终端设备的片内ROM的业务层上划分与各类服务一一对应的区域,各类服务一一对应的储存于各区域内相互隔离,在各次固件空中升级过程中,针对需要升级更新的服务或者新添服务进行加载,避免传统技术对整个业务层删除再重写导致在升级过程中其他功能服务不能使用的问题,而实现固件升级过程中,其他功能服务仍然能够使用,增加了实用性,另外由于本申请固件空中升级方法针对需要升级更新的服务或者新添服务,因此大大缩减了升级包的长度,在固件空中升级过程中,减少了对储存芯片的占用。
附图说明
图1为本申请实施例中固件空中升级方法的应用环境图。
图2为本申请实施例中提供的软件架构的示意图。
图3为本申请实施例中终端设备侧固件空中升级方法的流程示意图。
图4为本申请实施例中形成新版服务步骤的流程示意图。
图5为本申请实施例中服务器侧固件空中升级方法的流程示意图。
图6为本申请实施例中终端设备侧固件空中升级装置的结构框图。
图7为本申请实施例中服务器侧固件空中升级装置的结构框图。
图8为本申请实施例中终端设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的固件空中升级方法,可以应用于如图1所示的应用环境中。其中,终端设备102通过网络与服务器104进行通信。服务器制作待加载服务升级包,并将待加载服务升级包下发至终端设备的片外FLASH(是指处理器外的闪存)进行储存,终端设备的处理器从片外FLASH获取待加载服务升级包内的映像文件,将映像文件存入片内ROM的业务层内对应的区域,将映像文件内的新版服务进行加载运行。其中,终端设备102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
为了解决传统固件空中升级技术在升级过程中导致设备功能无法正常使用的问题,本申请提供一种固件空中升级方法,为更好地理解本申请固件空中升级方法,先结合附图2对于固件空中升级方法相对应的植于处理器的软件架构,该软件架构包括业务层;还包括应用级SDK(Software Development Kit,中文软件开发工具包)、RTOS(Real-timeoperating system,实时操作系统)任务调度器、服务管理列表、任务层、服务管理器、分散加载器、芯片级SDK以及数据库;其中,业务层包括按服务划分的独立服务模块,例如,划分成HID案件服务、语音服务、电池服务等,各独立服务模块之间是相互独立隔离,反应到硬件上,各独立服务模块一一对应地储存于处理器的片内ROM业务层内的独立区域(独立区域与独立区域之间在片内ROM的空间地址上是非连续的、非连接的),即各独立服务模块分别独立地储存在片内ROM业务层上时,在固件空中升级过程中,相互之间无关联,可单独针对一个或几个独立服务模块进行升级,而不造成对其它独立服务模块的影响。任务层为由任务调度器创建的与服务对应的任务,例如HID按键服务对应HID按键任务、语音服务对应语音任务、电池服务对应电池任务。数据库包括启动文件、调度器、库函数、片内外设和外挂驱动文件、芯片内部资源管理表。服务管理列表用于管理服务,注册服务。
以下将结合上述软件构架以及附图3和4,从终端设备侧对本申请固件空中升级方法的步骤进行详细说明,如图3所述,本申请固件空中升级方法包括以下步骤:
步骤S310,获取待加载服务升级包内的映像文件;待加载服务升级包为服务器制作且储存于片外FLASH内。
需要说明的是,待加载服务升级包由服务器根据待加载服务对应的代码制作而成。待加载服务升级包可用于对旧版服务进行升级,也用于增添新的服务,在一次升级过载中可以是针对一项服务、两项服务或者几项服务的升级文件,具体要看当前升级轮次,需要针对哪项服务进行申请,如果涉及多项服务的升级,也可将各项服务的升级文件制作成对应的服务的多个待加载服务升级。
服务器将制作好的待加载服务升级包下发给终端设备,终端设备将待加载服务升级包存储在片外FLASH内,在一个示例中,在终端设备需要升级时,服务器实时地将待加载服务升级包下发给终端设备;在另一个示例中,服务器预先将待加载服务升级包下发给终端设备,终端设备可选择时间启动升级,完成对待加载服务升级包写入。
待加载服务升级包内携带映像文件,映像文件(Executable Linkable Format,ELF)用于终端设备的处理器加载新版服务。映像文件包括ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table),在生成映像文件的过程中,在映像文件头部预留10个字节用于描述映像文件的升级标示码、版本号、文件大小以及CRC(CyclicalRedundancyCheck,循环校验码)校验码,其中,升级标示码占用2个字节,版本号占用2个字节,文件大小占用4个字节,CRC校验码占用2个字节。终端设备的处理器利用片外FLASH接收服务器下发的待加载服务升级包的过程中包括:终端设备在接收完待加载服务升级包,对待加载服务升级包内的映像文件的CRC校验码进行校验,当CRC校验码与预算校验码一致时,将待加载服务升级包存入片外FLASH。在获取待加载服务升级包之后,终端设备的处理器利用片外FLASH解析待加载服务升级包,得到待加载服务升级包内的映像文件。其中,映像文件包括代码段(text),数据段(data),BSS段(Bss segment),堆段(heap)和栈段(stack)等。
步骤S320,将映像文件存入片内ROM的业务层内对应的区域;片内ROM的业务层内包括为各类服务划分的一一对应的独立区域。
需要说明的是,终端设备的处理器的片内ROM从片外FLASH读取映像文件,或者终端设备的片外FLASH将映像文件写入片内ROM。具体的,片内ROM的业务层空间地址被划分成与各类服务划分的一一对应的独立区域,以实现各类服务在片内ROM内单纯存储,例如,HID案件服务对应一个独立区域,语音服务对应一个独立区域,电池电量检测服务对应一个独立区域。独立区域与独立区域之间的空间地址是不接续的,相互之间是断裂。
例如,待加载服务为HID案件服务,则将映像文件存入HID案件服务对应的独立区域;例如,待加载服务为电池电量检测服务,则将映像文件存入电池电量检测服务对应的独立区域;例如,待加载服务为语音服务,则将映像文件存入语音服务对应的独立区域。
步骤S330,加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务。
需要说明的是,终端设备的处理器将映像文件内包含的新版服务安装到储存器内。例如,待加载服务为HID案件服务,则将新版HID案件服务安装到HID案件服务对应的独立区域;例如,待加载服务为电池电量检测服务,则将新版电池电量检测服务安装到电池电量检测服务对应的独立区域;例如,待加载服务为语音服务,则将新版语音服务安装到语音服务对应的独立区域。另外,待加载服务未处理器之前未安装的,则片内ROM中开辟一个独立区域,并将该新版服务安装到该独立区域内。
已有服务为终端设备已经安转的服务,且不属于需要更新升级的服务,在完成新版服务加载之后,采用时间片轮询调度策略调度已有服务和新版服务,即给已有服务和新版服务设定同等优先级,使得每个任务在时间范围内都能得到运行的机会。将新版服务进行加载运行的过程为:将新版服务写入服务管理列表;调用服务管理器对新版服务进行注册;调用任务调度器创建新版服务对应的任务,并采用时间片轮询调度策略运行已有任务和新版服务对应的任务。
如图4所述,为了顺利完成新版服务加载,加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务的步骤之前,包括步骤:
步骤S410,解析映像文件,得到映像文件内的代码段。
需要说明的是,处理器的片内ROM调用分散加载器对映像文件进行解析,获取映像文件中的代码段,以便后续对代码段进行重定位,其中分散加载器用于将代码写入不同的存储空间,即将本申请中新版服务写入对应的独立区域内。
步骤S420,调用分散加载器对代码段进行重定位,转化成新版服务。
需要说明的是,重定位即为代码重定位的过程,包括接口重定位、调用函数重定位和全局变量重定位。在完成重定位之后,代码段将转化为新版服务。
处理器调用分散加载器对新版服务对应的接口进行重定位,包括步骤:
步骤S501,将片外FLASH的ELF文件中的.text段表(代码段)所有内容拷贝到片内ROM对应的独立区域。
步骤S502,读取ELF文件的.rel.text段表,并获取该段表(.rel.text段表)的所有项。
步骤S503,遍历该段表(.rel.text段表)的每一项内容。
步骤S504,判断每一项内容的重定位类型是否为R_ARM_THM_CALL,若否,则返回步骤S503,若是,则进入步骤S505。
步骤S505,获取该项的重定位地址偏移offset。
步骤S506,根据.text段表在片内ROM的实际位置偏移offset。
步骤S507,获得接口/接口内调用待重定位函数在片内ROM中的实际地址。
步骤S508,获取该项的接口/接口内调用待重定位函数的名称字符在.strtab的索引。
步骤S509,根据索引在.strtab段表中拿到接口的函数名称或者是接口内调用带重定位函数的名称。
步骤S510,读取.symtab段表的每一项的字符名称索引是否和上述索引一致,若是,则进入步骤S511,若否,则进入步骤S513。
步骤S511,判断该项的类型是不是FUNC,若是,则进入步骤S5121,若否,则进入步骤S513。
步骤S512,说明该项是接口,并记住这个接口在片内ROM中的实际地址,之后直接调用该接口的地址,即可运行该接口。
步骤S513,.rel.text段表是否遍历完毕,若是,则完成接口重定位,若否,则返回步骤S503。
处理器调用分散加载器对新版服务对应的调用函数进行重定位,包括步骤:
步骤S601,将片外FLASH的ELF文件中.text段表所有内容拷贝到片内ROM对应的独立区域。
步骤S602,读取ELF文件的.rel.text段表,并获取该段表的所有项。
步骤S603,遍历该段表的每一项内容。
步骤S604,判断每一项的重定位类型是否为R_ARM_THM_CALL,若否,则返回步骤S603,若是,则进入步骤S605。
步骤S605,获取该项的重定位地址偏移offset。
步骤S606,根据.text段表在片内ROM的实际位置偏移offset。
步骤S607,获得接口内调用待重定位函数在片内ROM中的实际地址:obj_address。
步骤S608,获取片内MCU中,该函数的定义入口地址:source address。
步骤S609,根据source_address、obj_address、offset生成BL.W机器码。
步骤S610,机器码存放到obj_address中。
步骤S611,完成接口内调用该函数的重定位。
步骤S612,.rel.text段表是否遍历完毕,若是,则完成调用函数重定位,若否,则返回步骤S603。
处理器调用分散加载器对新版服务对应的全局变量进行重定位,包括步骤:
步骤S701,把片外FLASH的ELF文件中.text段表所有内容拷贝到片内ROM对应的独立区域。
步骤S702,读取ELF文件的.rel.text段表,并获取该段表的所有项。
步骤S703,遍历该段表的每一项内容。
步骤S704,判断每一项的重定位类型是否为R_ARM_ABS32,若否,则返回步骤S703,若是,则进入步骤S705。
步骤S705,获取该项的重定位地址偏移offset。
步骤S706,根据.text段表在片内ROM的实际位置偏移offset。
步骤S707,获得该全局变量在片内ROM中的实际地址。
步骤S708,读取ELF文件的.symtab段表,并获取该全局变量的值在.data段表中的索引。
步骤S709,根据索引,找到在.data段表中存放该全局变量的值的位置。
步骤S710,把值存放到该全局变量在片内ROM实际地址中。
步骤S711,完成该全局变量的重定位。
步骤S712,.rel.text段表是否遍历完毕,若是,则完成全局变量重定位,若否,则返回步骤S703。
在旧版服务进行升级,需要事先删除旧版服务,即在安装新版服务之前,处理器会检查是否存在与新版服务对应的旧版服务,若存在与新版服务相对应的旧版服务,则删除旧版服务。在一个示例中,删除旧版服务的过程为:调用服务管理器注销旧版服务,并将旧版服务从服务管理列表中移除;调用任务调度器注销旧版服务对应任务的任务接口。
在终端设备的片内ROM的业务层上划分与各类服务一一对应的区域,各类服务一一对应的储存于各区域内相互隔离,在各次固件空中升级过程中,针对需要升级更新的服务或者新添服务进行加载,避免传统技术对整个业务层删除再重写导致在升级过程中其他功能服务不能使用的问题,而实现固件升级过程中,其他功能服务仍然能够使用,增加了实用性,另外由于本申请固件空中升级方法针对需要升级更新的服务或者新添服务,因此大大缩减了升级包的长度,在固件空中升级过程中,减少了对储存芯片的占用。因为升级包仅含所需更迭或者新添某个功能服务的代码,不需要将整个业务层代码进行打包,所以升级包的长度大大减少,间接减少升级包的传输时间。启动升级后不需要代码跳转至bootloader层引导升级,更不需要擦除整块业务层代码再回写新的业务层代码,解决用户使用设备时遇到OTA场景,需要等待整个过程结束后才能继续使用的问题,在升级包数据传输的过程和服务的加载过程中,其他服务的运行不受影响。
以下将结合上述软件构架以及附图5,从服务器侧对本申请固件空中升级方法的步骤进行详细说明,如图5所述,本申请固件空中升级方法包括以下步骤:
步骤S810,获取待加载服务的代码。
需要说明的是,编程人员可将编写好的待加载服务的代码上传至服务器,或者直接在服务器上编写待加载服务的代码。
步骤S820,采用交叉编译对待加载服务的代码进行编译,生成映像文件。
需要说明的是,在服务器内搭建交叉编译环境,并在linux-ubuntu平台下安装支持ARM-GCC的编译链,创建一个命名为xxx_ex.c的文件,编写以服务作为对象代码接口(包含构造接口、析构接口以及业务功能接口)。
xxx_ex.c的文件编写规则为:变量的定义采用已初始化的全局变量,后续要在处理器内部重定位,接口要以服务作为对象进行设计,上述接口内部调用的函数是处理器内部已知函数,后续要在处理器内部重定位。
对xxx_ex.c的文件进行交叉编译,生成映像文件:
通过arm-none-eabi-gcc-c Battery_ex.c-mthumb-mcpu=cortex-m4指令生成目标文件;通过arm-none-eabi-ld-rBattery_ex.o-o Battery_ex.elf将目标文件转化成对应的映像文件。
步骤S830,对映像文件进行封装,生成待加载服务升级包。
需要说明的是,服务器在映像文件的表头前预留10个字节(该10个字节的功能如前所述),完成对映像文件的封装,生成待加载服务升级包。
步骤S840,将待加载服务升级包通过TV端下发至终端设备;待加载服务升级包用于指示终端设备加载新版服务。
由于本申请的软件框架采取面向服务的设计理念,只针对需要升级的服务打包成升级包,无需整个业务层代码打包成升级包,大大减少升级包的长度,从而降低升级包的传输时间,降低了服务器占用时间,总体上提高整个升级流程的效率。
以下以电量检测服务为例,说明终端设备与服务器的交互流程:
服务器将New Battery Server(新版电量检测服务)的代码通过交叉编译成特定格式的映像文件后,封装成升级包,并将升级包发送给到TV端。
服务器通过TV端将升级包通过蓝牙传输服务下发至终端设备。终端设备接收映像文件存入片外FLASH,从片外FLASH读取ELF文件放入片内ROM后,对映像文件的代码段进行重定位,最终得到New Battery Server各个接口(服务的注册、注销等)。
终端设备的处理器调用服务管理器注销Old Battery Server,服务管理列表移除Old Battery Server,对应调用RTOS任务调度器销毁Old Battery Server的接口,RTOS任务调度器中不再运行Old Battery Server。
终端设备的处理器将New Battery Server加入服务管理列表中,服务管理器注册New Battery Server(通过调用该服务的注册接口),再对应调用RTOS任务调度器的创建New Battery Server的接口,RTOS任务调度器把New Battery Server加入时间片轮询进行调度。
应该理解的是,虽然图3-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图6所述,从终端设备侧提供了一种固件空中升级装置,包括:
文件获取模块61,用于获取待加载服务升级包内的映像文件;待加载服务升级包为服务器制作且储存于片外FLASH内;
对位存储模块63,用于将映像文件存入片内ROM的业务层内对应的区域;片内ROM的区域为在片内ROM的业务层上为各类服务划分的独立区域;
加载运行模块65,用于加载映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和新版服务。
如图7所述,从服务器侧提供一种固件空中升级装置,包括:
代码获取模块71,用于获取待加载服务的代码;
编译模块73,用于采用交叉编译对待加载服务的代码进行编译,生成映像文件;
封装模块75,用于对映像文件进行封装,生成待加载服务升级包;
数据传输模块77,用于将待加载服务升级包通过TV端下发至终端设备;待加载服务升级包用于指示终端设备加载新版服务。
关于固件空中升级装置的具体限定可以参见上文中对于固件空中升级方法的限定,在此不再赘述。上述固件空中升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请固件空中升级方法用于对终端设备进行升级,提供了一种终端设备,其内部结构图可以如图8所示。该终端设备包括通过系统总线连接的处理器、存储器、网络接口和片外FLASH。其中,该终端设备的处理器用于提供计算和控制能力,处理器包括片内ROM,用于存储软件程序。该终端设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该终端设备的网络接口用于与服务器通过网络连接通信。该片外FLASH用于接收服务器下发的升级包,该计算机程序被处理器执行时以实现一种固件空中升级方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
示例性的,上述终端设备的处理器执行计算机程序时实现以下步骤:
获取待加载服务升级包内的映像文件;所述待加载服务升级包为服务器制作且储存于片外FLASH内;
将所述映像文件存入片内ROM的业务层内对应的区域;所述片内ROM的业务层内包括为各类服务划分的一一对应的独立区域;
加载所述映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和所述新版服务。
示例性的,设置在终端设备上的计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待加载服务升级包内的映像文件;所述待加载服务升级包为服务器制作且储存于片外FLASH内;
将所述映像文件存入片内ROM的业务层内对应的区域;所述片内ROM的业务层内包括为各类服务划分的一一对应的独立区域;
加载所述映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和所述新版服务。
服务器用于制作升级包,示例性的,服务器包括处理器和存储介质;该存储介质存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取待加载服务的代码;
采用交叉编译对待加载服务的代码进行编译,生成映像文件;
对映像文件进行封装,生成待加载服务升级包;
将待加载服务升级包通过TV端下发至终端设备;待加载服务升级包用于指示终端设备加载新版服务。
示例性的,设置在服务器上的计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待加载服务的代码;
采用交叉编译对待加载服务的代码进行编译,生成映像文件;
对映像文件进行封装,生成待加载服务升级包;
将待加载服务升级包通过TV端下发至终端设备;待加载服务升级包用于指示终端设备加载新版服务。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种固件空中升级方法,其特征在于,包括以下步骤:
获取待加载服务升级包内的映像文件;所述待加载服务升级包为服务器制作且储存于片外FLASH内;
将所述映像文件存入片内ROM的业务层内对应的区域;所述片内ROM的业务层内包括为各类服务划分的一一对应的独立区域;
加载所述映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和所述新版服务。
2.根据权利要求1所述的固件空中升级方法,其特征在于,加载所述映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和所述新版服务的步骤中,包括步骤:
解析所述映像文件,得到所述映像文件内的代码段;
调用分散加载器对所述代码段进行重定位,转化成所述新版服务。
3.根据权利要求2所述的固件空中升级方法,其特征在于,调用分散加载器对所述代码段进行重定位,转化成所述新版服务的步骤中,包括步骤:
调用所述分散加载器对所述新版服务对应的接口进行重定位;
调用所述分散加载器对所述新版服务对应的调用函数进行重定位;
调用所述分散加载器对所述新版服务对应的全局变量进行重定位。
4.根据权利要求2所述的固件空中升级方法,其特征在于,加载所述映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和所述新版服务的步骤中,包括步骤:
将所述新版服务写入服务管理列表;
调用服务管理器对所述新版服务进行注册;
调用任务调度器创建所述新版服务对应的任务,并采用时间片轮询调度策略运行所述已有任务和所述新版服务对应的任务。
5.根据权利要求1所述的固件空中升级方法,其特征在于,将所述映像文件内的新版服务进行加载运行的步骤之前,还包括步骤:
若存在与所述新版服务相对应的旧版服务,则删除所述旧版服务。
6.根据权利要求5所述的固件空中升级方法,其特征在于,删除所述旧版服务的步骤中,包括步骤:
调用服务管理器注销所述旧版服务,并将所述旧版服务从服务管理列表中移除;
调用任务调度器注销所述旧版服务对应任务的任务接口。
7.根据权利要求1至6任意一项所述的固件空中升级方法,其特征在于,获取待加载服务升级包内的映像文件的步骤中,包括步骤:
利用片外FLASH接收服务器下发的所述待加载服务升级包;
利用所述片外FLASH解析所述待加载服务升级包,得到所述待加载服务升级包内的所述映像文件。
8.一种固件空中升级方法,其特征在于,包括以下步骤:
获取待加载服务的代码;
采用交叉编译对所述待加载服务的代码进行编译,生成映像文件;
对所述映像文件进行封装,生成待加载服务升级包;
将所述待加载服务升级包通过TV端下发至终端设备;所述待加载服务升级包用于指示终端设备加载新版服务。
9.一种固件空中升级装置,其特征在于,包括:
文件获取模块,用于获取待加载服务升级包内的映像文件;所述待加载服务升级包为服务器制作且储存于片外FLASH内;
对位存储模块,用于将所述映像文件存入片内ROM的业务层内对应的区域;所述片内ROM的区域为在所述片内ROM的业务层上为各类服务划分的独立区域;
加载运行模块,用于加载所述映像文件对应的新版服务,并采用时间片轮询调度策略调度已有服务和所述新版服务。
10.一种固件空中升级装置,其特征在于,包括:
代码获取模块,用于获取待加载服务的代码;
编译模块,用于采用交叉编译对所述待加载服务的代码进行编译,生成映像文件;
封装模块,用于对所述映像文件进行封装,生成待加载服务升级包;
数据传输模块,用于将所述待加载服务升级包通过TV端下发至终端设备;所述待加载服务升级包用于指示终端设备加载新版服务。
11.一种植于处理器的软件架构,其特征在于,包括业务层;
所述业务层包括按服务划分的独立服务模块;各所述独立服务模块一一对应地储存于控制设备的片内ROM业务层内的区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110956977.0A CN115904421A (zh) | 2021-08-19 | 2021-08-19 | 固件空中升级方法、装置和植于处理器的软件架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110956977.0A CN115904421A (zh) | 2021-08-19 | 2021-08-19 | 固件空中升级方法、装置和植于处理器的软件架构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904421A true CN115904421A (zh) | 2023-04-04 |
Family
ID=86471434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110956977.0A Pending CN115904421A (zh) | 2021-08-19 | 2021-08-19 | 固件空中升级方法、装置和植于处理器的软件架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904421A (zh) |
-
2021
- 2021-08-19 CN CN202110956977.0A patent/CN115904421A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025559B (zh) | 一种业务处理方法及装置 | |
US7694291B2 (en) | Build optimizer tool for efficient management of software builds for mobile devices | |
US20050257023A1 (en) | Device memory management during electronic file updating | |
KR100871778B1 (ko) | 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치 | |
CN110569106A (zh) | 代码加载方法、装置、电子设备及计算机可读介质 | |
CA2360431A1 (en) | Method for loading applications in a multiapplication onplatform system equipped with data processing resources, corresponding executing system and method | |
CN110704177B (zh) | 计算任务处理方法、装置、计算机设备和存储介质 | |
EP1691282A1 (en) | Build optimizer tool for efficient management of software builds for mobile devices | |
CN105849698B (zh) | 动态编程中的执行防护 | |
CN110543327A (zh) | 业务组件复用方法、装置、计算机设备及存储介质 | |
JP5315128B2 (ja) | 処理依頼先管理装置、処理依頼先管理プログラムおよび処理依頼先管理方法 | |
CN104699503A (zh) | 一种替换安卓系统中函数的执行逻辑的方法及装置 | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
US20150113506A1 (en) | Method and system for adaptive loading of application | |
US20150113502A1 (en) | Method and system for encapsulation of application | |
CN102388363A (zh) | 以类别档案嵌入原生代码方式应用平台相依例行程序于虚拟机 | |
CN113961179A (zh) | Soar平台的服务接入方法、系统、电子装置和存储介质 | |
US20060174235A1 (en) | Native compile method, native compile preprocessing method, computer program, and server | |
CN110806891B (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN112631613A (zh) | 基于区块链平台的智能合约部署和调用方法及相关设备 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN112148351A (zh) | 一种应用软件跨版本兼容的方法和系统 | |
CN115269040B (zh) | 一种租户业务应用的拓展方法、装置及系统 | |
CN115904421A (zh) | 固件空中升级方法、装置和植于处理器的软件架构 | |
US20220261238A1 (en) | Method and system for deploying third-party application to microcontroller by means of edge assistance |
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 |