Wanlix操作系统怎么实现两个固定任务之间的切换

发布时间:2022-03-22 15:55:19 作者:iii
来源:亿速云 阅读:180

今天小编给大家分享一下Wanlix操作系统怎么实现两个固定任务之间的切换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

从零起步,先实现2个固定任务的互相切换来验证操作系统的切换功能。

然后再不断的加入新功能,由浅入深,一步步将操作系统充实起来。每一个功能的加入都是一个独立的阶段性。

Wanlix操作系统有什么特点?

Wanlix只提供主动切换任务的功能,是非抢占操作系统,编写相对简单,作为学习编写操作系统的入门教材是个不错的选择。这也使得它非常小巧,适合在硬件资源少但又需要任务切换的小型嵌入式软件系统中使用。

两个固定任务之间如何切换?

从C语言的角度来看,任务就是函数只不过是在操作系统里,一个任务可以切换到其它任务,其实也就是一个函数可以切换到其它函数

当切换发生时,正在执行的函数1的R0~R15、CPSR这17个寄存器临时保存起来,然后将希望执行的函数2的上次保存的数值恢复到R0~R15、CPSR这17个寄存器,这样芯片就从函数1切换到函数2运行了。

当希望从函数2切换到函数1时,再将函数2的17个寄存器保存起来,恢复函数1的17个寄存器,芯片就又继续运行函数1了。这样便在函数1运行的中间插入了函数2,这就是任务切换,也就是所谓的“上下切换”,函数1或函数2所在的最上层父函数调用的一系列函数就组成了任务,任是从最上层父函数开始运行的。

Wanlix操作系统怎么实现两个固定任务之间的切换

任务切换示意图

这种切换也可以在多个任务之间进行,至于什么时候切换,怎么控制切换,这就是操作系统要做的事情了。

下面我们将遵循着这一设计思路来编写一个最简单的切换过程——2个函数之间不停的互相切换,来验证任务切换过程中寄存器备份、恢复原理的正确性

为了能看出任务切换的效果,我们设计2个函数

TEST_TestTask1和TEST_TestTask2,这两个函数都是死循环,反复执行“打印消息—>延迟”的过程,我们可以通过打印信息来确认是哪个函数在执行,

伪码如下:

Wanlix操作系统怎么实现两个固定任务之间的切换

如果没有函数切换功能,那么这样的函数只要一开始执行,它们就会一直死循环执行下去,不会给其它函数执行的机会,我们就只能看到只有一个函数在循环打印消息。如果能够按照上面是所讲述的切换原理发生函数切换,那么我们

就应该能看到的是这2个函数是在循环交替打印。

在main函数里首先初始化硬件,然后调用WLX_TaskInit函数对2个任务进行初始化,最后调用WLX_TaskStart函数启动任务调度,这2个任务就开始交替执行了,交替向串口打印数据。

Wanlix操作系统怎么实现两个固定任务之间的切换

最终结果:

Wanlix操作系统怎么实现两个固定任务之间的切换

以上就是“Wanlix操作系统怎么实现两个固定任务之间的切换”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. Activity之间切换的动画
  2. 不同frame之间的切换

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:arduino编码器接口模式是什么

下一篇:PID参数设置及调节方法有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》