一种不需要保护现场的实时操作系统的实现方法与流程

文档序号:41646715发布日期:2025-04-15 16:04阅读:4来源:国知局
一种不需要保护现场的实时操作系统的实现方法与流程

本发明涉及实时操作系统,特别涉及一种不需要保护现场的实时操作系统的实现方法。


背景技术:

1、当前所用实时操作系统均是给每个任务都分配一块堆栈空间,任务切换时,将当前任务的内核寄存器值压栈保存到当前任务的堆栈空间中,并保存当前堆栈指针,然后获取新任务的堆栈指针,从新任务的堆栈空间中弹出内核寄存器的值恢复到各对应的寄存器。

2、然而,每一个任务都需要为其分配一块堆栈空间用于保护现场,这会占用大量ram空间,而对于实时性没有那么高要求的嵌入式系统而言,例如车身控制器,这会造成ram空间资源的不必要浪费,尤其是对ram空间较小的控制器来说,ram空间资源的使用会变得非常紧张甚至不够用而舍弃一些功能。


技术实现思路

1、本发明的目的在于提供一种不需要保护现场的实时操作系统的实现方法,由此解决ram空间资源的不必要浪费的问题。

2、为了解决以上问题,本发明通过以下技术方案实现:

3、一种不需要保护现场的实时操作系统的实现方法,包括:

4、步骤s1、为所有周期任务分配一个堆栈空间,用于周期任务的执行;对周期任务进行初始化,每一周期任务包含若干种具有不同优先级的状态和若干个调度函数;

5、步骤s2、根据周期任务的状态激活并执行周期任务;

6、步骤s3、当中断发生时,且当当前执行的周期任务中的一个调度函数执行完后,则允许被高优先级的周期任务抢占。

7、可选地,所述周期任务包括:周期为1ms、5ms或10ms的任务。

8、可选地,所述堆栈空间的字节空间等于所有周期任务中的使用最大堆栈的字节。

9、可选地,所述状态包括:suspend状态,表示该周期任务处于挂起状态还没有被激活;ready状态,表示该周期任务处于激活就绪状态随时可执行;running状态,表示该周期任务正在执行;ready状态包括所述running状态,且running状态的优先级最高。

10、可选地,所述步骤s1中对所述周期任务进行初始化的步骤包括:

11、步骤s1.1、分别计算每个周期任务所包含的调度函数的数量;

12、步骤s1.2、每个周期任务对应设有一个指针,用于指向下一个要执行的调度函数,初始化时将每个周期任务的指针指向其第一个调度函数;

13、步骤s1.3、初始化时将初始化完就要执行的周期任务的状态设为ready状态,剩余其它周期任务的状态设为suspend状态。

14、可选地,所述步骤s2包括:

15、步骤s2.1、判断当前是否有running状态的周期任务,若有则执行步骤s2.2,若没有则执行步骤s2.3;

16、步骤s2.2、判断当前ready状态的周期任务中是否有优先级高于当前正在执行的running状态的周期任务,若有,则将running状态的周期任务的状态改为ready状态,执行步骤s2.3,若没有则执行步骤s2.4;

17、步骤s2.3、将ready状态的周期任务中优先级最高的周期任务的状态设为running状态,执行步骤s2.4;

18、步骤s2.4、执行running状态的周期任务的指针所指向的调度函数,执行完后;进入步骤s2.5;

19、步骤s2.5、判断当前running状态的周期任务里的调度函数是否全部执行完,若没有执行完,则执行步骤s2.6;若全部执行完,则执行步骤s2.7;

20、步骤s2.6、running状态的周期任务的指针加1,返回步骤s2.1;

21、步骤s2.7、则将running状态的周期任务的状态设为suspend状态,并将其指针重新指向该周期任务中的第一个调度函数,返回步骤s2.1。

22、可选地,所述步骤s3包括:

23、步骤s3.1、配置定时器和中断计数器;所述定时器每隔预定时间产生一次中断,每进一次中断,则所述中断计数器加1;

24、步骤s3.2、判断计数器余n是否等于0,若是,则进入步骤s3.3,若否,则进入步骤s3.4;

25、步骤s3.3、将周期为n的周期任务处于ready状态的计数加1,进入步骤s3.4;

26、步骤s3.4、判断该周期任务是否处于suspend状态,若是则执行步骤s3.5;

27、若否,则执行步骤s3.7;

28、步骤s3.5、判断周期任务的ready状态的计数是否大于0,若大于0则进入步骤s3.6;若等于0,则周期任务保持suspend状态,进入步骤s3.8;

29、步骤s3.6、将周期任务的ready状态的计数减1,并将周期任务的状态由suspend状态改为ready状态,进入步骤s3.7;

30、步骤s3.7、所有周期任务按顺序调用步骤s3.2~步骤s3.6,直至当所有周期任务执行完上面步骤后退出中断。

31、另一方面,本发明还提供一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现如上文所述的方法。

32、其他方面,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的方法。

33、本发明具有以下技术效果:

34、本发明提供的实时操作系统为不需要保护现场的实时操作系统,其只需要分配一块堆栈空间,可以节省大量ram空间。由此解决ram空间资源的不必要浪费的问题。当将此实时操作系统应用于车身控制器中后,由于可以节省大量的ram空间,由此可以在车身控制器内设置更多的功能。

35、具体的,本发明支持周期任务的一个调度函数执行完后才可以被高优先级周期任务抢占,对于周期任务只需要分配一块堆栈空间即可。这对于实时性没有那么高要求的嵌入式系统例如车身控制器,可以节省其大量的ram空间。例如,在不考虑中断抢占的情况下,现需要一个1ms、一个5ms、一个10ms任务,而1ms、5ms、10ms任务使用的最大堆栈分别为1024、512、512字节,因此需要分配1024+512+512个字节空间用于任务执行,而本发明提供的方法只需要分配1024个字节即可,此时就能节省1024个字节,而实际应用中需要更多的周期任务,每个周期任务也需要占用更大的堆栈空间,这对于实时性没有那么高要求的嵌入式系统,尤其是对ram空间较小的控制器来说可以节省出大量的ram空间。



技术特征:

1.一种不需要保护现场的实时操作系统的实现方法,其特征在于,包括:

2.如权利要求1所述的不需要保护现场的实时操作系统的实现方法,其特征在于,所述周期任务包括:周期为1ms、5ms或10ms的任务。

3.如权利要求1所述的不需要保护现场的实时操作系统的实现方法,其特征在于,所述堆栈空间的字节空间等于所有周期任务中的使用最大堆栈的字节。

4.如权利要求1所述的不需要保护现场的实时操作系统的实现方法,其特征在于,所述状态包括:

5.如权利要求4所述的不需要保护现场的实时操作系统的实现方法,其特征在于,所述步骤s1中对所述周期任务进行初始化的步骤包括:

6.如权利要求5所述的不需要保护现场的实时操作系统的实现方法,其特征在于,

7.如权利要求6所述的不需要保护现场的实时操作系统的实现方法,其特征在于,所述步骤s3包括:

8.一种电子设备,其特征在于,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1至7中任一项所述的方法。

9.一种可读存储介质,其特征在于,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的方法。


技术总结
本发明公开了一种不需要保护现场的实时操作系统的实现方法,包括:步骤S1、为所有周期任务分配一个堆栈空间,用于周期任务的执行;对周期任务进行初始化,每一周期任务包含若干种具有不同优先级的状态和若干个调度函数;步骤S2、根据周期任务的状态激活并执行周期任务;步骤S3、当中断发生时,且当当前执行的周期任务中的一个调度函数执行完后,则允许被高优先级的周期任务抢占。本发明可以节省大量的RAM空间,解决RAM空间资源的不必要浪费的问题。

技术研发人员:高梦杰
受保护的技术使用者:上海汽车芯片工程中心有限公司
技术研发日:
技术公布日:2025/4/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1