嵌入式固件程序移植方法、计算机装置及计算机可读存储介质与流程

文档序号:31049264发布日期:2022-08-06 06:20阅读:95来源:国知局
嵌入式固件程序移植方法、计算机装置及计算机可读存储介质与流程

1.本发明涉及固件程序代码移植的技术领域,具体地,是一种嵌入式固件程序移植方法以及实现这种方法的计算机装置、计算机可读存储介质。


背景技术:

2.现在很多嵌入式设备使用微型控制器,微型控制器的运行依赖于软件程序,而目前很多嵌入式设备的软件程序都是以固件的方式固化在微型控制器内。微型控制器内运行的固件可以分为误操作系统的固件程序和有操作系统的固件程序,其中,有操作系统的固件程序使用的常见的操作系统包括freertos操作系统、ucos操作系统、linux操作系统等,也有一部分微型控制器使用专用的操作系统。
3.对于无操作系统的固件程序,其代码架构主要分为初始化代码和主循环操作代码。其中,初始化代码仅仅在固件程序的启动之初运行一次,主要完成嵌入式设备的相关资源的工作模式设定以及初始化配置工作,并不涉及复杂的功能逻辑。主循环的操作代码用于实现嵌入式设备的各种功能需求,因此,主循环的操作代码内部包含较为复杂的关联关系以及处理逻辑。
4.主循环的操作代码常见的逻辑实现模式包括任务机调度模式、顺序流程跳转模式等。无论是何种实现方式,主循环的操作代码运行的基础均是程序能够不断地循环运行,对于不同的主循环操作代码,在每次重新进入一轮新的循环时,固件程序会根据实时的运行条件执行对应的逻辑跳转。
5.对于任务机调度模式,固件程序通常会根据处理的逻辑跳转到对应的一个小循环中不断运行,直至下一轮循环检测到满足其它的逻辑条件,再跳转到另一个小循环中不断运行。对于顺序流程跳转模式,固件程序会按照既定的操作代码顺序依次对各个相应的流程,并对各个流程进行处理。此外,在具体流程中会根据实时的运行条件完成不同的处置方式,并在处置完成后继续回归到主循环结构,依次执行后续流程,直至循环结束。
6.除此之外,在无操作系统的代码架构中,针对于实时性能要求较高的功能代码,也会使用微型控制器的“中断”资源,由“中断服务程序”实现对应的功能。
7.对于有操作系统的固件程序,其代码架构常见的有freertos操作系统、ucos操作系统、linux操作系等,不同的操作系统在具体的代码实现细节上面各具特色,能够适用于各自的细分领域。从宏观看,常见的有操作系统的固件程序都是由操作系统底层工作环境搭建、具体工作任务、空闲任务以及利用微控芯片“中断”资源进行代码调度这几个基本部分组成。
8.其中,操作系统底层工作环境搭建以及具体工作任务的创建操作,只是在固件程序启动之初运行一次。在固件程序的后续运行中,当固件程序运行条件满足具体任务的执行条件时,在利用微型控制器的“中断”资源执行任务调度,跳转到具体的任务代码执行相应操作。如果固件程序的运行条件对所有的任务均不满足执行条件时,则操作系统会不断
地执行空闲任务。此外,对实时性要求较高的功能代码,操作系统也允许直接使用微型控制器的“中断”资源,由“中断服务程序”实现对应的功能。
9.由于嵌入式设备可能使用无操作系统的代码架构,也可能使用有操作系统的代码架构。在已经开发了针对无操作系统的代码架构的固件程序,如果嵌入式设备的代码架构发生调整,变成使用无操作系统的代码架构,则要么进行重新开发,要么将固件程序从无操作系统的代码结构到有操作系统的代码架构进行移植。由于重新开发固件程序的成本较高,通常会选择固件程序移植的方法。
10.现有常见的处理方式是需要嵌入式软件工程师完成相关系统知识的学习,再进一步地将初始的固件程序各部分的代码逐一的地执行移植与调试。然而,这种移植方式需要花费大量的时间与精力,固件程序移植的时间非常长,且难以保证在固件程序的移植过程中不会产生功能冲突。如果移植后的固件程序产生功能冲突,将影响移植后的固件程序的运行,不利于嵌入式设备的稳定工作。


技术实现要素:

11.本发明的第一目的是提供一种移植时间短且不易出现功能冲突的嵌入式固件程序移植方法。
12.本发明的第二目的是提供一种实现上述嵌入式固件程序移植方法的计算机装置。
13.本发明的第三目的是提供一种实现上述嵌入式固件程序移植方法的计算机可读存储介质。
14.为实现本发明的第一目的,本发明提供的嵌入式固件程序移植方法包括获取初始固件程序中一次性执行的第一代码,将第一代码移植至目标固件程序中的任务创建的操作代码中;获取初始固件程序中循环执行的第二代码,将第二代码移植至目标固件程序中循环的执行函数中;获取初始固件程序中依赖中断资源运行的第三代码,将第三代码移植至目标固件程序中的中断服务程序中。
15.由上述方案可见,将初始固件程序按照其运行的性质划分为三种类型的代码,并根据三种类型的代码的运行性质分别移植到目标固件程序中有对应运行性质的程序中,可以避免固件程序代码的移植过程中不容易发生功能冲突的问题。
16.并且,对于嵌入式软件工程师而言,并不需要将初始的固件程序各部分的代码逐一的地执行移植与调试,能够大幅度减少固件程序代码移植的时间。
17.一个优选的方案是,初始固件程序为无操作系统的固件程序;目标固件程序为有操作系统的固件程序。
18.由此可见,本发明主要针对从无操作系统的固件程序到有操作系统的固件程序的移植,这种方式的移植能够快速的对三种类型的代码进行识别。
19.进一步的方案是,第一代码为初始固件程序启动后马上运行且仅运行一次的代码。
20.可见,对于一次性运行的代码将移植到有操作系统的固件程序中的任务创建的操作代码,由于任务创建的操作代码也仅仅在固件程序启动后运行一次,确保移植后对应于初始固件程序的一次性运行的代码仅仅运行一次。
21.更进一步的方案是,将第三代码移植至目标固件程序中的中断服务程序中包括:
将第三代码移植至操作系统的中断服务程序中。
22.由此可见,将初始固件程序中依赖中断资源运行的第三代码移植至操作系统的中断服务程序中,可以确保第三代码能够使用操作系统的中断功能。
23.更进一步的方案是,将第二代码移植至目标固件程序中循环的执行函数中包括:将第二代码移植至目标固件程序中的空闲任务的执行函数中。
24.由于有操作系统的固件程序中的空闲任务是被循环执行的,因此,将需要循环执行的第二代码移植至空闲任务的执行函数中,能够确保需要循环执行的第二代码能够在有操作系统的固件程序中被循环执行。
25.更进一步的方案是,第二代码为初始固件程序中的主循环代码。
26.更进一步的方案是,目标固件程序启动运行后,仅对任务创建的操作代码运行一次。
27.为实现上述的第二目的,本发明提供的计算机装置包括处理器以及存储器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述嵌入式固件程序移植方法的各个步骤。
28.为实现上述的第三目的,本发明提供计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述嵌入式固件程序移植方法的各个步骤。
附图说明
29.图1是应用本发明嵌入式固件程序移植方法实施例进行移植的初始固件程序与目标固件程序的结构框图。
30.图2是本发明嵌入式固件程序移植方法实施例的流程图。
31.以下结合附图及实施例对本发明作进一步说明。
具体实施方式
32.本发明的嵌入式固件程序移植方法用于实现固件程序的移植,尤其是从无操作系统的固件程序移植至有操作系统的固件程序。优选的,该方法可以通过计算机装置实现,例如,该计算机装置设置有处理器以及存储器,存储器上存储有计算机程序,处理器通过执行该计算机程序实现上述的嵌入式固件程序移植方法。
33.嵌入式固件程序移植方法实施例:
34.本实施例针对嵌入式设备的微型控制器的固件程序进行移植,具体的,将无操作系统的固件程序移植至有操作系统的固件程序。参见图1,初始固件程序10是无操作系统的固件程序,目标固件程序20是有操作系统的固件程序。由于无操作系统的固件程序的代码架构与有操作系统的固件程序的代码架构不相同,因此,本实施例需要根据无操作系统的固件程序的代码架构与有操作系统的固件程序的代码架构的差异进行代码移植。
35.进行代码移植前,首先识别初始固件程序的三种类型代码,即识别初始固件程序中一次性执行的第一代码、识别初始固件程序中循环执行的第二代码、识别初始固件程序中依赖中断资源运行的第三代码。对于无操作系统的固件程序,一次性执行的第一代码是初始化代码,因此,需要识别初始固件程序中的初始化代码。无操作系统的固件程序的主循环代码就是需要循环执行的代码,因此初始固件程序中循环执行的第二代码就是主循环代
码。而在无操作系统的代码架构中,使用微型控制器的“中断”资源的代码,就是第三代码。
36.根据三种类型代码的属性,对初始固件程序的代码进行识别,并分别获取三种类型的代码。然后,针对三种类型的代码分别进行移植。参见图2,首先执行步骤s11,将第一代码移植至目标固件程序中的任务创建的操作代码中。由于无操作系统的固件程序中,第一代码主要完成嵌入式设备的相关资源的工作模式设定以及初始化配置工作,并不涉及复杂的功能逻辑。因此,进行代码移植时,将第一代码移植到有操作系统的固件程序中的操作系统中的任务创建的操作代码中,即可以实现第一代码的移植。由于操作系统中的任务创建部分的代码是在嵌入式设备启动运行后仅运行一次,其运行的时间、次数与第一代码的运行时间、次数相同,因此,通过步骤s11的操作可以简单的实现第一代码的移植。
37.当目标固件程序启动运行后,第一代码对应的移植后的代码会在操作系统时随任务创建的操作代码启动运行一次,完成嵌入式设备的相关资源的工作模式设定和初始化配置工作。
38.然后,执行步骤s12,将初始固件程序的第二代码移植至目标固件程序中循环的执行函数中。由于初始固件程序的第二代码是循环执行的代码,并且也是无操作系统的固件程序的主循环代码,而有操作系统的固件程序中,任务创建是在操作系统中必须存在的一部分程序代码,用于建立程序具体要执行的具体任务,并且在任务建立之后,操作系统会对各任务的执行进行管理。因此,针对第二代码,可以移植到操作系统中空闲任务的执行函数中。这样,不管初始固件程序中,主循环代码是按照何种逻辑实现模式进行编写,均可在操作系统的空闲任务中,按照原有的循环方式,不断执行代码运行。
39.在有操作系统的固件程序中,空闲任务会不断地重复运行,与无操作系统的固件程序的“主循环代码”需要循环运行的特点相同,因此本实施例选择在空闲任务的执行函数作为移植的对象。此外,空闲任务是操作系统中必备的一个组成部分,无需用户新建任务,因此选用空闲函数作为移植的对象能够避免创建新任务的操作,提升代码移植的效率。
40.当然,实际应用时,也可以将无操作系统的固件程序的“主循环代码”移植至其他函数中。如果移植到其他函数,则需要根据移植的情况,可能需要对操作系统进行相适应的调整。如果移植到空闲任何的执行函数,则不需要对操作系统进行调整,移植的工作量较少,提升代码移植的效率。
41.最后,执行步骤s13,将初始固件程序的第三代码移植至目标固件程序中的中断服务程序中。由于第三代码是依赖于中断资源运行的代码,因此,需要查找在目标固件程序中,实现中断服务的代码。例如,目标固件程序中的中断服务程序可以实现中断功能,因此,将第三代码移植至目标固件程序中的中断服务程序中。在需要使用中断服务时,目标固件程序中的中断服务程序可以通过触发中断的方式实现中断服务。
42.可见,本实施例将初始固件程序的代码划分为三种类型,并且根据三种类型的代码的运行特性分别移植到目标固件程序中具有相同运行特性的函数中,使得代码移植更加简便、高效,并不需要软件工程师将初始的固件程序各部分的代码逐一的地执行移植与调试,能够大幅度减少固件程序代码移植的时间。
43.另外,由于移植过程中考虑三种类型代码的运行特性并针对性的进行移植,能够有效避免固件程序代码的移植过程中不容易发生功能冲突的问题,提升移植后的固件程序运行的稳定性。
44.计算机装置实施例:
45.本实施例的计算机装置是可以执行代码移植的计算机设备,该计算机装置设置有处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述嵌入式固件程序移植方法的各个步骤。
46.例如,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明的各个模块。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
47.本发明所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
48.存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
49.计算机可读存储介质实施例:
50.上述计算机装置所存储的计算机程序如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述嵌入式固件程序移植方法的各个步骤。
51.其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
52.最后需要强调的是,本发明不限于上述实施方式,例如主循环代码移植执行函数的变化等,这样改变也应该包括在本发明权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1