应用程序处理方法和装置与流程

文档序号:12463651阅读:170来源:国知局
应用程序处理方法和装置与流程

本发明涉及单片机领域,具体而言,涉及一种应用程序处理方法和装置。



背景技术:

单片机被广泛应用于电子产品中。单片机参数中通常会规定其最大支持的RAM空间,在其他参数相同的情况下,所支持的RAM空间越大,单片机的价格就会越高。为了节约成本,电子产品在量产时,通常会选用低价单片机,相应地其所能支持的RAM空间就会比较小,这样就会对软件的优化提出了更高的要求,以能够实现优化RAM空间的目的。

针对相关技术中价格较低的单片机的RAM空间较小的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种应用程序处理方法和装置,以至少解决相关技术中价格较低的单片机的RAM空间较小的技术问题。

根据本发明实施例的一个方面,提供了一种应用程序处理方法,包括:将应用程序中的目标变量定义为目标全局变量,其中,应用程序包括多个子程序;在执行第一子程序的过程中判断是否存在第一全局变量,其中,第一全局变量为目标全局变量中的允许第一子程序使用的全局变量,多个子程序包括第一子程序;在执行第一子程序的过程中存在第一全局变量的情况下,使用第一全局变量执行第一子程序,并在执行完第一子程序之后释放第一全局变量。

进一步地,将应用程序中的目标变量定义为目标全局变量包括:获取应用程序中的允许至少两个子程序使用的变量;定义应用程序中的允许至少两个子程序使用的变量的值为第一值。

进一步地,获取应用程序中的允许至少两个子程序使用的变量包括:获取允许第一子程序使用的变量;判断允许第一子程序使用的变量是否允许子程序中除第一子程序之外的子程序使用;在判断出允许第一子程序使用的变量允许子程序中除第一子程序之外的子程序使用的情况下,将允许第一子程序使用的变量确定为应用程序中的允许至少两个子程序使用的变量。

进一步地,在执行第一子程序的过程中判断是否存在第一全局变量包括:判断应用程序中的允许至少两个子程序使用的变量中是否存在第一全局变量;在判断出应用程序中的允许至少两个子程序使用的变量中存在第一全局变量的情况下,判断第一全局变量的值是否为第一值;在判断出第一全局变量的值为第一值的情况下,确定在执行第一子程序的过程中存在第一全局变量。

进一步地,在执行完第一子程序之后释放第一全局变量包括:在执行完第一子程序之后将第一全局全部的值确定为第一值。

根据本发明实施例的另一方面,还提供了一种应用程序处理装置,包括:定义单元,用于将应用程序中的目标变量定义为目标全局变量,其中,应用程序包括多个子程序;判断单元,用于在执行第一子程序的过程中判断是否存在第一全局变量,其中,第一全局变量为目标全局变量中的允许第一子程序使用的全局变量,多个子程序包括第一子程序;执行单元,用于在执行第一子程序的过程中存在第一全局变量的情况下,使用第一全局变量执行第一子程序,并在执行完第一子程序之后释放第一全局变量。

进一步地,定义单元包括:获取模块,用于获取应用程序中的允许至少两个子程序使用的变量;定义模块,用于定义应用程序中的允许至少两个子程序使用的变量的值为第一值。

进一步地,获取模块包括:获取子模块,用于获取允许第一子程序使用的变量;第一判断模块,用于判断允许第一子程序使用的变量是否允许子程序中除第一子程序之外的子程序使用;第一确定模块,用于在判断出允许第一子程序使用的变量允许子程序中除第一子程序之外的子程序使用的情况下,将允许第一子程序使用的变量确定为应用程序中的允许至少两个子程序使用的变量。

进一步地,判断单元包括:第二判断模块,用于判断应用程序中的允许至少两个子程序使用的变量中是否存在第一全局变量;第三判断模块,用于在判断出应用程序中的允许至少两个子程序使用的变量中存在第一全局变量的情况下,判断第一全局变量的值是否为第一值;第二确定模块,用于在判断出第一全局变量的值为第一值的情况下,确定在执行第一子程序的过程中存在第一全局变量。

进一步地,执行单元包括:执行模块,用于在执行完第一子程序之后将第一全局全部的值确定为第一值。

在本发明实施例中,采用将应用程序中的目标变量定义为目标全局变量,其中,应用程序包括多个子程序;在执行第一子程序的过程中判断是否存在第一全局变量,其中,第一全局变量为目标全局变量中的允许第一子程序使用的全局变量,多个子程序包括第一子程序;在执行第一子程序的过程中存在第一全局变量的情况下,使用第一全局变量执行第一子程序,并在执行完第一子程序之后释放第一全局变量的方式,通过将所执行的应用程序中的变量定义为全局变量,并在执行某个子程序时调用这些全局变量,在执行完该子程序之后释放所调用的全局变量,达到了避免新建局部变量或全局变量进而节省RAM空间的目的,进而解决了相关技术中价格较低的单片机的RAM空间较小的技术问题,从而实现了优化RAM空间,提高单片机使用性能的技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的应用程序处理方法的流程图;以及

图2是根据本发明实施例的应用程序处理装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种应用程序处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的应用程序处理方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,将应用程序中的目标变量定义为目标全局变量,其中,应用程序包括多个子程序;

步骤S104,在执行第一子程序的过程中判断是否存在第一全局变量,其中,第一全局变量为目标全局变量中的允许第一子程序使用的全局变量,多个子程序包括第一子程序;

步骤S106,在执行第一子程序的过程中存在第一全局变量的情况下,使用第一全局变量执行第一子程序,并在执行完第一子程序之后释放第一全局变量。

通过上述步骤,将所执行的应用程序中的变量定义为全局变量,并在执行某个子程序时调用这些全局变量,在执行完该子程序之后释放所调用的全局变量,达到了避免新建局部变量或全局变量进而节省RAM空间的目的,进而解决了相关技术中价格较低的单片机的RAM空间较小的技术问题,从而实现了优化RAM空间,提高单片机使用性能的技术效果。

在步骤S102提供的方案中,该实施例中的应用程序可以是运行在终端设备或者电子芯片中,例如单片机。应用程序可以包括多个子程序,每个子程序所实现的功能可以不同。应用程序中的至少两个子程序中均出现的变量可以为应用程序中的目标变量,例如,应用程序包括7个子程序,其中,第1个子程序和第3个子程序中均出现有变量1,则该变量1即为应用程序中的目标变量。本发明实施例可以对应用程序中的目标变量预先定义为全局变量,这些全局变量称为目标全局变量。

作为一种可选的实施例,步骤S102将应用程序中的目标变量定义为目标全局变量可以包括以下步骤:

步骤S1022,获取应用程序中的允许至少两个子程序使用的变量;

步骤S1024,定义应用程序中的允许至少两个子程序使用的变量的值为第一值。

需要说明的是,应用程序中的允许至少两个子程序所使用的变量可以理解为在至少两个子程序中均出现的变量,该实施例可以预先对应用程序中的多个子程序进行分析比对,从中获取到允许至少两个子程序使用的变量,其中,允许至少两个子程序使用的变量的个数可以为一个,也可以为多个。在获取到允许至少两个子程序使用的变量之后,该实施例可以将这些变量定义为全局变量,定义这些变量的值为第一值,此处需要说明的是,第一值可以根据实际需求设定或调整,此处不做具体限定。

作为一种可选的实施例,步骤S1022获取应用程序中的允许至少两个子程序使用的变量可以包括以下步骤:

步骤S10222,获取允许第一子程序使用的变量;

步骤S10224,判断允许第一子程序使用的变量是否允许子程序中除第一子程序之外的子程序使用;

步骤S10226,在判断出允许第一子程序使用的变量允许子程序中除第一子程序之外的子程序使用的情况下,将允许第一子程序使用的变量确定为应用程序中的允许至少两个子程序使用的变量。

需要说明的是,第一子程序可以为应用程序中所包括的多个子程序中的任意一个子程序。该实施例可以首先对应用程序中的第一子程序进行分析,确定第一子程序中的变量,也即允许第一子程序使用的变量。在确定第一子程序中的变量之后,该实施例可以通过判断应用程序中除第一子程序之外的子程序中是否存在该变量,如果应用程序中除第一子程序之外的一个或者多个子程序中也出现了第一子程序中出现的变量,则确定该变量即为应用程序中允许至少两个子程序使用的变量;如果应用程序中除第一子程序之外的任意一个子程序中都没有出现第一子程序中出现的变量,则确定该变量不满足允许至少两个子程序使用的条件,则将丢弃该变量。

需要说明的是,本发明实施例通过将允许至少两个子程序使用的变量定义为全局变量,而并非是应用程序中的所有变量均应以为全局变量,这样能够避免因将所有变量定义为全局变量而造成的RAM空间浪费,优化了RAM空间;又能够保证所定义的全局变量能够得到最大程度上的重复利用,提高了所定义的全局变量的利用率。

在步骤S104提供的方案中,第一子程序可以为应用程序中的任意一个子程序,其中,应用程序中的多个子程序可以包括第一子程序。在执行第一子程序的过程中,本发明实施例可以首先判断是否存在第一全局变量,其中,第一全局变量可以为预先定义的目标全局变量中的允许第一子程序使用的全局变量。本发明实施例通过在执行第一子程序的过程中判断是否存在第一全局变量,目的是在判断出存在第一全局变量的情况下,可以无需新建局部变量或者新建全局变量而直接使用预先定义的第一全局变量,进而可以达到节省RAM空间的效果。

作为一种可选的实施例,步骤S104在执行第一子程序的过程中判断是否存在第一全局变量可以包括以下步骤:

步骤S1042,判断应用程序中的允许至少两个子程序使用的变量中是否存在第一全局变量;

步骤S1044,在判断出应用程序中的允许至少两个子程序使用的变量中存在第一全局变量的情况下,判断第一全局变量的值是否为第一值;

步骤S1046,在判断出第一全局变量的值为第一值的情况下,确定在执行第一子程序的过程中存在第一全局变量。

需要说明的是,判断应用程序中的允许至少两个子程序使用的变量中是否存在第一全局变量目的是判断预定定义的目标全局变量中是否存在运行第一子程序使用的第一全局变量,如果预定定义的目标全局变量中存在运行第一子程序使用的第一全局变量,则可以判断该第一全局变量当前是否可用,具体可以判断第一全局变量的值是否为预先定义的第一值,如果第一全局变量的值为预先定义的第一值,则说明第一全局变量允许第一子程序当前使用,如果第一全局变量的值不是预先预定的第一值,则说明第一全局变量当前正在被使用中,无法被第一子程序使用。该实施例通过上述步骤可以实现准确地判断在第一子程序的执行过程中是否存在第一全局变量的目的。

在步骤S106提供的技术方案中,如果判断出在执行第一子程序的过程中存在第一全局变量,则本发明实施例可以使用该第一全局变量执行第一子程序,并在执行完第一子程序之后,释放该第一全局变量。

作为一种可选的实施例,步骤S106在执行完第一子程序之后释放第一全局变量可以包括:步骤S1062,在执行完第一子程序之后将第一全局全部的值确定为第一值,也即将第一全局变量的值恢复为预先定义的第一值,这样可以使得第一子程序使用完该第一全局变量之后,该第一全局变量还可以继续被其他子程序使用,进而达到了提高全局变量的利用率的效果。本发明实施例通过在执行第一子程序时使用预先定义的第一全局变量,并在执行完第一子程序之后再释放该第一全局变量,进而能够达到优化RAM空间的效果。

本发明还提供了一种优选实施例,该优选实施例提供了一种优化单片机软件中RAM空间的方案,该方案的具体过程可以描述为:

预先将单片机软件运行所需要的变量定义为全局变量,例如:

unsigned char global_i=0;

unsigned char global_c0=0;

unsigned char global_c1=0;

unsigned long global_ulong0=0;

unsigned int global_int0=0;

unsigned int global_int1=0;

预先设计判断全局变量是否可以被调用的方式,例如:

#define is_global_xdata_avialable()\

((global_i==0)&&(global_c0==0)&&(global_c1==0)\

&&(global_ulong0==0)&&(global_int0==0)&&(global_int1==0))

预先设计对全局变量进行释放的方式,例如:

#define clear_global_xdata()\

do{global_i=0;global_c0=0;global_c1=0;\

global_ulong0=0;global_int0=0;global_int1=0;}while(0)

在实际应用场景中,该方案的具体使用过程可以描述为:

先判断定义的全局变量是否可以被调用。一旦发现可以调用,则使用它们(不用再重新定义全局/局部变量,从而节省RAM空间)。变量使用完毕,直接调用clear_global_xdata(),清除对全局变量的占用,以便其他函数使用这些全局变量。

上述使用过程对应的代码如下:

If(is_global_xdata_avialable()==1)//判断全局变量是否可用

{

…..//使用定义的全局变量来实现相应的算法或者功能,此部分代码可以依据不同算法或者功能确定

clear_global_xdata();//使用完毕后,释放全局变量

}

该优选实施例能够实现优化单片机RAM空间的目的,进而达到提高单片机使用性能的效果。

根据本发明实施例,还提供了一种应用程序处理装置的装置实施例,需要说明的是,该应用程序处理装置可以用于执行本发明实施例中的应用程序处理方法,本发明实施例中的应用程序处理方法可以在该应用程序处理装置中执行。

图2是根据本发明实施例的应用程序处理装置的示意图,如图2所示,该装置可以包括:

定义单元22,用于将应用程序中的目标变量定义为目标全局变量,其中,应用程序包括多个子程序;判断单元24,用于在执行第一子程序的过程中判断是否存在第一全局变量,其中,第一全局变量为目标全局变量中的允许第一子程序使用的全局变量,多个子程序包括第一子程序;执行单元26,用于在执行第一子程序的过程中存在第一全局变量的情况下,使用第一全局变量执行第一子程序,并在执行完第一子程序之后释放第一全局变量。

需要说明的是,该实施例中的定义单元22可以用于执行本申请实施例中的步骤S102,该实施例中的判断单元24可以用于执行本申请实施例中的步骤S104,该实施例中的判断单元24可以用于执行本申请实施例中的步骤S106。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

作为一种可选的实施例,定义单元22可以包括:获取模块222,用于获取应用程序中的允许至少两个子程序使用的变量;定义模块224,用于定义应用程序中的允许至少两个子程序使用的变量的值为第一值。

需要说明的是,该实施例中的获取模块222可以用于执行本申请实施例中的步骤S1022,该实施例中的定义模块224可以用于执行本申请实施例中的步骤S1024。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

作为一种可选的实施例,获取模块222可以包括:获取子模块2222,用于获取允许第一子程序使用的变量;第一判断模块2224,用于判断允许第一子程序使用的变量是否允许子程序中除第一子程序之外的子程序使用;第一确定模块2226,用于在判断出允许第一子程序使用的变量允许子程序中除第一子程序之外的子程序使用的情况下,将允许第一子程序使用的变量确定为应用程序中的允许至少两个子程序使用的变量。

需要说明的是,该实施例中的获取子模块2222可以用于执行本申请实施例中的步骤S10222,该实施例中的第一判断模块2224可以用于执行本申请实施例中的步骤S10224,该实施例中的第一确定模块2226可以用于执行本申请实施例中的步骤S10226。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

作为一种可选的实施例,判断单元24可以包括:第二判断模块242,用于判断应用程序中的允许至少两个子程序使用的变量中是否存在第一全局变量;第三判断模块244,用于在判断出应用程序中的允许至少两个子程序使用的变量中存在第一全局变量的情况下,判断第一全局变量的值是否为第一值;第二确定模块246,用于在判断出第一全局变量的值为第一值的情况下,确定在执行第一子程序的过程中存在第一全局变量。

需要说明的是,该实施例中的第二判断模块242可以用于执行本申请实施例中的步骤S1042,该实施例中的第三判断模块244可以用于执行本申请实施例中的步骤S1044,该实施例中的第二确定模块246可以用于执行本申请实施例中的步骤S1046。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

作为一种可选的实施例,执行单元26可以包括:执行模块262,用于在执行完第一子程序之后将第一全局全部的值确定为第一值。

需要说明的是,该实施例中的执行模块262可以用于执行本申请实施例中的步骤S1062。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

通过上述单元和模块,可以实现避免新建局部变量或全局变量,进而节省RAM空间的目的,进而解决了相关技术中价格较低的单片机的RAM空间较小的技术问题,从而实现了优化RAM空间,提高单片机使用性能的技术效果。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1