实时嵌入式系统软件设计方法
2012-4
刘利强、 戴运桃 哈尔滨工程大学出版社 (2012-04出版)
刘利强,戴运桃 著
219
《实时嵌入式系统软件设计方法》主要介绍了实时嵌入式系统软件设计开发的相关知识。《实时嵌入式系统软件设计方法》以实时嵌入式操作系统VxWorks为对象,详细讨论了开发环境建立、任务调度与管理、内核对象操作等内容。
第1章 实时嵌入式系统概述 1.1 嵌入式系统 1.2 嵌入式操作系统 1.3 实时系统 1.4 实时操作系统 第2章 开发环境建立 2.1 软件开发调试方法 2.2 系统启动流程 2.3 交叉开发环境建立方法 第3章 任务调度与管理 3.1 任务基础 3.2 任务管理 3.3 任务调度 第4章 内核对象操作 4.1 任务间的通信 4.2 信号量 4.3 消息队列 4.4 管道 4.5 信号 4.6 事件 第5章 中断与时间管理 5.1 中断管理 5.2 时间管理 第6章 I/O系统操作 6.1 I/O系统概述 6.2 I/O操作 6.3 I/O系统的内部结构 第7章 网络通信 7.1 网络通信基础 7.2 socket 7.3 常用的网络通信服务模式 7.4 基于UDP的网络通信 7.5 基于TCP的网络通信 第8章 软件框架设计 8.1 软件框架结构 8.2 中断服务程序设计 8.3 任务设计 参考文献
版权页: 插图: 行为同步往往是由某种条件或操作而触发,“触发方”一般为任务或ISR,“被触发方”一般为任务,触发的时刻可以称为“同步时刻”,而“触发方”的触发位置和“被触发方”的被触发位置可以称为“同步点”。在“同步时刻”,由“触发方”使用系统提供的机制告知“被触发方”某一条件或操作满足。在VxWorks系统中,可以使用信号量的同步功能、消息队列、管道、异步信号和事件等机制来实现行为同步。 1.ISR与任务间的同步 在实时嵌入式系统中,ISR是级别最高的应用处理。当执行ISR操作时,系统无法进行任务的调度执行。因此,在ISR设计时一般都要求其所含操作尽可能精简,将一些不必要的操作放在任务中处理。所以,对于一个中断的处理一般都是由一个ISR和一个与其相关联的任务共同完成的,这就需要在ISR与任务之间进行行为同步。 ISR与任务间的行为同步是单向同步,其执行流程如下: (1)由于外部事件引发中断,调用ISR执行; (2)ISR作为“触发方”在其某一执行步调用系统操作向其相关联的任务发出触发信息; (3) ISR继续执行直到中断结束; (4)系统进行多任务调度。若与中断相关联的任务得到CPU,则该任务可以执行,并可在同步点接收到ISR发出的触发信息。 由于无法确定本次调度之前该任务的执行情况,所以该任务不一定从同步点开始执行。 2.两任务间的同步 两任务间的同步所包含的情况较多。例如,在两任务间可以进行单向同步或双向同步,“触发方”任务优先级可以低于、等于或高于“被触发方”任务优先级。由于“触发方”与“被触发方”任务优先级相同的情况对于行为同步这种操作来说没有意义,一般不会使用。下面仅就其他情况的执行过程进行讨论,并假设无其他行为同步操作,且不考虑ISR和其他任务的影响。 (1)单向同步。单向同步是指两任务的一方为触发信息发送方(即“触发方”),而另一方为触发信息接收方(即“被触发方”)。 当“触发方”的任务优先级高于“被触发方“的任务优先级时,两任务的执行流程如下: ①“触发方”任务执行,在其某一执行步调用系统操作发出触发信息; ②“触发方”任务继续执行,直到其释放CPU; ③“被触发方”任务执行,并可在同步点接收到触发信息。 对于这种情况来说,瞬时同步的效果较差,“被触发方”任务的执行完全是受“触发方”任务的触发信息控制,常常会用于“被触发方”任务为周期定时执行或事件触发执行,且对任务的实时性要求不高的场合。 当“触发方”的任务优先级低于“被触发方“的任务优先级时,两任务的执行流程如下: ①“被触发方”任务执行,当其执行到接收触发信息的代码时被阻塞,释放CPU; ②“触发方”任务执行,在其某一执行步调用系统操作发出触发信息,“触发方”任务立即被“被触发方”任务抢占,“触发方”任务转为就绪态; ③“被触发方”任务继续执行,并重复第①步过程。 这种情况的瞬时同步效果较好,往往用于“被触发方”任务为事件触发执行,且对任务的实时性要求较高的情况。 (2)双向同步。在两任务单向同步的情况下,无论“触发方”和“被触发方”之间的任务优先级为何种关系,都无法确保两任务在“同步点”位置进行任务切换,也无法确保两任务的执行速率相同(即一个任务执行一次循环,另一个任务也执行一次循环)。也就是说,两任务既做不到执行位置(即“同步点”)的同步,也做不到执行速率的同步。然而,在某一些应用场合下是希望可以在两个任务之间实现执行位置的同步或执行速率的同步,从而达到一种平衡,这就需要双向同步。
《实时嵌入式系统软件设计方法》可作为高等院校相关专业的本科生、研究生教材,也可作为将要和正在从事实时嵌入式系统软件开发设计的工程技术人员的参考书。