标题: STM32之uCOS-II基础、移植、创建任务 [打印本页]

作者: 小小凉冰乐    时间: 2020-6-26 19:26
标题: STM32之uCOS-II基础、移植、创建任务

5.1 uCOS-II操作系统

5.1.1 什么是操作系统

              《1》管理软件硬件的程序集合。

              《2》软硬件的沟通桥梁。

举个栗子:当你要播放音乐时,假设是电脑,装的是Window操作系统,步骤如下:

这时,你就能听到优美动听的歌曲了。但底层操作是如何操作的呢?是谁操作呢?

是操作系统帮你完成了这一切工作。当你点击播放,操作系统工作流程如下:

总结,对硬件的操作,由操作系统来完成,操作系统直接与硬件交互。用户如果想控制底层硬件,必须经过操作系统进行间接控制,操作系统提供系统调用给用户,用户就可以与硬件交互了。系统调用是封装了操作各部分硬件的API。


5.1.2 为什么要使用操作系统

              《1》屏蔽硬件。使应用程序不依赖硬件,提高了程序的可移植性。

              《2》多任务。因为消费者想同时聊QQ、聊、看电视剧等。早期单核CPU想完成这些功能,就需要使用操作系统,实现不同任务之间高速的切换。


5.1.3 操作系统分类

              《1》分时操作系统:以时间片为基本调度原则。给每个任务分配一段固定的CPU时间,时间到就切换下一个任务,时间不到不切换任务。如:Windows—95/98,Linux内核2.6以前。

              《2》实时操作系统:以优先级为基本调度原则。不是给每个任务分配一段固定的CPU时间,而是根据优先级分配CPU执行时间,谁优先级高,先执行谁,分配的CPU时间就多,如uCOS-II。

              《3》半实时操作系统:部分使用分时操作系统、部分使用实时操作系统。如Windows----7/8/10,Linux内核2.6以后。



5.1.3 为何学uCOS-II

《1》代码量少,容易上手。

《2》多任务,实现复杂功能

《3》提高内外功(内功:阅读代码能力 外功:编程能力)

《4》为学习其他操作系统打下基础


5.1.4 其他补充

学操作系统的难点

《1》逻辑理解、代码运行流程

《2》术语的理解、领悟

uCOS-II理解

u---微型

C---控制器

              OS—操作系统

UCOS-II代码来源

《1》官网

《2》示例代码


5.2 UCOS操作系统

5.2.1 操作系统的调度原则

《1》分时操作系统调度原则:

以时间片为基本调度原则,为每个任务分配固定的CPU执行时间,时间到,切换下一个任务,时间不到,不切换任务。

《2》实时操作系统调度原则

以优先级为基本调度原则,不是固定为每个任务分配CPU执行时间,而是根据优先级高低分配CPU时间,优先级低的分配CPU执行时间就短,优先级高的分配的CPU时间就长。



5.2.2 操作系统程序结构

《1》裸机代码

整个工程只有一个main函数,在main函数执行中只有一个真正意义上死循环其他死循环都是有退出条件或永远不会执行了的死循环。

《2》操作系统代码

整个工程只有一个main函数,在mian函数中,至少创建一个任务,每个任务都有一个死循环。操作系统要切换任务需要高优先级任务释放CPU使用权。


5.2.3操作系统的任务结构

《1》任务的构成:任务控制块,任务函数、任务优先级、任务栈。

《2》 任务控制块:任务先内存空间申请的一块内存空间,用于执行任务使用的,任务控制块包含、任务函数、任务优先级、任务栈。

《3》任务函数:任务的执行入口,任务的具体功能在这里实现。

《4》任务优先级:任务的能执行的唯一标识。用来规定任务的执行先后顺序。

《5》任务栈:保存任务在切换过程中的现场信息。任务在切换前,把当前执行任务的现在信息保存在栈中,该过程称为压栈,当执行完其他任务完后,又切换回来,读取栈里面保存的现场信息,继续执行任务,该过程称为弹栈。

简单理解:在栈中进入一个元素,称为压栈或入栈,出来一个元素称为弹栈或出栈。

5.2.4 操作系统的任务切换

在哪些情况下,会进行任务切换?


5.2.5 操作系统的任务中断

与裸机编程中断基本一致,但需要注意两点

裸机中断与ucos中断的深入理解


5.2.6 操作系统的任务状态

《1》停止/休眠态:任务创建之前和删除之后的状态。

《2》就绪态:任务具有了可执行条件。

《3》运行态:任务得到了CPU的使用权。

《4》等待/挂起态:任务被挂起或等待某件事情发生。

《5》中断态:正在执行的任务,被中断了。

任务状态转换关系如下图:

5.3 创建UCOS工程模板

5.3.1 获取UCOS源码

官网太卡了,所以给你准备UCOS例程,如下。

5.3.2 UCOS过程文件分析

5.3.3 新建UCOS工程


5.3.4 创建一个任务

5.3.5 补充、小结

移植Ucos-II总结:

配置基本流程:

《1》找到Ucos-II源码(来源:官网、例程、别人的代码、自己的代码)

《2》添加到过程文件中,添加对应头文件

《3》编写系统滴答定时器,开启中断模式

《4》编写滴答中断服务函数

《5》编写主函数

主函数编写流程:


关于延时OSTimeDly(100);?

一次系统滴答为5ms,所以写100,就是500ms。


关于任务函数OSTaskCreate(Task0,NULL,&stack0[TASK0_STK_SIZE-1],TASK0_PRI);?


全部资料51hei下载地址:
0.新建工程.7z (351.93 KB, 下载次数: 37)
uCOS-II.zip (94.6 KB, 下载次数: 36)
UCOS.docx (1000.62 KB, 下载次数: 30)


作者: 51hei团团    时间: 2020-6-28 16:16
好资料,51黑有你更精彩!!!
作者: bayga456    时间: 2020-10-10 23:16
好东东,支持一下。
作者: 184712115    时间: 2020-11-24 18:07
马一下,学习了谢谢/
作者: 490353119    时间: 2020-11-24 22:37

好东东,支持一下。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1