Professional Documents
Culture Documents
05 第五讲 SOC系统的结构设计
05 第五讲 SOC系统的结构设计
嵌入式软件
SOC 的应用软件以固化形式存入片上存储器中,是一种嵌入式
软件。
嵌入式实时操作系统是计算机操作系统的技术和设计理念在嵌入
式系统中的应用。
嵌入式实时操作系统的基本概念
操作系统是计算机系统中最基本、最主要的软件,操作系统管理
着计算机的资源,包括硬件资源和软件资源,并提供开发应用程
序的基础。
计算机操作系统面向用户,为用户提供了良好的人机界面。
计算机操作系统的工作方式是分时制,系统软件相当庞大。
嵌入式实时操作系统的基本概念
嵌入式系统是实时系统,系统对外部事件的响应和处理有严格的
时间要求。
嵌入式系统的存储器容量较小,因此将计算机操作系统直接应用
到嵌入式系统并不适宜。
在计算机操作系统的基础上,根据嵌入式系统的特点,保留其精
华,舍弃一部分不必要的功能,以形成短小精悍的实时操作系统,
对于提高 SOC 的系统功能是十分重要的。
嵌入式实时操作系统的基本概念
嵌入式实时操作系统中,没有计算机操作系统中庞大的文件管理
和内存管理的内容。
它所具有的是实时操作系统中最为重要的内容,即多任务实时调
度和任务的定时、同步操作。
嵌入式实时操作系统的精华在于向开发人员提供一个实时多任务
内核。开发人员应将项目分解成若干独立的任务,将各任务承担
的功能、任务间转换的关系向实时多任务内核交代清楚,让实时
多任务内核去管理这些任务,开发进程即告完成。
嵌入式实时操作系统
实时操
作系统特点
计算机的应用有实时应用和非实时应用两类。在实时应用场合,
要求计算机在确定的时间内执行其功能并对外部的异步事件作出
响应,能够满足上述要求的计算机系统称为实时系统。
实时系统通常又有硬实时系统和软实时系统之区分。前者意味着
存在必须满足的时间限制。后者意味着偶尔超过时间限制是可以
容忍的,例如实时数据库查询系统在用户键入请求后几秒内得到
查询结果,偶尔一次超时并不影响系统的使用。
嵌入式实时操作系统
实时操
作系统特点
与普通(分时)操作系统不同,实时操作系统强调了系统对外部
异步事件响应时间的确定性。
嵌入式实时操作系统
实时操
作系统特点
( 1 )规模小。
( 2 )中断被屏蔽的时间短。
( 3 )中断处理时间短。
( 4 )任务切换快。
嵌入式实时操作系统
前后
台系统设计
编写应用程序时先顺着一条线画好流程图,然后按照流程图编写
程序。嵌入式应用程序一般是一个无限循环,循环中调用相应的
函数完成相应的操作,这部分操作可以看成是后台行为。
用中断来处理随机事件,这部分可看成是前台行为。
嵌入式实时操作系统
前后
台系统设计
前台称为中断级,后台称为任务级。
后台程序逐个检查每个任务是否具备了运行条件,逐个完成相应
的操作。
时间要求苛刻的操作依靠中断完成。
嵌入式实时操作系统
前后
台系统设计
中断服务程序中置位一个事件发生了的标志,然后退出中断,待
后台程序运行到检查这个标志的时候,才能完成事件处理,再将
事件发生标志复位。
如果在中断服务中加入事件处理程序,则中断服务程序将会变得
太长,影响后来的中断或其他中断。
嵌入式实时操作系统
前后
台系统设计
前后台系统在处理信息的及时性上比实际可以做到的要差,采取
适当的方法,有可能做得更快一些。这个反映及时的指标叫做任
务级响应时间。在最坏的情况下,任务级响应时间取决于整个后
台循环执行的时间,若程序作了修改,循环时间也会影响。此外,
这种单任务程序的另一个缺点是,一旦这条线的任何一处因某种
意外被破坏了,则整个系统就会“死机”。
中断服务程序中置位一个事件发生了的标志,然后退出中断,待
后台程序运行到检查这个标志的时候,才能完成事件处理,再将
事件发生标志复位。
如果在中断服务中加入事件处理程序,则中断服务程序将会变得
太长,影响后来的中断或其他中断。
嵌入式实时操作系统
RTOS 设计
如果 SOC 或嵌入式系统的程序比较复杂,牵涉到进程调度、 I/
O 作业的中断等,就不可避免地要在芯片上安排实时操作系统。
嵌入式实时操作系统
RTOS 设计
一般的实时操作系统容量比较大,不适合嵌入式系统的应用要求,
于是对这样的系统进行裁剪。
嵌入式实时操作系统
RTOS 设计
首先,在嵌入式应用中不需要文件管理的庞大内容,此外内存管
理一般也可省去,这样只剩下 I/O 管理和进程管理。
计算机操作系统经过这样的精简后,剩下的是实时操作系统中最
为重要的内容,即多任务实时调度和任务的定时、同步操作,其
二进制代码仅数千字节,实时性变得更好,这部分内容通常称为
实对内核。
嵌入式实时操作系统
RTOS 设计
在嵌入式系统中,首先运行一个实时内核,然后由这个实时内核
管理应用程序中的各个任务,形成嵌入式实时多任务系统。从这
个意义上说,实时内核就是所谓嵌入式实时操作系统。
RTOS 实行多进程管理,当系统受到强烈的干扰时,可能只是引
起若干进程中的一个被破坏,而另外的进程运行时可对其进行修
复。
嵌入式实时操作系统
RTOS 设计
应用 RTOS 管理,不仅可以将应用程序分解成若干个独立的进
程,而且可以另外启动一个监控程序,监视各进程的运行状况。
这就提高了系统的抗干扰能力。
一个复杂的应用程序,可以分解成多个任务分别调试,设计人员
编制完成各任务的执行程序后,只需将任务的启动条件、优先级
等告诉 RTOS ,即可让 RTOS 专门管理这些任务,大大缩短了
产品的开发周期。
RTOS 设计
实时多任务调度
计算机操作系统中,任务是用户递交给计算机的一顶工作,一个
可以有许多进程,每个进程还可以有多个线程。
实时应用程序的设计过程,是如何把应用问题分割成多个任务,
每个任务都是整个应用的一部分,每个任务被赋予一定的优先级,
有它自已的一套寄存器和堆栈空间。
通常每个任务都是一个无限的循环。每个任务都处于以下 5 种状
态之一。这 5 种状态是:休眠态、就绪态、运行态、等待态和被
中断态。
RTOS 设计
实时多任务调度
一旦 RTOS 内核决定运行另外的任务时,它保留正在运行任务
的当前状态,即 CPU 寄存器中的全部内容。这些内容保存在任
务自己的栈区中,然后把下一个将要运行任务的堆栈中的内容重
新装入到 CPU 的寄存器中,开始下一个任务的运行。这个过程
叫做任务切换。
任务切换过程增加了系统内存的开销。
RTOS 设计
实时多任务调度
常用的实时调度法主要有 3 种:
单调执行率调度法
最早截止优先调度法
时间裕度调度法
而以单调执行率调度最为常用。
RTOS 设计
实时多任务调度
单调执行率调度法事先为每个任务分配一个与事件发生频率成正
比的优先级, RTOS 内核总是调度优先级最高的就绪任务,必
要时将剥夺当前任务的 CPU 使用权,让高优先级的任务运行。
这种调度方法是大部分实时内核所采用的调度方式,被大量实际
应用证明是最优先的。
RTOS 设计
实时多任务调度
在采用单调执行率调度法时,如果有 n 个任务都要满足其硬实时
条件,则必须满足下面的不等式
基于单调执行率调度法,要多任务都满足硬实时条件,所有任务
总的占用 CPU 时间的比例应小于 69.3% 。
RTOS 设计
实时多任务调度
最早截止优先调度法。当一个事件发生时,对应的任务被加到就
绪队列中,该队列按照截止期限排序,截止周期最短的优先权最
高。
信号与信号量就是在多任务内核中为避免任务间的竞争而普遍使
用的方法。
一般应用于以下 3 个方面:
( 1 )控制共享资源的使用权,多任务内核必须保证每个任务在处
理共享数据时的排它性,避免竞争和数据的破坏。
( 2 )标志某事件的发生。
( 3 )使两个任务的行为同步。
RTOS 设计
信号与信号量 (sema
phore)
在多任务内核中,信号是一个信令,任务要运行下去,必须己得
到这个信令。如果信号已被别的任务占用,则该任务只得被挂起,
直到信号被当前使用者释放。
信号是只有“ 0” 、“ 1” 两个值的变量。信号量是计数式的,其
值可以是 0 ~ 255 或 0 ~ 65535 ,这取决于信号量规约机制使
用的是 8 位还是 16 位。由于信号是只取两个值 0 和 1 的量,因
此,也可将其称之为信号量。
RTOS 设计
信号与信号量 (sema
phore)
想要得到信号量的任务执行等待操作,如果该信号量有效(即信
号量值大于 0 ),则信号量值减 1 ,任务得以继续执行;如果信
号量的值为 0 ,等待信号量的任务就被列入等待信号量任务表。
多数内核允许用户定义等待超时,如果等待时间超过了设定值,
该信号量还是无效,则等待信号量的任务就进入就绪态准备运行,
并返回超时等待的出错信息。
RTOS 设计
信号与信号量 (sema
phore)
想要得到信号量的任务执行等待操作,如果该信号量有效(即信
号量值大于 0 ),则信号量值减 1 ,任务得以继续执行;如果信
号量的值为 0 ,等待信号量的任务就被列入等待信号量任务表。
多数内核允许用户定义等待超时,如果等待时间超过了设定值,
该信号量还是无效,则等待信号量的任务就进入就绪态准备运行,
并返回超时等待的出错信息。
RTOS 设计
信号与信号量 (sema
phore)
任务以发信号操作释放信号量。如果没有任务在等待信号量,则
信号量的值仅仅是简单地加 1 ;如果有任务正等待该信号量,那
么就会有一个任务进入就绪态,信号量的值也就不加 1 。于是信
令给了等待信号的诸任务中的一个任务。至于给哪个任务,要看
内核是如何调度的。