控制装置、集成电路及任务栈的管理方法制造方法及图纸

技术编号:15391269 阅读:130 留言:0更新日期:2017-05-19 04:40
本发明专利技术公开了一种控制装置、集成电路及其任务栈的管理方法。该任务栈的管理方法包括获得运行任务的指令,任务包括第一功能;在运行第一功能之前,将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器,其中,内部存储器中栈是任务所使用的栈;运行第一功能,其中,运行第一功能期间需要存储的临时存储信息被存储在外部存储器;运行第一功能结束后,将栈的指针指向内部存储器。通过以上方式,本发明专利技术能够降低成本和实现低功耗。

Control device, integrated circuit, and method for managing task stack

The invention discloses a control device, an integrated circuit and a management method of a task stack thereof. The management method of the task stack including running task instructions, including the first task; before running the first function pointers in the internal memory of the stack by pointing to the internal memory change to external memory, the internal memory stack is a task to the stack; the first run function, the temporary storage of information the first operation function during storage need to be stored in external memory function after operation; first, the stack pointer to the internal memory. By the above method, the invention can reduce cost and realize low power consumption.

【技术实现步骤摘要】
控制装置、集成电路及任务栈的管理方法
本专利技术涉及嵌入式
,特别是涉及一种控制装置、集成电路及任务栈的管理方法。
技术介绍
目前嵌入式系统,尤其是运行固件的嵌入式系统,通常搭配主系统实现特定或单一性的功能,同时要具备低功耗、低成本等特点,这类嵌入式系统通常用于运行较为简单的OS(OperatingSystem,操作系统)。随着实用需求的发展,例如智能手机或者穿戴式设备的发展需求,越来越需要嵌入式系统能够独立运作,实现完整的功能,比如GPS定位解算,步态识别等等,以使主系统尽可能处于休眠状态。因此,嵌入式系统需要具备一定运行通用软体的能力,在运行这些通用软体时,需要将局部变量存储到内部存储器中的stack,但是由于内部存储器本身就比较小,stack的尺寸也比较小(比如4kb),而且不能超过预先定义的范围,所以会出现在运行某个通用软体时,stack不够用而溢出的情况。为了解决这个问题,一些已有技术直接扩充了内部存储器的容量,但是如果初始化stack的程序代码已经固化在ROM中,所以即使扩充了内部存储器的容量也无法再加大stack的尺寸,而且由于扩充了内部存储器的容量会导致嵌入式系统的成本大大增加。
技术实现思路
本专利技术主要解决的技术问题是提供一种控制装置、集成电路及任务栈的管理方法,能够解决成本增加的问题。本专利技术一方面提供一种任务栈的管理方法,包括:获得运行任务的指令,所述任务包括第一功能;在运行所述第一功能之前,将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器,其中,所述内部存储器中所述栈是所述任务所使用的栈;运行所述第一功能,其中,运行所述第一功能期间需要存储的临时存储信息被存储在所述栈的指针所指向的外部存储器;其中,所述临时存储信息包括局部变量;以及运行所述第一功能结束后,将所述栈的指针指向所述内部存储器。本专利技术另一方面提供一种集成电路,包括微控制器;所述微控制器包括:内部存储器和处理模块;所述处理模块用于获得执行任务的指令,所述任务包括第一功能;在运行所述第一功能之前,将所述微控制器的内部存储器中栈的指针由指向内部存储器更改为指向外部存储器;运行所述第一功能,输出运行所述第一功能期间需要存储的临时存储信息,其中,所述临时存储信息被存储在所述栈的指针所指向的外部存储器;运行所述第一功能结束后,将所述栈的指针指向所述内部存储器;所述内部存储器,包括多个栈,该微控制器上并行运行的多个任务中每个任务分别使用各自的栈。本专利技术另一方面提供一种控制装置,包括:上述集成电路和外部存储器,其中所述外部存储器用于存储运行所述第一功能期间需要存储的临时存储信息。本专利技术又一方面提供一种控制装置,包括:获取模块,用于获得运行任务的指令,所述任务包括第一功能;第一修改模块,用于在运行所述第一功能之前,将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器,其中,所述内部存储器中所述栈是所述任务所使用的栈;运行模块,用于运行所述第一功能,其中,运行所述第一功能期间需要存储的临时存储信息被存储在所述栈的指针所指向的外部存储器;其中,所述临时存储信息包括局部变量;第二修改模块,用于在运行所述第一功能结束后,将所述栈的指针指向所述内部存储器。本专利技术的有益效果是:本专利技术通过在运行第一功能之前,将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器,将运行第一功能期间需要存储的临时存储信息存储在外部存储器,在运行第一功能结束后,将栈的指针指向内部存储器,无需调整stack的大小,也无需直接扩充内部存储器的容量,降低了成本。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:图1是本专利技术第一实施例的任务栈的管理方法的流程图;图2是图1中任务与相应的栈的大小的示意图;图3是图1中任务栈的指针在内部存储器和外部存储器之间切换的示意图;图4A是本专利技术第二实施例的任务栈的管理方法的流程图;图4B本专利技术第二实施例的任务栈的管理方法中任务栈的指针在内部存储器和外部存储器之间切换的示意图;图5是本专利技术第三实施例的任务栈的管理方法的流程图;图6是本专利技术第四实施例的任务栈的管理方法中任务栈的指针在内部存储器和外部存储器之间切换的示意图;图7是本专利技术微控制器的结构示意图;图8是本专利技术提供的集成电路的结构图;图9是本专利技术提供的控制装置的结构图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参见图1所示,图1是本专利技术第一实施例的任务栈的管理方法的流程图。如图1所示,本实施例所揭示的任务栈的管理方法可以应用于嵌入式系统,该方法可以由微控制器MCU执行,包括以下步骤:S101:获得运行任务的指令,所述任务包括第一功能。其中,MCU的操作系统OS上可以同时运行多个任务,每个任务分别使用各自对应的栈stack来存储运行任务时所需要存储的临时存储信息,其中,stack是指内部存储器被划分出的部分内存区域,其中stack的物理地址可以相邻,也可以不相邻;stack在使用时不能超出预定义的大小,如图2所示,假定3个stack预定义的大小分别为2KB、3KB以及4KB。例如,任务task1使用大小为2KB的stack存放数据,在运行任务task1时,最多只能在该stack存储2KB大小的临时存储信息。假如运行任务task1时所需要存储的临时存储信息为3KB,即超过预定义的2KB大小,就会导致stack溢出,可能导致其他关键的数据被踩坏。临时存储信息可包括:运行功能时所产生的局部变量,该临时存储信息还可以包括功能的输入参数和返回值。其中,第一功能可以是一个函数,当该函数的参数超过一定数量(通常为4)或者该函数采用可变阐参数时,传入第一功能的参数就可能被放置于外部存储器上;当函数返回时,一般函数只有一个直接的返回值(返回值的大小<=一个register存储空间的大小)或者没有返回值,如果只有一个直接的返回值,该返回值都是存放在MCU的genericregister0,不会占用stack。而如果函数的返回值是结构体(返回值的小大>一个register的大小),这种情况返回值就可能放在stack或者外部存储器上。在本专利技术的实施例中,获得运行任务的指令具体可以采用如下几种方式:第一种:主机host接收到用户请求执行任务的指令,主机将第一任务的code加载到MCU中,主机向MCU发送执行该任务的指令,也就是说,MCU从主机接收运行任务的指令。第二种:MCU通过外挂的输入设备接收用户触发的运行任务的指令。第三种:MCU连接到网络上,用户在远端发出运行任务的指令,MCU接收该运行任务的指令。第四种:预先设定达到预定时间就执行该任务,定时器在该预定时间到达时发出触发命令,则此时获得运行任务的指令是指接收到定时器本文档来自技高网...
控制装置、集成电路及任务栈的管理方法

【技术保护点】
一种任务栈的管理方法,其特征在于,获得运行任务的指令,所述任务包括第一功能;在运行所述第一功能之前,将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器,其中,所述内部存储器中所述栈是所述任务所使用的栈;运行所述第一功能,其中,运行所述第一功能期间需要存储的临时存储信息被存储在所述栈的指针所指向的外部存储器;以及运行所述第一功能结束后,将所述栈的指针指向所述内部存储器。

【技术特征摘要】
1.一种任务栈的管理方法,其特征在于,获得运行任务的指令,所述任务包括第一功能;在运行所述第一功能之前,将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器,其中,所述内部存储器中所述栈是所述任务所使用的栈;运行所述第一功能,其中,运行所述第一功能期间需要存储的临时存储信息被存储在所述栈的指针所指向的外部存储器;以及运行所述第一功能结束后,将所述栈的指针指向所述内部存储器。2.根据权利要求1所述的任务栈的管理方法,其特征在于,所述任务包括第二功能;所述第二功用于调用第一功能;在将内部存储器中栈的指针由指向内部存储器更改为指向外部存储器之前所述方法还包括:运行第二功能中位于调用第一功能之前的代码,并将运行所述代码期间需要存储的临时存储信息存储在栈的当前指针所指向的内部存储器,其中,运行所述代码完成时所述栈的指针指向内部存储器的第一位置;其中,运行所述第一功能结束后,将所述栈的指针指向内部存储器具体为:调用所述第一功能结束后,将所述栈的指针指向内部存储器的所述第一位置。3.根据权利要求1所述的任务栈的管理方法,其特征在于,所述任务包括第二功能;所述第二功能位于第一功能之后;运行所述第一功能结束后,将所述栈的指针指向内部存储器具体为:运行所述第一功能结束后,将所述栈的指针指向内部存储器的第一位置;该管理方法还包括:运行所述第二功能,运行所述第二功能期间需要存储的临时存储信息从所述内部存储器的第一位置开始存储。4.根据权利要求1所述的任务栈的管理方法,其特征在于,该管理方法由微控制器执行,且该方法还包括:微控制器从主处理器接收所述第一功能的代码,或者,所述第一功能的代码烧录在微控制器的可擦除非易失型存储器中。5.根据权利要求1所述的任务栈的管理方法,其特征在于,该管理方法由微控制器执行,所述内部存储器位于所述微控制器中且包括多个栈,该微控制器上并行运行的多个任务中每个任务分别使用各自的栈。6.根据权利要求1所述的任务栈的管理方法,其特征在于,该管理方法还包括:向主处理器发送请求以请求分配所述外部存储器的使用空间;接收主处理器发送的通知消息,所述通知消息指示了所述主处理器分配的所述外部存储器的使用空间,其中,所述外部存储器的使用空间用于存储运行所述第一功能期间需要存储的临时存储信息。7.根据权利要求1所述的任务栈的管理方法,其特征在于,该管理方法还包括:该方法由微控制器执行,该微控制器外挂该外部存储器;该方法还包括:在运行所述第一功能之前,给所述外部存储器上电;在运行所述第一功能结束之后,所述外部存储器被断电。8.根据权利要求1所述的任务栈的管理方法,其特征在于,在运行所述第一功能结束之后,该管理方法还包括:给主处理器发送消息以通知主处理器释放外部存储器中用于存储所述临时存储信息的空间。9.一种集成电路,其特征在于,包括微控制器;所述微控制器包括:内部存储器和处理模块;所述处理模块用于获得执行任务的指令,所述任务包括第一功能;在运行所述第一功能之前,将所述微控制器的内部存储器中栈的指针由指向内部存储器更改为指向外部存储器;运行所述第一功能,输出运行所述第一功能期间需要存储的临时存储信息,其中,所述临时存储信息被存储在所述栈的指针所指向的外部存储器;运行所述第一功能结束后,将所述栈的指针指向所述内部存储器;所述内部存储器,包括...

【专利技术属性】
技术研发人员:付华
申请(专利权)人:联发科技新加坡私人有限公司
类型:发明
国别省市:新加坡,SG

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1