《基于嵌入式实时操作系统的编程技术》笔记清单:第四章任务设计

《基于嵌入式实时操作系统的编程技术》笔记清单:第三章任务划分.
《基于嵌入式实时操作系统的编程技术》笔记清单:第四章任务设计.
《基于嵌入式实时操作系统的编程技术》笔记清单:第五章中断服务程序设计.
《基于嵌入式实时操作系统的编程技术》笔记清单:第六章行为同步.
《基于嵌入式实时操作系统的编程技术》笔记清单:第七章资源同步.
《基于嵌入式实时操作系统的编程技术》笔记清单:第八章数据通信.
《基于嵌入式实时操作系统的编程技术》笔记清单:第九章时间管理.
《基于嵌入式实时操作系统的编程技术》笔记清单:第十章采集任务设计.

前言

在基于实时操作系统的应用程序设计中,任务设计是整个应用程序的基础,其他软件设计工作是围绕任务设计来展开,任务设计就是设计“任务函数”和相关的数据结构。

本章笔记清单

1. 任务函数结构分为三大类

1)单次执行类;
2)周期执行类;
3)事件触发类;

2.单次执行

		void Task(void *pdata)
		{
			进行准备工作的代码;
			任务实体代码;
			调用任务删除函数;---> OSTaskDel()
		}

1)使用场合:①启动任务; ②由按键启动的任务,如发送一个串口信号;
2)在创建单次执行任务时,可以给任务传参,任务函数内容读取pdata指针;
3)适合采用“创建任务”的方式启动任务的条件:
        ~~~~~~~ ①任务时孤立的,不和其他任务通信;
        ~~~~~~~ ②只是用共享资源来获取信息和输出信息。

3. 周期性执行的任务

		void MyTask(void *pdata)
		{
				初始化工作;
				while(1)
				{
					任务实体代码;
					调用系统延时函数;
				}
		}

1)当任务执行周期远大于系统时钟节拍,任务执行周期的相对误差比较小。
2)任务周期只有几个时间节拍时,相邻的两次执行时间间隔不能忽视。只适用于对周期稳定性要求不搞的任务,如按键任务。
3)当任务周期只有一个节拍,可以将功能放到OSTimeTickHook(), 每次一个节拍,都会调用一次次函数。
4)任务周期少于一个时钟节拍,或不是时钟节拍整数倍。无法使用延时函数进行周期性控制,只能采用独立于操作系统的定时器中断来触发。使用定时器,具有很高的周期稳定性。
5)键盘任务,显示刷新,模拟信号采样都可以看作周期性执行任务。

4. 事件触发执行的任务

		void MyTask(void *pdata)
		{
				初始化工作;
				while(1)
				{
					调用获取事件的函数;//等待信号量、等待消息邮箱...
					任务实体;
				}
		}

1)当触发的条件为“时间间隔”时(如定时器中断),该任务具有周期性。任务可以不调用延时也能被挂起。
2)当触发的任务事件属于“信号类”(如信号量),仅通知其它任务运行。
3)当触发的任务事件为“信息类”(如消息邮箱),不仅能通知任务,还可以提供原始资料数据。

5. 任务优先级安排原则

1)中断关联性:与中断服务相关,优先级尽可能高。
2)紧迫性:通常与ISR关联,越紧迫,优先级越高。
3)关键性:任务越关键,安排的优先级越高,以保障其执行机会。
4)频繁性:周期任务,执行越频繁,则周期越短,允许耽误时间也越短,故安排的优先级越高,以保障及时得到执行。
5)快捷性:在前面各项条件相近时,越快捷(耗时短)的任务安排的优先级越高,以使其他就绪任务的延时缩短。
6)传递性:信息传递的上游任务的优先级高于下游任务的优先级,如信号采集任务的优先级高于数据处理任务的优先级。

6. 任务需要配备的数据结构分为两类:

1)一类是与操作系统有关的数据结构。比如 INT8T OSTaskCreate (void(*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio); 任务参数表、任务堆栈和任务控制块均为与操作系统相关的数据结构。

2)另一类是与操作系统无关的数据结构。由用户自己定义。

7. 公用函数的调用

1)调用一个公用函数是,极有可能破坏原函数的数据,所以常常采用两种措施:互斥调用和可重入设计。
2)互斥调用·(内含全局变量):①如果函数运行时间短,可关中断,对共享资源操作完后,重新打开。②如果函数运行时间长,应采用互斥信号量。
3)可重入设计:关键是不是使用全局资源。

8. 任务的代码设计过程

1)一个任务的代码设计过程是从上到下的过程,应该分析系统总体任务关联图,明确每个任务在系统整体中的位置和角色,再对每个任务进行详细关联分析,然后画出任务的程序流程图,最后按程序流程图编写代码。



9.题外话

未来的世界看似是一个世界,却由很多个平行世界组成:顶级的资源操控者,从一个场合到另一个场合,交换共享资源;中层精英在奋力工作之余,必须把时间用来自我提升,努力接近顶层;底层无用人群,只能用廉价的食品喂饱自己,只能沉浸在短视频/小说/娱乐节目中。——转自水木然学社公众号文章《真正的高手,都是“发算法型”的人!》

猜你喜欢

转载自blog.csdn.net/weixin_38956024/article/details/107170465