You are on page 1of 32

第五讲 SOC 系统的结构设计 (2)

嵌入式软件
 SOC 的应用软件以固化形式存入片上存储器中,是一种嵌入式
软件。

 一般情况下, SOC 芯片上的存储器容量较小,所以对应用软件


有比较严格的要求。在 SOC 中运行的应用软件应容积小、实时
性强。

 为了片上主控 RISC 处理器所需并行和并发进程、中断处理、输


入输出作业以及片上多个部件并行工作,有些 SOC 需要嵌入式
实 时 操 作 系 统 ( Real Time Operational System, 简 称 为 RTO
S )。
嵌入式实时操作系统的基本概念

 嵌入式实时操作系统是计算机操作系统的技术和设计理念在嵌入
式系统中的应用。
嵌入式实时操作系统的基本概念

 操作系统是计算机系统中最基本、最主要的软件,操作系统管理
着计算机的资源,包括硬件资源和软件资源,并提供开发应用程
序的基础。

 计算机操作系统面向用户,为用户提供了良好的人机界面。

 计算机操作系统的工作方式是分时制,系统软件相当庞大。
嵌入式实时操作系统的基本概念

 嵌入式系统是实时系统,系统对外部事件的响应和处理有严格的
时间要求。

 嵌入式系统的存储器容量较小,因此将计算机操作系统直接应用
到嵌入式系统并不适宜。

 在计算机操作系统的基础上,根据嵌入式系统的特点,保留其精
华,舍弃一部分不必要的功能,以形成短小精悍的实时操作系统,
对于提高 SOC 的系统功能是十分重要的。
嵌入式实时操作系统的基本概念

 嵌入式实时操作系统中,没有计算机操作系统中庞大的文件管理
和内存管理的内容。

 它所具有的是实时操作系统中最为重要的内容,即多任务实时调
度和任务的定时、同步操作。

 嵌入式实时操作系统的精华在于向开发人员提供一个实时多任务
内核。开发人员应将项目分解成若干独立的任务,将各任务承担
的功能、任务间转换的关系向实时多任务内核交代清楚,让实时
多任务内核去管理这些任务,开发进程即告完成。
嵌入式实时操作系统
实时操
作系统特点

 计算机的应用有实时应用和非实时应用两类。在实时应用场合,
要求计算机在确定的时间内执行其功能并对外部的异步事件作出
响应,能够满足上述要求的计算机系统称为实时系统。

 实时系统通常又有硬实时系统和软实时系统之区分。前者意味着
存在必须满足的时间限制。后者意味着偶尔超过时间限制是可以
容忍的,例如实时数据库查询系统在用户键入请求后几秒内得到
查询结果,偶尔一次超时并不影响系统的使用。
嵌入式实时操作系统
实时操
作系统特点

 实时操作系统( Real Time Operational System ,简称为 RTO


S )是基于计算机的,是管理计算机硬件资源并提供人机交互和
编程接口的系统。实时操作系统能在固定的时间内对一个或多个
外设发出的信号作出适当的反应。

 与普通(分时)操作系统不同,实时操作系统强调了系统对外部
异步事件响应时间的确定性。
嵌入式实时操作系统
实时操
作系统特点

 目前应用比较广泛的实时操作系统有 Linux 、 OS/9 、 VxWorks


等。这些实时操作系统具有如下特点:

( 1 )规模小。
( 2 )中断被屏蔽的时间短。
( 3 )中断处理时间短。
( 4 )任务切换快。
嵌入式实时操作系统
前后
台系统设计

 在嵌入式系统和 SOC 中,系统软件可以用汇编程序编写,而不


使用 RTOS ,这种方式称为前后台系统。

 编写应用程序时先顺着一条线画好流程图,然后按照流程图编写
程序。嵌入式应用程序一般是一个无限循环,循环中调用相应的
函数完成相应的操作,这部分操作可以看成是后台行为。

 用中断来处理随机事件,这部分可看成是前台行为。
嵌入式实时操作系统
前后
台系统设计

 前台称为中断级,后台称为任务级。

 后台程序逐个检查每个任务是否具备了运行条件,逐个完成相应
的操作。

 时间要求苛刻的操作依靠中断完成。
嵌入式实时操作系统
前后
台系统设计

 中断服务程序中置位一个事件发生了的标志,然后退出中断,待
后台程序运行到检查这个标志的时候,才能完成事件处理,再将
事件发生标志复位。

 如果在中断服务中加入事件处理程序,则中断服务程序将会变得
太长,影响后来的中断或其他中断。
嵌入式实时操作系统
前后
台系统设计

 前后台系统在处理信息的及时性上比实际可以做到的要差,采取
适当的方法,有可能做得更快一些。这个反映及时的指标叫做任
务级响应时间。在最坏的情况下,任务级响应时间取决于整个后
台循环执行的时间,若程序作了修改,循环时间也会影响。此外,
这种单任务程序的另一个缺点是,一旦这条线的任何一处因某种
意外被破坏了,则整个系统就会“死机”。

 但这类系统的优点是简单,不需要 RTOS ,也没有 RRAM/ROM


的额外开销,在程序比较简单的系统中仍被广泛采用。
嵌入式实时操作系统
前后
台系统设计

 中断服务程序中置位一个事件发生了的标志,然后退出中断,待
后台程序运行到检查这个标志的时候,才能完成事件处理,再将
事件发生标志复位。

 如果在中断服务中加入事件处理程序,则中断服务程序将会变得
太长,影响后来的中断或其他中断。
嵌入式实时操作系统

RTOS 设计

 如果 SOC 或嵌入式系统的程序比较复杂,牵涉到进程调度、 I/
O 作业的中断等,就不可避免地要在芯片上安排实时操作系统。
嵌入式实时操作系统

RTOS 设计

 与普通的 RTOS 相比,嵌入式实时操作系统不仅有实时性的要


求,而且有容量的限制。

 一般的实时操作系统容量比较大,不适合嵌入式系统的应用要求,
于是对这样的系统进行裁剪。
嵌入式实时操作系统

RTOS 设计

 首先,在嵌入式应用中不需要文件管理的庞大内容,此外内存管
理一般也可省去,这样只剩下 I/O 管理和进程管理。

 在嵌入式系统中,进程管理就是任务管理, I/O 操作的管理也可以


当作若干个任务进行管理。

 计算机操作系统经过这样的精简后,剩下的是实时操作系统中最
为重要的内容,即多任务实时调度和任务的定时、同步操作,其
二进制代码仅数千字节,实时性变得更好,这部分内容通常称为
实对内核。
嵌入式实时操作系统

RTOS 设计

 在嵌入式系统中,首先运行一个实时内核,然后由这个实时内核
管理应用程序中的各个任务,形成嵌入式实时多任务系统。从这
个意义上说,实时内核就是所谓嵌入式实时操作系统。

 RTOS 实行多进程管理,当系统受到强烈的干扰时,可能只是引
起若干进程中的一个被破坏,而另外的进程运行时可对其进行修
复。
嵌入式实时操作系统

RTOS 设计

 应用 RTOS 管理,不仅可以将应用程序分解成若干个独立的进
程,而且可以另外启动一个监控程序,监视各进程的运行状况。
这就提高了系统的抗干扰能力。

 一个复杂的应用程序,可以分解成多个任务分别调试,设计人员
编制完成各任务的执行程序后,只需将任务的启动条件、优先级
等告诉 RTOS ,即可让 RTOS 专门管理这些任务,大大缩短了
产品的开发周期。
RTOS 设计
实时多任务调度

 在嵌入式 RTOS 中任务的概念与计算机操作系统中任务的概念


有所不同。

 计算机操作系统中,任务是用户递交给计算机的一顶工作,一个
可以有许多进程,每个进程还可以有多个线程。

 在嵌入式 RTOS 中的一个任务,是指一个程序分段,这个分段


被操作系统当作一个基本单元来调度。
RTOS 设计
实时多任务调度

 实时应用程序的设计过程,是如何把应用问题分割成多个任务,
每个任务都是整个应用的一部分,每个任务被赋予一定的优先级,
有它自已的一套寄存器和堆栈空间。

 通常每个任务都是一个无限的循环。每个任务都处于以下 5 种状
态之一。这 5 种状态是:休眠态、就绪态、运行态、等待态和被
中断态。
RTOS 设计
实时多任务调度

 多任务运行的实现实际上是靠 RTOS 在许多任务之间进行调度


和切换。

 调度( scheduler 或 dispatch )是 RTOS 内核的主要职责,调


度要决定让哪个任务运行。
RTOS 设计
实时多任务调度

 一旦 RTOS 内核决定运行另外的任务时,它保留正在运行任务
的当前状态,即 CPU 寄存器中的全部内容。这些内容保存在任
务自己的栈区中,然后把下一个将要运行任务的堆栈中的内容重
新装入到 CPU 的寄存器中,开始下一个任务的运行。这个过程
叫做任务切换。

 任务切换过程增加了系统内存的开销。
RTOS 设计
实时多任务调度

 常用的实时调度法主要有 3 种:
单调执行率调度法
最早截止优先调度法
时间裕度调度法

 而以单调执行率调度最为常用。
RTOS 设计
实时多任务调度

 单调执行率调度法事先为每个任务分配一个与事件发生频率成正
比的优先级, RTOS 内核总是调度优先级最高的就绪任务,必
要时将剥夺当前任务的 CPU 使用权,让高优先级的任务运行。

 这种调度方法是大部分实时内核所采用的调度方式,被大量实际
应用证明是最优先的。
RTOS 设计
实时多任务调度

 在采用单调执行率调度法时,如果有 n 个任务都要满足其硬实时
条件,则必须满足下面的不等式

 基于单调执行率调度法,要多任务都满足硬实时条件,所有任务
总的占用 CPU 时间的比例应小于 69.3% 。
RTOS 设计
实时多任务调度

 最早截止优先调度法。当一个事件发生时,对应的任务被加到就
绪队列中,该队列按照截止期限排序,截止周期最短的优先权最
高。

 时间裕度调度法。如果一个任务需要运行 200ms ,而它必须在


250ms 内完成,则其时间裕度为 50ms 。时间裕度最少的任务优
先级最高。
RTOS 设计
信号与信号量 (sema
phore)

 信号与信号量就是在多任务内核中为避免任务间的竞争而普遍使
用的方法。

 一般应用于以下 3 个方面:

( 1 )控制共享资源的使用权,多任务内核必须保证每个任务在处
理共享数据时的排它性,避免竞争和数据的破坏。

( 2 )标志某事件的发生。

( 3 )使两个任务的行为同步。
RTOS 设计
信号与信号量 (sema
phore)

 在多任务内核中,信号是一个信令,任务要运行下去,必须己得
到这个信令。如果信号已被别的任务占用,则该任务只得被挂起,
直到信号被当前使用者释放。

 信号是只有“ 0” 、“ 1” 两个值的变量。信号量是计数式的,其
值可以是 0 ~ 255 或 0 ~ 65535 ,这取决于信号量规约机制使
用的是 8 位还是 16 位。由于信号是只取两个值 0 和 1 的量,因
此,也可将其称之为信号量。
RTOS 设计
信号与信号量 (sema
phore)

 一般地说,对信号量只能实施 3 种操作:建立( creat );等信


号( wait ),也可称为挂起( suspend );给信号( signal )
或者发信号( post )。

 想要得到信号量的任务执行等待操作,如果该信号量有效(即信
号量值大于 0 ),则信号量值减 1 ,任务得以继续执行;如果信
号量的值为 0 ,等待信号量的任务就被列入等待信号量任务表。
多数内核允许用户定义等待超时,如果等待时间超过了设定值,
该信号量还是无效,则等待信号量的任务就进入就绪态准备运行,
并返回超时等待的出错信息。
RTOS 设计
信号与信号量 (sema
phore)

 一般地说,对信号量只能实施 3 种操作:建立( creat );等信


号( wait ),也可称为挂起( suspend );给信号( signal )
或者发信号( post )。

 想要得到信号量的任务执行等待操作,如果该信号量有效(即信
号量值大于 0 ),则信号量值减 1 ,任务得以继续执行;如果信
号量的值为 0 ,等待信号量的任务就被列入等待信号量任务表。
多数内核允许用户定义等待超时,如果等待时间超过了设定值,
该信号量还是无效,则等待信号量的任务就进入就绪态准备运行,
并返回超时等待的出错信息。
RTOS 设计
信号与信号量 (sema
phore)

 任务以发信号操作释放信号量。如果没有任务在等待信号量,则
信号量的值仅仅是简单地加 1 ;如果有任务正等待该信号量,那
么就会有一个任务进入就绪态,信号量的值也就不加 1 。于是信
令给了等待信号的诸任务中的一个任务。至于给哪个任务,要看
内核是如何调度的。

You might also like