基于RTOS的软件开发理论

本文深入探讨RTOS软件开发的关键技术,包括任务设计、公共函数设计、中断服务程序设计等内容,帮助开发者掌握RTOS软件开发的核心原理。

引言:软件开发,大多数人依靠的是经验,缺乏理论,比如遇到问题知道怎样改可以修复问题,但不明白深层原因。有些阶段,选择高校的理论教程读读,比网红博主拼凑的技术总结,更能醍醐灌顶,提高水平。实践检验真理,但理论能指导实践。

1、RTOS的特点

操作系统是计算机中最重要的软件,类似管家,把不同的软件任务安排给硬件资源去执行。为保证服务质量,需要对任务进行合理安排,访问硬件也进行一定的安全维护,保证硬件资源不闲置,不争抢冲突,但允许合理的插队。

RTOS的专业的描述:
1、执行时间的可确定性是实时搡作系统的基本特性。采用合理的算法和策略,为多个任务合理地分配资源,以满足每个任务的实时性要求。
2、多任务抢占式是实时操作系统的基本特性。多个任务共同分享硬件系统资源,每个任务间彼此独立,根据任务的重要程度给任务分配不同的优先级,优先级越高的任务越容易得到 CPU 的使用权,保证任务的实时性和充分地使用硬件资源。
3、对稳定性和可靠性要求髙。

要成为老司机,首先要考驾照,学习如何开车,至于汽车本身各系统工作原理,内部构造暂且不用关注;能上路,在不同路况安全驾驶。达到一定水平了再去深究车的部件组成、故障排查,对驾驶习惯、汽车保养也具有参考价值的。

基于RTOS的软件开发,不仅要明白操作系统接口的作用,还要理解其组合的意义。本文是关于软件开发的理论,作为有一定RTOS基础的参考,授人以渔。

2、任务设计

嵌人式系统的设计都是从需求分析开始,在软件角度,对具体功能进行任务划分,是实时操作系统应用软件设计的关键。任务(task或thread)划分是否合理将直接影响软件设计的质量、执行效率和可扩展性。

2.1 任务的特性

“任务”的状态是动态变化的,简化就是有运行和等待,而且阻塞等待时必须的,更多状态可以参考操作系统基础。多个任务宏观上是并发运行,其实对单CPU是分时复用,每个任务运行时独立的占有系统资,这也导致任务间数据传输的异步性。

好比三口之家只有一个卫生间,多人分时使用,不需要三人就配三个卫生间,每人使用时完全享有卫生间的设施,其他人有需要时,得排队或者看家庭地位强迫插队。

在对一个具体的嵌人式系统进行任务划分时,不同的角度有不同的方案,一般先考虑需求指标和硬件资源限制。

实时性指标:在最坏的情况下,系统中对时间要求高的需求能否实现。
任务数目合理: 任务数目多,每个任务只实现单一功能,任务的设计简申;但任务的调度操作、任务之间的通信活动增加,资源开销大,运行效率低。一般按功能类型、时间要求合理地合并一些任务。
降低资源需求: 合理划分任务,减少任务之间的同步和通信需求,选择合适的数据结构,从而降低对硬件资源的需求。

2.2 任务划分的方法

为了使任务划分合理,通常采用以下方法。

2.2.1 设备依赖性任务

系统任务必定是为了实现某些功能,这个功能是主动执行,如读取信息、控制外设,还是被动执行,如接收按键事件。

根据这个特性,任务可分为“主动型”和“被动型”两种。主动型任务与其他任务通过通信机制向该任务发出执行请求执行,被动型任务通常是一个中断服务程序(ISR ) 和一个与之关联的任务。在这个基础上,也可以把多个同类型外设的检测合并到一个任务。

2.2.2 关键任务

“关键性”是指某种功能在系统中的重要性,如果该功能异常将会产生严重后果,这种关键任务必须优先得到运行机会,而且其检测事件、消息队列不能遗漏,特殊情况下控制时间也要及时响应。
这种任务得提高优先级来保证运行,而且其任务功能必须尽可能与其他功能剥离,独立成为一个任务,不能因为任务里面得其他功能阻塞或者异常,影响关键功能的实现。

2.2.3 紧迫任务

“紧迫性”是指某种功能必须在规定的时间内得到运行权(及时运行),这类功能有严格的实时性要求。
大多数紧迫任务是由异步事件触发的,这种紧迫任务安排在相应的中断服务中,或者优先级尽可能髙的任务。要达到“按时完成”的目的,必须使“紧迫任务”需要的执行时间尽可能短。尽可能剥离“不太紧迫”的操作,只剩下“必须立刻执行”的搡作,将被剥离的“不太紧迫”的操作另外封装为一个任务。

2.2.4 数据处理任务

用户应用程序中消耗机时最多的一般是各种数据处理单元,而且通常不只一个,它们分别为不同的功能服务,这些单元划分出来,分别包装成不同的任务。由于这类任务需要消耗较多机时,所以优先级必须较低。多个不同的数据处理任务时,可安排相同的优先级,采用时间片轮转方式运行。

2.2.5 触发条件相同的任务

如果若干功能由相同的事件触发,就可以将这些功能合并为一个任务,从而减少事件分发给多个任务的工作量。如检测到按键中断后要进行相应数据处理、界面显示、外设控制。在任务内部,各功能的执行顺序需要尽可能按规则设定,如果各个功能之间有因果关系,则按因果关系的顺序执行;如果各个功能之间完全独立,则按实时性要求的强弱顺序执行。

2.2.6 运行周期相同的任务

对于需要重复执行的操作,即具有周期性。这类功能组合在一起封装为一个任务,避免一个时间事件触发多个任务,省去事件分发搡作与它们之间的通信。

2.2.7 顺序操作任务

如果若干功能按固定顺序进行流水作业,相互之间完全没有"并发性",尽量将这些功能组合为一个任务。

2.3 任务的可调度性分析

任务划分后,需要评估CPU占有率,以便确定这些任务是否可以在操作系统的调度下正常运行。简单的说就是计算在一定周期内,各任务运行的最长时间长和是否小于周期,也可以粗略确认最低优先级的任务(待机任务)是否有周期运行的机会,否则系统的正常运行可能难以保证。

类似生产流水线,如果某个环节超时,整个产线就没法持续运行。这种情况需要提高系统时钟频率或者换硬件方案,或者优化软件算法。

2.4 任务类型

任务设计是整个应用程序的基础,按任务的执行方式可以分为三类:单次执行类、周期性执行类和事件触发类。

2.4.1 单次执行的任务

这类任务创建后只执行一次,执行结束后即自行删除。优点一个功能运行完了,立刻销毁释放资源,但也正是这样

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值