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

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

前言

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

本章笔记清单

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.题外话

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《基于嵌入式实时操作系统程序设计技术 第2版》是一本关于嵌入式实时操作系统(RTOS)程序设计的技术手册。该书以嵌入式系统的特点为基础,详细介绍了使用RTOS进行程序设计的方法和技术。以下是本书的主要内容回答。 本书的第一章介绍了嵌入式系统和实时操作系统的基本概念以及它们的特点和应用领域。同时还介绍了一个实时操作系统的基本组成部分,包括任务管理器、断服务例程和资源管理器等。 第二章详细介绍了嵌入式实时操作系统任务管理和调度技术。其包括任务的创建、销毁和切换等操作,以及不同的调度算法和优先级置。 第三章讨论了嵌入式实时操作系统断服务例程设计和处理。该章重点介绍了断服务例程的编写和断的嵌套处理,以及断的优先级和断控制器的配置。 第四章探讨了嵌入式实时操作系统的通信和同步技术。该章介绍了进程间通信(IPC)和任务间同步的方法和技术,包括信号量、消息队列和邮箱等。 第五章介绍了嵌入式实时操作系统的定时器和时钟管理技术。其包括定时器的配置和使用,以及时钟的同步和校准等。 第六章讨论了嵌入式实时操作系统的内存管理和存储技术。该章介绍了内存的分配和回收方法,以及存储器的管理和保护技术。 最后一章总结了全书的内容,提供了一些实际案例和应用实例,以帮助读者更好地理解和应用所学的嵌入式实时操作系统程序设计技术。 总体而言,《基于嵌入式实时操作系统程序设计技术 第2版》通过详细介绍了嵌入式实时操作系统的各个方面,为读者提供了一个全面了解和掌握嵌入式实时操作系统程序设计的技术手册。无论是初学者还是有经验的嵌入式系统开发者,都能从获得宝贵的知识与经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值