CN111880863A - 应用程序的运行方法、装置、电子设备及存储介质 - Google Patents
应用程序的运行方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111880863A CN111880863A CN202010661968.4A CN202010661968A CN111880863A CN 111880863 A CN111880863 A CN 111880863A CN 202010661968 A CN202010661968 A CN 202010661968A CN 111880863 A CN111880863 A CN 111880863A
- Authority
- CN
- China
- Prior art keywords
- interface
- cmsis
- target application
- application program
- simulator
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000006870 function Effects 0.000 claims description 86
- 238000006243 chemical reaction Methods 0.000 claims description 34
- 238000004590 computer program Methods 0.000 claims description 25
- 238000004806 packaging method and process Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 17
- ZVKAMDSUUSMZES-NZQWGLPYSA-N OS II Natural products CC(=O)N[C@H]1[C@H](OC[C@@H](O)[C@@H](O)[C@@H](O)CO)O[C@H](CO)[C@H](O[C@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)[C@@H]1O[C@@H]3O[C@H](CO)[C@@H](O)[C@H](O)[C@H]3O ZVKAMDSUUSMZES-NZQWGLPYSA-N 0.000 claims description 3
- 238000005538 encapsulation Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 238000011161 development Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000002054 transplantation Methods 0.000 description 1
Images
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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种应用程序的运行方法、装置、电子设备及存储介质。该方法,包括:获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口,所述目标应用程序是通过cmsis接口、嵌入式实时操作系统RTOS模拟器及基于cmsis接口实现的程序代码编译得到的,其中,嵌入式RTOS模拟器基于可移植操作系统接口POSIX实现;根据所述目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器;通过所述嵌入式RTOS模拟器在支持所述POSIX的操作系统中运行所述目标应用程序。上述应用程序的运行方法、装置、电子设备及存储介质,能够在支持POSIX的操作系统中运行基于cmsis接口实现的应用程序。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种应用程序的运行方法、装置、电子设备及存储介质。
背景技术
微控制器软件接口标准(Cortex Microcontroller Software InterfaceStandard,cmsis)是定义的一套适用于微控制器芯片的标准化软件接口,基于cmsis接口实现的软件通常为嵌入式软件,无法运行在UNIX操作系统、类UNIX操作系统等系统中。
发明内容
本申请实施例公开了一种应用程序的运行方法、装置、电子设备及存储介质,能够在支持POSIX的操作系统中运行基于cmsis接口实现的应用程序。
本申请实例公开了一种应用程序的运行方法,包括:
获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口,所述目标应用程序是通过cmsis接口、嵌入式实时操作系统RTOS模拟器及基于所述cmsis接口实现的程序代码编译得到的,其中,嵌入式RTOS模拟器基于可移植操作系统接口POSIX实现;
根据所述目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器;
通过所述嵌入式RTOS模拟器在支持所述POSIX的操作系统中运行所述目标应用程序。
本申请实例公开了一种应用程序的运行装置,包括:
接口获取模块,用于获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口,所述目标应用程序是通过cmsis接口、嵌入式实时操作系统RTOS模拟器及基于所述cmsis接口实现的程序代码编译得到的,其中,嵌入式RTOS模拟器基于可移植操作系统接口POSIX实现;
模拟器调用模块,用于根据所述目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器;
运行模块,用于通过所述嵌入式RTOS模拟器在支持所述POSIX的操作系统中运行所述目标应用程序。
本申请实施例公开了一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如上所述的方法。
本申请实施例公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。
本申请实施例公开的应用程序的运行方法、装置、电子设备及存储介质,获取启动的目标应用程序所调用的cmsis接口,由于目标应用程序是通过cmsis接口、基于POSIX实现的嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到的,因此,可根据目标应用程序调用的cmsis接口调用该嵌入式RTOS模拟器,而嵌入式RTOS模拟器是基于POSIX实现的,通过该嵌入式RTOS模拟器能够在支持POSIX的操作系统中运行目标应用程序,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
本申请实例公开了一种应用程序的编译方法,包括:
获取定义的cmsis接口,以及基于所述cmsis接口实现的程序代码;
获取基于POSIX实现的嵌入式RTOS模拟器的源码;
根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序。
本申请实施例公开了一种应用程序的编译装置,包括:
代码获取模块,用于获取定义的cmsis接口,以及基于所述cmsis接口实现的程序代码;
代码获取模块,还用于获取基于POSIX实现的嵌入式RTOS模拟器的源码;
编译模块,用于根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序。
本申请实施例公开了一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如上所述的应用程序的编译方法。
本申请实施例公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的应用程序的编译方法。
本申请实施例公开的应用程序的编译方法、装置、电子设备及存储介质,可通过cmsis接口、基于POSIX实现的嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到目标应用程序,目标应用程序在运行时可通过调用cmsis接口调用嵌入式RTOS模拟器,而嵌入式RTOS模拟器是基于POSIX实现的,通过该嵌入式RTOS模拟器能够在支持POSIX的操作系统中运行目标应用程序,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中应用程序的运行方法的软件层次架构图;
图2为一个实施例中应用程序的运行方法的流程图;
图3为另一个实施例中应用程序的运行方法的流程图;
图4为一个实施例中编译得到目标应用程序的流程图;
图5为另一个实施例中编译得到目标应用程序的流程图;
图6为一个实施例中应用程序的编译方法的流程图;
图7为一个实施例中应用程序的运行装置的框图;
图8为一个实施例中应用程序的编译装置的框图;
图9为一个实施例中电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例及附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1为一个实施例中应用程序的运行方法的软件层次架构图。如图1所示,目标应用程序110安装在支持可移植操作系统接口(Portable Operating System Interface,POSIX)的操作系统120中,其中,支持POSIX的操作系统120可包括但不限于Linux操作系统、Windows操作系统、UNIX操作系统,以及OpenBSD操作系统、MACOS等类UNIX操作系统。目标应用程序110可通过cmsis接口、基于POSIX实现的嵌入式实时操作系统(Real TimeOperating System,RTOS)模拟器及基于cmsis接口实现的程序代码编译得到的。
当目标应用程序110启动时,目标应用程序110中的基于cmsis接口实现的程序112可调用cmsis接口114,可根据目标应用程序110所调用的cmsis接口114调用基于POSIX实现的嵌入式RTOS模拟器116,由于嵌入式RTOS模拟器116是基于POSIX实现的,即嵌入式RTOS模拟器116是基于POSIX来模拟嵌入式RTOS的系统功能,因此,可通过嵌入式RTOS模拟器116将目标应用程序110运行在支持POSIX的操作系统120中,以利用支持POSIX的操作系统120实现基于cmsis接口实现的程序112所需实现的功能。
如图2所示,在一个实施例中,提供一种应用程序的运行方法,可应用于电子设备,该电子设备可包括但不限于平板电脑、个人计算机(Personal Computer,个人计算机)等设备,本申请不作限定。其中,上述的电子设备的操作系统可以是支持POSIX的操作系统,例如Linux操作系统、Windows操作系统、UNIX操作系统等,本申请实施例不作限定。该应用程序的运行方法,可包括以下步骤:
步骤210,获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口。
Cmsis是ARM等芯片和软件供应的公司定义的接口标准,提供一套微控制器的内核与外设、实时操作系统及中间设备之间的通用接口。cmsis的软件层次可主要包括内核设备访问层、中间设备访问层及微控制器外设访问层,其中,内核外设访问层主要用于定义进入内核的接口,包含了用来访问内核的寄存器的名称及地址定义、中断控制器的接口等;中间设备访问层则为上层的软件程序提供了访问外设的通用方法,可调用内核外设访问层提供的接口以处理软件程序的外设中断请求;微控制器外设访问层则用于对片上所有外设进行定义,提供访问芯片上外设的方法。
相关技术中,基于cmsis接口实现的程序在运行时,仅可通过cmsis接口访问处理器的内核,而支持POSIX的操作系统需通过调用POSIX接口才可访问系统内核,因此,基于cmsis接口实现的程序无法访问支持POSIX的操作系统的内核,无法获取运行的硬件资源(例如内存资源、处理器资源等),因此无法直接在支持POSIX的操作系统上运行。
在本申请实施例中,可先通过cmsis接口、嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到目标应用程序,其中,嵌入式RTOS模拟器是基于POSIX实现的,通过POSIX模拟嵌入式RTOS的系统功能。嵌入式RTOS指的是具有实时性、能支持实时控制系统工作的嵌入式操作系统,可选地,嵌入式RTOS可包括FreeRTOS、embOS、μC/OS-II、salvo等系统中的任一种。进一步地,本申请实施例的嵌入式RTOS需同时支持cmsis接口及POSIX接口。
在进行编译之前,可先将定义的cmsis接口与嵌入式RTOS模拟器进行适配,使得通过调用cmsis接口可访问嵌入式RTOS模拟器所模拟的嵌入式RTOS系统,再通过适配的cmsis接口、嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到目标应用程序。
当安装在支持POSIX的操作系统中的目标应用程序启动时,需访问支持POSIX的操作系统的内核,以获取硬件资源进行运行。由于目标应用程序中编译有基于cmsis接口实现的程序代码,目标应用程序能够实现该基于cmsis接口实现的程序代码的功能,在目标应用程序启动并运行时,会调用所需的cmsis接口以获取运行所需的硬件资源并执行相应的任务。
步骤220,根据目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器。
目标应用程序中除了编译有基于cmsis接口实现的程序代码外,还编译有与嵌入式RTOS模拟器适配的cmsis接口,利用适配的cmsis接口可调用嵌入式RTOS模拟器。可选地,将cmsis接口与嵌入式RTOS模拟器进行适配,可指的是利用嵌入式RTOS模拟器所模拟的嵌入式RTOS的系统功能实现cmsis接口的调用。
可获取启动的目标应用程序所调用的cmsis接口,基于与嵌入式RTOS模拟器适配的cmsis接口,可通过该调用的cmsis接口调用嵌入式RTOS,访问嵌入式RTOS模拟器所模拟的嵌入式RTOS,通过调用嵌入式RTOS模拟器提供的系统功能,以执行目标应用程序所调用的cmsis接口所需执行的任务。可选地,目标应用程序所调用的cmsis接口可以是定义的cmsis中的任一接口,调用的接口不同,所执行的任务也可不同,例如,目标应用程序需要读取处理器中的中断控制器的中断信号,则可调用cmsis中定义的中断控制器的接口;目标应用程序需要访问电子设备的外设(如输入设备),则可调用cmsis中定义的用于访问外设的接口。
步骤230,通过嵌入式RTOS模拟器在支持POSIX的操作系统中运行目标应用程序。
在本申请实施例中,嵌入式RTOS模拟器是基于POSIX实现的,利用POSIX接口模拟实现嵌入式RTOS的系统功能。进一步地,嵌入式RTOS模拟器的内核代码可以是基于POSIX接口实现的,通过POSIX接口实现嵌入式RTOS的内核功能,例如处理器的时间、中断、输入/输出(Input/Output,I/O)、定时器等资源的分配等。通过目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器所提供的系统功能后,可调用模拟实现该系统功能的POSIX接口,从而通过调用的POSIX接口执行目标应用程序调用的cmsis接口所需执行的任务。
在一些实施例中,在将cmsis接口与嵌入式RTOS模拟器进行适配时,可以是将cmsis接口移植到基于POSIX实现的嵌入式RTOS模拟器中,并建立各个cmsis接口与该嵌入式RTOS模拟器所提供的各个接口之间的对应关系,从而实现cmsis接口与该嵌入式RTOS模拟器所提供的接口之间的转换。可选地,嵌入式RTOS模拟器所提供的接口可以直接是实现相应接口功能的POSIX接口,也可以是对实现相应接口功能的POSIX接口进行封装后的接口。
例如,目标应用程序调用的cmsis接口为function1,用于在操作系统中创建线程,则可对应于嵌入式RTOS模拟器所提供的用于创建线程的接口,假设嵌入式RTOS模拟器中创建线程的功能是由POSIX中的接口pthread_create实现的,则可直接建立function1与pthread_create之间的对应关系,也可对嵌入式RTOS模拟器中利为POSIX接口实现创建线程功能的函数进行封装,得到封装后的接口为os_function,并建立function1与os_function之间的对应关系。
获取目标应用程序调用的cmsis接口后,基于cmsis接口与嵌入式RTOS模拟器所提供的接口之间的对应关系,可将目标应用程序调用的cmsis接口转换为嵌入式RTOS模拟器所提供的接口,并根据转换的嵌入式RTOS模拟器所提供的接口调用嵌入式RTOS模拟器的系统内核中相应的POSIX接口,以通过调用的POSIX接口执行相应的任务。在一些实施例中,若嵌入式RTOS模拟器所提供的接口为实现相应接口功能的POSIX接口,则可直接根据cmsis接口与POSIX接口之间的对应关系调用POSIX接口,若嵌入式RTOS模拟器所提供的接口为封装后的接口,则可根据cmsis接口与封装接口之间的对应关系,先调用封装接口,再通过调用的封装接口调用所封装的POSIX接口。从而可在支持POSIX的操作系统中运行目标应用程序,目标应用程序中所包含的基于cmsis接口实现的程序在支持POSIX的操作系统中也可正常运行并实现相应的功能。
在一些实施例中,目标应用程序所包含的基于cmsis接口实现的程序可以是基于原始的cmsis接口实现的程序,也可以是基于cmsis-RTOS接口实现的程序,cmsis-RTOS接口是针对实时操作系统进行封装的cmsis接口。基于cmsis-RTOS接口实现的程序可通过调用cmsis-RTOS接口直接访问嵌入式RTOS的系统内核以实现相应的功能,从而保证基于cmsis-RTOS接口实现的程序可在不同的嵌入式RTOS中正常运行而不用修改程序代码,cmsis-RTOS接口可理解为程序与嵌入式RTOS的系统内核之间的桥梁。
若目标应用程序是通过基于cmsis-RTOS接口实现的程序代码、cmsis-RTOS接口及嵌入式RTOS模拟器编译得到,则可获取目标应用程序调用的cmsis-RTOS接口,并根据cmsis-RTOS接口与嵌入式RTOS内核的函数转换关系,调用嵌入式RTOS模拟器的系统内核,从而调用嵌入式RTOS模拟器的系统内核中用于执行该cmsis-RTOS接口的相应任务的POSIX接口。利用基于cmsis-RTOS接口实现的程序代码编译得到目标应用程序,可使得目标应用程序的适配性更强,所适配的嵌入式RTOS模拟器种类更多,且无需每次都对cmsis接口与嵌入式RTOS进行适配,可降低软件开发的复杂性。
在本申请实施例中,获取启动的目标应用程序所调用的cmsis接口,由于目标应用程序是通过cmsis接口、基于POSIX实现的嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到的,因此,可根据目标应用程序调用的cmsis接口调用该嵌入式RTOS模拟器,而嵌入式RTOS模拟器是基于POSIX实现的,通过该嵌入式RTOS模拟器能够在支持POSIX的操作系统中运行目标应用程序,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
如图3所示,在一个实施例中,提供另一种应用程序的运行方法,可应用于上述的电子设备,该方法可包括以下步骤:
步骤302,获取定义的cmsis接口,以及基于cmsis接口实现的程序代码。
步骤304,获取基于POSIX实现的嵌入式RTOS模拟器的源码。
可将嵌入式RTOS移植到基于POSIX的操作系统中,基于POSIX接口实现嵌入式RTOS的内核代码,利用POSIX模拟嵌入式RTOS的系统功能,从而得到基于POSIX实现的嵌入式RTOS模拟器。
步骤306,根据cmsis接口、基于cmsis接口实现的程序代码及嵌入式RTOS模拟器的源码编译得到目标应用程序。
在一些实施例中,可直接将定义的cmsis接口、基于cmsis接口实现的程序代码,以及基于POSIX实现的嵌入式RTOS模拟器的源码进行编译,将cmsis接口、基于cmsis接口实现的程序代码及嵌入式RTOS模拟器的源码从源程序语言编写的源程序转换为可被计算机识别的二进制语言,得到可在支持POSIX的操作系统中运行的目标应用程序。
如图4所示,在一个实施例中,步骤306可包括步骤402~404。
步骤402,将cmsis接口移植到嵌入式RTOS模拟器,得到cmsis接口在嵌入式RTOS模拟器中的实现代码。
获取定义的cmsis接口后,可先将cmsis接口移植到嵌入式RTOS模拟器中,以将cmsis接口与嵌入式RTOS模拟器进行适配。cmsis接口在嵌入式RTOS模拟器中的实现代码可包括将cmsis接口与嵌入式RTOS模拟器进行适配时,建立的各个cmsis接口与嵌入式RTOS模拟器所提供的各个接口之间的对应关系。将cmsis接口与嵌入式RTOS模拟器进行适配的具体描述可参照上述实施例中的相关描述,在此不再一一赘述。
在一些实施例中,若基于cmsis接口实现的程序代码为基于cmsis-RTOS接口实现的程序代码,则cmsis接口在嵌入式RTOS模拟器中的实现代码可包括定义的cmsis-RTOS接口。通过cmsis-RTOS接口可直接访问嵌入式RTOS的内核,因此,cmsis-RTOS接口可实现cmsis接口与嵌入式RTOS模拟器的适配。
步骤404,将程序代码作为执行嵌入式RTOS模拟器的主函数,对嵌入式RTOS模拟器的源码、实现代码及主函数进行编译,得到目标应用程序。
可将基于cmsis接口实现的程序代码添加到嵌入式RTOS模拟器的源码中,将该基于cmsis接口实现的程序代码作为执行嵌入式RTOS模拟器的执行主函数,并与嵌入式RTOS模拟器的源码及cmsis接口在嵌入式RTOS模拟器中的实现代码一起进行编译,得到目标应用程序。目标应用程序在执行时,会先执行作为主函数的基于cmsis接口实现的程序代码,可选地,可以该主函数的头文件中声明对cmsis接口在嵌入式RTOS模拟器中的实现代码的调用,从而可在执行基于cmsis接口实现的程序代码时,调用嵌入式RTOS模拟器中的相应功能。
在本申请实施例中,实现在源码级别的移植,包括基于POSIX实现的嵌入式RTOS模拟器及与该嵌入式RTOS模拟器适配的cmsis接口,并将适配的cmsis接口、基于该cmsis接口实现的程序代码及基于POSIX实现的嵌入式RTOS模拟器的源码进行编译得到目标应用程序,不需要修改基于该cmsis接口实现的程序的原代码,即可实现基于该cmsis接口实现的程序在支持POSIX的操作系统上运行,可使得基于该cmsis接口实现的程序的开发更为便捷。
如图5所示,在一个实施例中,步骤306可包括步骤502~506。
步骤502,对源码进行封装,得到嵌入式RTOS模拟器的封装接口。
将嵌入式RTOS移植到支持POSIX的操作系统后,可对基于POSIX实现的嵌入式RTOS模拟器的源码进行封装,将基于POSIX接口实现嵌入式RTOS的系统功能的细节进行隐藏,仅保留调用嵌入式RTOS的系统功能时的访问对象,也即封装后的封装接口。可将嵌入式RTOS模拟器的封装接口放入一个或多个文件中,该一个或多个文件可组成一个嵌入式RTOS模拟器的函数库,函数库中的封装接口可被调用。将基于POSIX实现的嵌入式RTOS模拟器的源码封装成函数库,可更加方便调用,简化软件开发的复杂度。
步骤504,定义嵌入式RTOS模拟器的封装接口与cmsis接口之间的调用转换关系,得到转换函数。
在将cmsis接口与嵌入式RTOS模拟器进行适配时,可定义嵌入式RTOS模拟器的封装接口与cmsis接口之间的调用转换关系,得到cmsis接口与嵌入式RTOS模拟器的封装接口之间的转换函数,该转换函数可用于实现cmsis接口与嵌入式RTOS模拟器的封装接口之间的调用。例如,嵌入式RTOS模拟器基于POSIX的接口实现的创建线程的封装接口为os_function,cmsis中创建线程的接口为function1,则可建立function1与os_function之间的调用转换关系,二者之间的转换函数可为change(),change()中可定义从接口function1转换到接口os_function。
步骤506,对转换函数、基于cmsis接口实现的程序代码进行编译,得到目标应用程序。
作为一种实施方式,可将基于cmsis接口实现的程序代码作为目标应用程序的主函数,并在主函数的头文件中对包含有转换函数的文件进行声明,并对转换函数、基于cmsis接口实现的程序代码进行编译,得到目标应用程序。
在一些实施例中,目标应用程序在支持POSIX的操作系统中启动之前,可在支持POSIX的操作系统中运行嵌入式RTOS模拟器,由于嵌入式RTOS模拟器是基于POSIX实现的,因此,嵌入式RTOS模拟器可作为独立的应用程序在支持POSIX的操作系统中运行,而不需要另外设置虚拟机。在目标应用程序启动时,可在运行的嵌入式RTOS模拟器中启动目标应用程序。在获取启动的目标应用程序调用的cmsis接口后,可根据转换函数对目标应用程序调用的cmsis接口进行转换,确定嵌入式RTOS模拟器中与该调用的cmsis接口对应的封装接口,并调用该对应的封装接口。目标应用程序先执行作为主函数的基于cmsis接口实现的程序代码,通过主函数中的头文件对转换函数的声明,在调用cmsis接口时,可调用对应的转换函数,并通过转换函数将调用的cmsis接口转换为嵌入式RTOS模拟器中对应的封装接口,并对该对应的封装接口进行调用。运行在嵌入式RTOS模拟器中的目标应用程序,可通过调用嵌入式RTOS的函数库中的封装接口执行该封装接口对应的系统功能,以调用该封装接口所封装的POSIX接口。
作为一种具体实施方式,嵌入式RTOS模拟器可以采用进程的方式在支持POSIX的操作系统的后台中运行,在启动目标应用程序时,可调用在后台运行的嵌入式RTOS模拟器,目标应用程序以线程的方式在嵌入式RTOS模拟器的进程中运行,并执行相应的任务。
在本申请实施例中,在编译可以支持POSIX的操作系统中运行的目标应用程序时,无需每次都将基于POSIX实现的嵌入式RTOS模拟器的源码一起编译,可以降低开发目标应用程序的复杂度,提高软件的开发效率。
步骤308,获取启动的目标应用程序所调用的cmsis接口。
步骤310,根据目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器。
步骤308和310可参照上述实施例中的相关描述,在此不作赘述。
步骤312,在支持POSIX的操作系统中以进程的方式运行嵌入式RTOS模拟器。
目标应用程序可通过调用cmsis接口调用嵌入式RTOS模拟器,嵌入式RTOS模拟器可以采用进程的方式运行在支持POSIX的操作系统中,通过进程的方式运行,嵌入式RTOS模拟器可向支持POSIX的操作系统申请资源(例如处理器、内存、中断等资源)。
步骤314,根据调用的cmsis接口在嵌入式RTOS模拟器中创建任务。
目标应用程序调用cmsis接口后,可在嵌入式RTOS模拟器中创建任务,并在嵌入式RTOS模拟器中执行该任务。在一些实施方式中,还可设置任务的优先级,嵌入式RTOS模拟器可先向优先级高的任务分配资源,并优先执行优先级高的任务。目标应用程序调用的cmsis接口不同,可分别创建不同的任务,以实现相应的功能。
步骤316,根据任务的任务信息调用相应的POSIX接口,以通过相应的POSIX接口执行任务。
嵌入式RTOS模拟器中创建的每个任务可具有相应的任务信息,任务信息可包括任务的优先级、任务执行的内容、传输的数据等。嵌入式RTOS模拟器中可设置有任务队列,可按照目标应用程序创建任务的时间先后顺序依次将创建的各个任务排列在任务队列中。嵌入式RTOS模拟器的系统内核可根据任务调度算法对任务队列中的任务进行调度,任务调度的方式与遵循嵌入式RTOS的系统特性。可选地,任务调度算法可包括但不限于优先级调度法,先为优先级高的任务分配资源。由于嵌入式RTOS模拟器的内核代码是基于POSIX接口实现的,嵌入式RTOS模拟器的系统内核在对任务进行调用并执行任务时,可根据任务的任务信息调用相应的POSIX接口,通过调用POSIX接口可为任务分配资源,并执行任务,以实现目标应用程序所需实现的功能。
在一些实施例中,基于cmsis实现的程序通常为嵌入式软件,主要应用于嵌入式系统中,由于嵌入式系统的内存及处理器等资源很小,因此在嵌入式系统中很难直接对基于cmsis实现的程序进行调试。通常只能通过打印基于cmsis实现的程序代码,查看并分析打印的代码的执行逻辑,来调试基于cmsis实现的程序。而在本申请实施例中,采用上述所描述的编译及运行目标应用程序的方式,可对基于cmsis实现的程序进行调试。
在编译得到目标应用程序之后,还对目标应用程序进行调试。可将目标应用程序包括的源代码导入运行在支持POSIX的操作系统中的调试工具中。标应用程序的源代码可包含目标应用程序在编译时采用的代码。在一些实施例中,目标应用程序包括的源代码可包括基于cmsis接口实现的程序代码、cmsis接口及嵌入式RTOS模拟器的源码。支持POSIX的操作系统中的调试工具可以为多种,例如VC、GDB等大型调试工具。可通过调试工具对导入的源代码进行编译并运行,基于编译结果可查看目标应用程序的源代码中是否存在语法等错误,若存在,则需修改源代码,并不断进行调试,直至编译成功。若编译成功则可运行目标应用程序的源代码同,可获取运行结果,并判断运行结果是否符合基于cmsis接口实现的程序所设计的执行预期,若运行结果不符合执行预期,则可找到源代码所包含的基于cmsis接口实现的程序代码执行相应功能的代码段落,并进行修改调试,直接所有的运行结要符合基于cmsis接口实现的程序所设计的执行预期,则调试成功。
在调试工具中运行目标应用程序的方式可与上述中在支持POSIX的操作系统中运行目标应用程序的方式相同,目标应用程序的源代码中的基于cmsis接口实现的程序代码被执行时,可通过调用cmsis接口调用嵌入式RTOS模拟器,并通过嵌入式RTOS模拟器调用POSIX接口,从而在调试工具中成功运行基于cmsis接口实现的程序。
在一些实施例中,调试工具中也可设置有基于POSIX实现的嵌入式RTOS模拟器的函数库,目标应用程序的源代码中可包括基于cmsis接口实现的程序代码及cmsis接口与嵌入式RTOS模拟器的封装接口之间的转换函数。目标应用程序的源代码中的基于cmsis接口实现的程序代码被执行时,可通过转换函数调用嵌入式RTOS模拟器的函数库中的封装接口,再通过调用的封装接口调用POSIX接口,从而在调试工具中成功运行基于cmsis接口实现的程序。可在大型的调试工具中对基于cmsis接口实现的程序进行调试,可提高调试效率,简化基于cmsis接口实现的软件的开发过程,提高开发效率。
在本申请实施例中,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
如图6所示,在一个实施例中,提供一种应用程序的编译方法,可应用于上述的电子设备,该方法可包括以下步骤:
步骤610,获取定义的cmsis接口,以及基于cmsis接口实现的程序代码。
步骤620,获取基于POSIX实现的嵌入式RTOS模拟器的源码。
步骤630,根据cmsis接口、基于cmsis接口实现的程序代码及嵌入式RTOS模拟器的源码编译得到目标应用程序。
在一个实施例中,步骤630,可包括:将cmsis接口移植到嵌入式RTOS模拟器,得到cmsis接口在嵌入式RTOS模拟器中的实现代码,再将程序代码作为执行嵌入式RTOS模拟器的主函数,对嵌入式RTOS模拟器的源码、实现代码及主函数进行编译,得到目标应用程序。
在一个实施例中,步骤630,可包括:对源码进行封装,得到嵌入式RTOS模拟器的封装接口,定义嵌入式RTOS模拟器的封装接口与cmsis接口之间的调用转换关系,得到转换函数,并对转换函数、基于cmsis接口实现的程序代码进行编译,得到目标应用程序。
本申请实施例中提供的应用程序的编译方法的具体描述可参照上述各实施例中提供的应用程序的运行方法的相关描述,在此不再一一赘述。
在本申请实施例中,可通过cmsis接口、基于POSIX实现的嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到目标应用程序,目标应用程序在运行时可通过调用cmsis接口调用嵌入式RTOS模拟器,而嵌入式RTOS模拟器是基于POSIX实现的,通过该嵌入式RTOS模拟器能够在支持POSIX的操作系统中运行目标应用程序,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
如图7所示,在一个实施例中,提供一种应用程序的运行装置700,可应用于上述的电子设备,该应用程序的运行装置700,可包括接口获取模块710、模拟器调用模块720及运行模块730。
接口获取模块710,用于获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口,目标应用程序是通过cmsis接口、嵌入式实时操作系统RTOS模拟器及基于cmsis接口实现的程序代码编译得到的,其中,嵌入式RTOS模拟器基于可移植操作系统接口POSIX实现。
在一个实施例中,嵌入式实时操作系统包括FreeRTOS、embOS、μC/OS-II、salvo系统中的任一种。
模拟器调用模块720,用于根据目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器。
运行模块730,用于通过嵌入式RTOS模拟器在支持POSIX的操作系统中运行目标应用程序。
在本申请实施例中,获取启动的目标应用程序所调用的cmsis接口,由于目标应用程序是通过cmsis接口、基于POSIX实现的嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到的,因此,可根据目标应用程序调用的cmsis接口调用该嵌入式RTOS模拟器,而嵌入式RTOS模拟器是基于POSIX实现的,通过该嵌入式RTOS模拟器能够在支持POSIX的操作系统中运行目标应用程序,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
在一个实施例中,上述应用程序的运行装置700,除了包括接口获取模块710、模拟器调用模块720及运行模块730,还包括代码获取模块、编译模块、导入模块及调试模块。
代码获取模块,用于获取定义的cmsis接口,以及基于cmsis接口实现的程序代码。
代码获取模块,还用于获取基于POSIX实现的嵌入式RTOS模拟器的源码。
编译模块,用于根据cmsis接口、基于cmsis接口实现的程序代码及嵌入式RTOS模拟器的源码编译得到目标应用程序。
在一个实施例中,编译模块,可包括移植单元及编译单元。
移植单元,用于将cmsis接口移植到嵌入式RTOS模拟器,得到cmsis接口在嵌入式RTOS模拟器中的实现代码。
编译单元,用于将程序代码作为执行嵌入式RTOS模拟器的主函数,对嵌入式RTOS模拟器的源码、实现代码及主函数进行编译,得到目标应用程序。
在一个实施例中,编译模块,除了包括移植单元及编译单元,还可包括封装单元及关系定义单元。
封装单元,用于对源码进行封装,得到嵌入式RTOS模拟器的封装接口。
关系定义单元,用于定义嵌入式RTOS模拟器的封装接口与cmsis接口之间的调用转换关系,得到转换函数。
编译单元,还用于对转换函数、基于cmsis接口实现的程序代码进行编译,得到目标应用程序。
在一个实施例中,运行模块730,还用于在支持POSIX的操作系统中运行嵌入式RTOS模拟器,以在支持POSIX的操作系统中模拟嵌入式RTOS的系统功能,在嵌入式RTOS模拟器中启动目标应用程序。
模拟器调用模块720,还用于根据转换函数对目标应用程序调用的cmsis接口进行转换,确定嵌入式RTOS模拟器中与调用的cmsis接口对应的封装接口,并调用该对应的封装接口。
导入模块,用于将目标应用程序包括的源代码导入运行在支持POSIX的操作系统中的调试工具中。
调试模块,用于通过调试工具对导入的源代码进行编译并运行,并根据运行结果对导入的源代码进行调试。
在本申请实施例中,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
如图8所示,在一个实施例中,提供了一种应用程序的编译装置800,包括
代码获取模块810,用于获取定义的cmsis接口,以及基于cmsis接口实现的程序代码。
代码获取模块810,还用于获取基于POSIX实现的嵌入式RTOS模拟器的源码。
编译模块820,用于根据cmsis接口、基于cmsis接口实现的程序代码及嵌入式RTOS模拟器的源码编译得到目标应用程序。
在一个实施例中,编译模块820,包括移植单元及编译单元。
移植单元,用于将cmsis接口移植到嵌入式RTOS模拟器,得到cmsis接口在嵌入式RTOS模拟器中的实现代码。
编译单元,用于将程序代码作为执行嵌入式RTOS模拟器的主函数,对嵌入式RTOS模拟器的源码、实现代码及主函数进行编译,得到目标应用程序。
在一个实施例中,编译模块820,除了包括移植单元及编译单元,还包括封装单元及转换定义单元。
封装单元,用于对源码进行封装,得到嵌入式RTOS模拟器的封装接口;
转换定义单元,用于定义嵌入式RTOS模拟器的封装接口与cmsis接口之间的调用转换关系,得到转换函数。
编译单元,还用于对转换函数、基于cmsis接口实现的程序代码进行编译,得到目标应用程序。
在本申请实施例中,可通过cmsis接口、基于POSIX实现的嵌入式RTOS模拟器及基于cmsis接口实现的程序代码编译得到目标应用程序,目标应用程序在运行时可通过调用cmsis接口调用嵌入式RTOS模拟器,而嵌入式RTOS模拟器是基于POSIX实现的,通过该嵌入式RTOS模拟器能够在支持POSIX的操作系统中运行目标应用程序,解决了无法在支持POSIX的操作系统中运行基于cmsis接口实现的软件的问题,能够降低开发基于cmsis接口实现的软件的复杂度,提高软件的开发效率。
图9为另一个实施例中电子设备的结构框图。如图9所示,电子设备可以是平板电脑、个人计算机等电子设备。电子设备900可以包括一个或多个如下部件:处理器910、以及与处理器910耦合的存储器920,其中存储器920可存储有一个或多个应用程序,一个或多个应用程序可以被配置为由一个或多个处理器910执行时实现如上述各实施例描述的应用程序的运行方法。
处理器910可以包括一个或者多个处理核。处理器910利用各种接口和线路连接整个电子设备900内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行电子设备900的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器910可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块通信芯片进行实现。
存储器920可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备900在使用中所创建的数据等。
可以理解地,电子设备900可包括比上述结构框图中更多或更少的结构元件,例如,包括电源模块、扬声器、蓝牙模块、传感器等,还可在此不进行限定。
本申请实施例公开一种计算机可读存储介质,其存储计算机程序,其中,该计算机程序被处理器执行时实现如上述各实施例所描述的应用程序的运行方法。
本申请实施例公开一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可被处理器执行时实现如上述各实施例描述的应用程序的运行方法。
本申请实施例公开了一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如上所述的应用程序的编译方法。
本申请实施例公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的应用程序的编译方法。
本申请实施例公开一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可被处理器执行时实现如上述各实施例描述的应用程序的编译方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、ROM等。
如此处所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Erasable PROM,EPROM)、电可擦除PROM(Electrically ErasablePROM,EEPROM)或闪存。易失性存储器可包括随机存取存储器(random access memory,RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(Static RAM,SRAM)、动态RAM(Dynamic Random Access Memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、双倍数据率SDRAM(Double Data Rate SDRAM,DDR SDRAM)、增强型SDRAM(Enhanced Synchronous DRAM,ESDRAM)、同步链路DRAM(Synchlink DRAM,SLDRAM)、存储器总线直接RAM(Rambus DRAM,RDRAM)及直接存储器总线动态RAM(DirectRambus DRAM,DRDRAM)。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物单元,即可位于一个地方,或者也可以分布到多个网络单元上。可根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或者部分,可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请的各个实施例上述方法的部分或全部步骤。
以上对本申请实施例公开的一种应用程序的运行方法、装置、电子设备及存储介质,以及本申请实施例公开的一种应用程序的编译方法、装置、电子设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (13)
1.一种应用程序的运行方法,其特征在于,包括:
获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口,所述目标应用程序是通过cmsis接口、嵌入式实时操作系统RTOS模拟器及基于所述cmsis接口实现的程序代码编译得到的,其中,嵌入式RTOS模拟器基于可移植操作系统接口POSIX实现;
根据所述目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器;
通过所述嵌入式RTOS模拟器在支持所述POSIX的操作系统中运行所述目标应用程序。
2.根据权利要求1所述的方法,其特征在于,所述通过所述嵌入式RTOS模拟器在支持所述POSIX的操作系统中运行所述目标应用程序,包括:
在支持所述POSIX的操作系统中以进程的方式运行所述嵌入式RTOS模拟器;
根据所述调用的cmsis接口在所述嵌入式RTOS模拟器中创建任务;
根据所述任务的任务信息调用相应的POSIX接口,以通过所述相应的POSIX接口执行所述任务。
3.根据权利要求1所述的方法,其特征在于,在所述获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口之前,所述方法还包括:
获取定义的cmsis接口,以及基于所述cmsis接口实现的程序代码;
获取基于POSIX实现的嵌入式RTOS模拟器的源码;
根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序。
4.根据权利要求3所述的方法,其特征在于,所述根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序,包括:
将所述cmsis接口移植到所述嵌入式RTOS模拟器,得到所述cmsis接口在所述嵌入式RTOS模拟器中的实现代码;
将所述程序代码作为执行所述嵌入式RTOS模拟器的主函数,对所述嵌入式RTOS模拟器的源码、实现代码及所述主函数进行编译,得到目标应用程序。
5.根据权利要求3所述的方法,其特征在于,所述根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序,包括:
对所述源码进行封装,得到所述嵌入式RTOS模拟器的封装接口;
定义所述嵌入式RTOS模拟器的封装接口与所述cmsis接口之间的调用转换关系,得到转换函数;
对所述转换函数、基于所述cmsis接口实现的程序代码进行编译,得到目标应用程序。
6.根据权利要求5所述的方法,其特征在于,在所述获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口之前,所述方法还包括:
在支持所述POSIX的操作系统中运行所述嵌入式RTOS模拟器,以在所述支持所述POSIX的操作系统中模拟所述嵌入式RTOS的系统功能;
在所述嵌入式RTOS模拟器中启动所述目标应用程序;
所述根据所述目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器,包括:
根据所述转换函数对所述目标应用程序调用的cmsis接口进行转换,确定所述嵌入式RTOS模拟器中与所述调用的cmsis接口对应的封装接口,并调用所述对应的封装接口。
7.根据权利要求3至5任一所述的方法,其特征在于,在所述根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序之后,所述方法还包括:
将所述目标应用程序包括的源代码导入运行在支持所述POSIX的操作系统中的调试工具中;
通过所述调试工具对导入的源代码进行编译并运行,并根据运行结果对所述导入的源代码进行调试。
8.根据权利要求1至6任一所述的方法,其特征在于,所述嵌入式实时操作系统包括FreeRTOS、embOS、μC/OS-II、salvo系统中的任一种。
9.一种应用程序的编译方法,其特征在于,包括:
获取定义的cmsis接口,以及基于所述cmsis接口实现的程序代码;
获取基于POSIX实现的嵌入式RTOS模拟器的源码;
根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序。
10.一种应用程序的运行装置,其特征在于,包括:
接口获取模块,用于获取启动的目标应用程序所调用的微控制器软件接口标准cmsis接口,所述目标应用程序是通过cmsis接口、嵌入式实时操作系统RTOS模拟器及基于所述cmsis接口实现的程序代码编译得到的,其中,嵌入式RTOS模拟器基于可移植操作系统接口POSIX实现;
模拟器调用模块,用于根据所述目标应用程序调用的cmsis接口调用嵌入式RTOS模拟器;
运行模块,用于通过所述嵌入式RTOS模拟器在支持所述POSIX的操作系统中运行所述目标应用程序。
11.一种应用程序的编译装置,其特征在于,包括:
代码获取模块,用于获取定义的cmsis接口,以及基于所述cmsis接口实现的程序代码;
代码获取模块,还用于获取基于POSIX实现的嵌入式RTOS模拟器的源码;
编译模块,用于根据所述cmsis接口、基于所述cmsis接口实现的程序代码及所述嵌入式RTOS模拟器的源码编译得到目标应用程序。
12.一种电子设备,其特征在于,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如权利要求1至8任一所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661968.4A CN111880863B (zh) | 2020-07-10 | 2020-07-10 | 应用程序的运行方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661968.4A CN111880863B (zh) | 2020-07-10 | 2020-07-10 | 应用程序的运行方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111880863A true CN111880863A (zh) | 2020-11-03 |
CN111880863B CN111880863B (zh) | 2023-10-24 |
Family
ID=73151364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010661968.4A Active CN111880863B (zh) | 2020-07-10 | 2020-07-10 | 应用程序的运行方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880863B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113867988A (zh) * | 2021-09-29 | 2021-12-31 | 展讯通信(深圳)有限公司 | 通用远程通信调用架构及方法 |
CN114281404A (zh) * | 2021-12-24 | 2022-04-05 | 科东(广州)软件科技有限公司 | 一种工控机算法代码的移植方法及装置 |
CN115827120A (zh) * | 2023-01-10 | 2023-03-21 | 苏州浪潮智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645339A (zh) * | 2005-01-31 | 2005-07-27 | 浙江大学 | 在嵌入式系统模拟器上调试应用程序的方法 |
CN101894045A (zh) * | 2010-06-18 | 2010-11-24 | 阳坚 | 一种实时Linux操作系统 |
CN103176838A (zh) * | 2011-12-22 | 2013-06-26 | 盛乐信息技术(上海)有限公司 | 兼容Android本机程序的方法及系统 |
CN105573759A (zh) * | 2015-12-15 | 2016-05-11 | 中国电子科技集团公司第四十一研究所 | 基于stm32处理器的医用注射泵软件结构 |
CN106445630A (zh) * | 2016-08-10 | 2017-02-22 | 北京奇虎科技有限公司 | Android模拟器及实现Android模拟器的方法 |
GB201904787D0 (en) * | 2018-10-11 | 2019-05-22 | Arm Ip Ltd | Method and apparatus for debugging devices |
EP3611642A1 (en) * | 2018-08-17 | 2020-02-19 | Omron Corporation | Method for operating an industrial pc device and industrial pc device |
CN111142854A (zh) * | 2019-12-31 | 2020-05-12 | 江苏金智科技股份有限公司 | 一种微处理器的信息模型建模及生成方法 |
-
2020
- 2020-07-10 CN CN202010661968.4A patent/CN111880863B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645339A (zh) * | 2005-01-31 | 2005-07-27 | 浙江大学 | 在嵌入式系统模拟器上调试应用程序的方法 |
CN101894045A (zh) * | 2010-06-18 | 2010-11-24 | 阳坚 | 一种实时Linux操作系统 |
CN103176838A (zh) * | 2011-12-22 | 2013-06-26 | 盛乐信息技术(上海)有限公司 | 兼容Android本机程序的方法及系统 |
CN105573759A (zh) * | 2015-12-15 | 2016-05-11 | 中国电子科技集团公司第四十一研究所 | 基于stm32处理器的医用注射泵软件结构 |
CN106445630A (zh) * | 2016-08-10 | 2017-02-22 | 北京奇虎科技有限公司 | Android模拟器及实现Android模拟器的方法 |
EP3611642A1 (en) * | 2018-08-17 | 2020-02-19 | Omron Corporation | Method for operating an industrial pc device and industrial pc device |
GB201904787D0 (en) * | 2018-10-11 | 2019-05-22 | Arm Ip Ltd | Method and apparatus for debugging devices |
CN111142854A (zh) * | 2019-12-31 | 2020-05-12 | 江苏金智科技股份有限公司 | 一种微处理器的信息模型建模及生成方法 |
Non-Patent Citations (6)
Title |
---|
~楼歪歪: "CMSIS_RTOS学习笔记(一)", Retrieved from the Internet <URL:https://blog.csdn.net/qq_42765269/article/details/104487351> * |
ARCHERLEA: "可移植操作系统接口POSIX", Retrieved from the Internet <URL:https://blog.csdn.net/deggfg/article/details/90635555> * |
GEDARE BLOOM ET AL.: "Harmonizing ARINC 653 and Realtime POSIX for Conformance to the FACE Technical Standard", 2020 IEEE 23RD INTERNATIONAL SYMPOSIUM ON REAL-TIME DISTRIBUTED COMPUTING (ISORC) * |
仲睿光: "基于RTOS通信终端的SCA架构设计", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 08 * |
小时候挺菜: "CMSIS-RTOS的使用", Retrieved from the Internet <URL:https://www.cnblogs.com/zzdbullet/p/9504477.html> * |
郝继锋等: "CMSIS标准研究", 《航空计算技术》, vol. 48, no. 03 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113867988A (zh) * | 2021-09-29 | 2021-12-31 | 展讯通信(深圳)有限公司 | 通用远程通信调用架构及方法 |
CN114281404A (zh) * | 2021-12-24 | 2022-04-05 | 科东(广州)软件科技有限公司 | 一种工控机算法代码的移植方法及装置 |
CN115827120A (zh) * | 2023-01-10 | 2023-03-21 | 苏州浪潮智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
CN115827120B (zh) * | 2023-01-10 | 2023-05-23 | 苏州浪潮智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111880863B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111880863B (zh) | 应用程序的运行方法、装置、电子设备及存储介质 | |
US8930912B2 (en) | Method and system for performing software verification | |
CN106648755B (zh) | 一种在安卓art环境中动态加载dex的方法及装置 | |
US11093226B2 (en) | Methods, systems, and apparatus for a generic firmware-based kernel library mechanism | |
US11768757B2 (en) | Kernel debugging system and method | |
Pétrot et al. | On mpsoc software execution at the transaction level | |
CN112579254B (zh) | 图形处理器的仿真方法、装置、电子设备和存储介质 | |
CN115543547B (zh) | 一种异构虚拟化平台中虚拟机的迁移方法及系统 | |
TW202403541A (zh) | 第三方行動應用程式中引入小程序的系統、方法、裝置及介質 | |
US7350193B2 (en) | Procedure invocation in an integrated computing environment having both compiled and interpreted code segments | |
Posadas et al. | POSIX modeling in SystemC | |
CN114327405A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116431317B (zh) | 一种基于Vxworks仿真接口调度方法 | |
CN116627850A (zh) | 函数调试方法、装置、存储介质以及电子设备 | |
EP0270983A2 (en) | Method for the parallel simulation of multiprocessor computer systems | |
US20140032205A1 (en) | Java program for emulating the memory management of a c program and corresponding method | |
CN112559336B (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
Shrestha et al. | JVMCSP-Approaching Billions of Processes on a Single-Core JVM | |
CN116795481A (zh) | 嵌入式实时操作系统仿真方法、装置和存储介质 | |
CN113986744A (zh) | 一种分库分表组件的测试方法、装置及存储介质 | |
CN114281404A (zh) | 一种工控机算法代码的移植方法及装置 | |
Posadas et al. | Early modeling of linux-based rtos platforms in a systemc time-approximate co-simulation environment | |
CN111966591A (zh) | dubbo服务测试方法、装置和设备 | |
KR20110080767A (ko) | 액티브엑스 컨트롤 변환 시스템 및 방법 | |
Masmano et al. | Running ada on real-time linux |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |