uCOS-III操作系统简单分析

uCOS-III操作系统简单分析编写一个函数 定义为 OSTaskCreate 里面包含的就是 xPSR PC LR R12 R3 R2 R1 R0 R11 R10 R9 R8 R7 R6 R5 and R4 等的初始化

大家好,欢迎来到IT知识分享网。

源码获取

源码下载地址:https://www.micrium.com。

源码需要自己去网站里面找,也可以在网站里面找一个开发板的例子,也就包括了源码的。

任务讲解

1.任务怎样创建来的?

编写一个函数,定义为:OSTaskCreate(),里面需要包含参数:任务结构体,要执行的函数、任务的名称、栈的大小、当前任务的优先级,栈数组等。

2.任务的私有信息需要怎么存放?

定义一个函数,命名为:OSTaskStkInit(),里面包含的就是xPSR、PC、LR、R12、R3、R2、R1、R0,R11, R10, R9, R8, R7, R6, R5 and R4等的初始化。uCOS-III,rtx,rt-thread在这上面的处理都是相同的,所以也没什么好多说的了。

所以,这一路分析下来,基本上套路没差。

3.任务怎么切换?

对于系统运行,要执行第一个任务,可以调用函数:OSStart(),实际是调用OSStartHighRdy();这个函数是使用汇编编写的,在里面找到最高任务,然后跳转过去运行,而运行堆栈信息也切换到psp中。

之后则是多个任务之间进行调度。

在普通任务中,可以调用函数OSTimeDly(),其实就是调用OSCtxSw(),需要设置PENDSV位,这样就能做到PENDSV中断产生,然后切换到应该切换到的任务中。

在中断服务函数中, 可以调用OSIntExit(),跟普通任务不同,它会调用到OSIntCtxSw(),但是它跟OSCtxSw()内容一样,也就能切换任务了。

4.访问同一个资源(变量)如何处理?

对于uCOS-III处理起来也很简单了,直接粗暴的操作PRIMASK。

从这些rtos中的代码来看,应该只有uCOS-III写的最浅显易懂了,怪不得市面上分析它的代码的书籍特别多。

本篇持续更新。。。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/188546.html

(0)
上一篇 2025-09-21 10:45
下一篇 2025-09-21 11:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信