UCOS学习笔记(一)前后台程序、时间片轮询、UCOS简介

       通过一个学期的学习,对STM32已经有了一个初步的认识,并且通过几个项目的练习,已经基本可以独立完成一个32的小型项目,随着学习的深入当然不满足于只在裸机上写while(1)死循环了,所以暑假打算学习一下UCOS的知识,接触一下实时操作系统,争取在日后做一些较大的工程项目时可以加入操作系统,提高程序的实时性。

前后台系统

       我们在裸机裸机上跑的一般就是前后台的程序:代码分为前台后台,后台就是while循环中的代码,前台是指响应的中断。这个就不做过多的介绍了。

时间片轮询

       除了简单的顺序执行这样的前后台程序外,还可以采用时间片轮询法加以改进。

       时间片轮询是多个任务以一定的频率执行,就像多个任务一起无干扰的执行一样。

       在时间片轮询中要首先设置一个中断频率,这个频率就相当于一个滴答定时器,也就是我们这个程序的心跳;再建一个Task_delay数组,它所含元素的个数就是我们要执行的任务数,然后每次中断将Task_delay中每个元素都自减一;在主函数中写任务服务函数,当对应Task_delay值减为0时,该任务执行,并且重新设定位任务执行频率对应的计数值。

        以上就是时间片轮询法的代码思路,理论上来讲,时间片轮询法忽略了任务的执行时间以及定时器中断函数的执行时间,只要不在任务代码中太长的延时、执行时间长的任务,那么任务的执行频率不会和理想化的相差太远。

RTOS

       说完了时间片轮询的方法和优缺点,再介绍一个更好的解决方法:RTOS(实时操作系统)     

      实时操作系统分为硬实时和软实时。硬实时要求规定时间内必须完成,软实时没那么严格。

      把实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个简单的程序,通常为死循环。

      有多种实时操作系统:ucos、freertos等等

      实时操作系统的核心内容在于实时内核(可剥夺内核)

      可剥夺内核:多任务管理能力,类似多核,实现了MCU资源的最大化利用,有助于实现程序的模块化开发,能够实现复杂的实时应用。每个任务可以剥夺其他任务的CPU使用权,它总是运行就绪任务中优先级最高的任务。优先级数字越小优先级越高

UCOS-III

       UCOS是一个典型的可剥夺内核的实时操作系统,现行的有UCOS-II和UCOS-III俩个版本,当然III的功能更加强大,它没有任务数限制、提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信,用C和汇编写成,只有极少数与处理器密切相关的部分代码(如上下文切换)是用汇编写的。

       同时选取它来学习最最重要的一点就是它是完全开源的,我们可以去阅读、理解并且修改它的源码,并且它的资料很多,网上有好多教程以及问题的解答,对初学者十分友好。

 

猜你喜欢

转载自blog.csdn.net/a568713197/article/details/81184830