今天小编给大家分享一下Wanlix操作系统怎么实现两个固定任务之间的切换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供网站制作、做网站、网站策划、网页设计、申请域名、网站空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。
从零起步,先实现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所在的最上层父函数调用的一系列函数就组成了任务,任是从最上层父函数开始运行的。
任务切换示意图
这种切换也可以在多个任务之间进行,至于什么时候切换,怎么控制切换,这就是操作系统要做的事情了。
下面我们将遵循着这一设计思路来编写一个最简单的切换过程——2个函数之间不停的互相切换,来验证任务切换过程中寄存器备份、恢复原理的正确性。
为了能看出任务切换的效果,我们设计2个函数
TEST_TestTask1和TEST_TestTask2,这两个函数都是死循环,反复执行“打印消息—>延迟”的过程,我们可以通过打印信息来确认是哪个函数在执行,
伪码如下:
如果没有函数切换功能,那么这样的函数只要一开始执行,它们就会一直死循环执行下去,不会给其它函数执行的机会,我们就只能看到只有一个函数在循环打印消息。如果能够按照上面是所讲述的切换原理发生函数切换,那么我们
就应该能看到的是这2个函数是在循环交替打印。
在main函数里首先初始化硬件,然后调用WLX_TaskInit函数对2个任务进行初始化,最后调用WLX_TaskStart函数启动任务调度,这2个任务就开始交替执行了,交替向串口打印数据。
最终结果:
以上就是“Wanlix操作系统怎么实现两个固定任务之间的切换”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。
分享文章:Wanlix操作系统怎么实现两个固定任务之间的切换
分享URL:http://lswzjz.com/article/pgdeio.html