ES体系结构的研究及其应用ES 内嵌式存储系统(embedded storage)(5)

2019-09-01 08:37

周全 ES体系结构的研究及其应用

第三章 嵌入式系统软件

3.1 软件的作用

软件是计算机系统的灵魂,是嵌入式系统中最重要的部分,硬件结构有章可循,而软件则千差万别。软件设计的优劣直接影响系统的功能和性能。嵌入式系统软件可以分成3个层次:固件、操作系统和应用软件。一些简单的系统,实现上可能没有细分成这3个层次,但是,肯定实现了这三个层次的不同的功能。

3.2 固件

3.2.1 固件的定义和功能

固件(Firmware)是指固化的软件,一般存放在非易失性存储器芯片中。这通常是运行在硬件上的底层软件,它必须具有以下功能: ⑴ 识别并初始化处理器 ⑵ 识别并初始化系统内存 ⑶ 识别并初始化所用总线(例如,PCI或者PCMCIA) ⑷ 初始化系统所用的设备,例如串行设备 ⑸ 初始化和处理中断子系统

简单嵌入式系统的固件即为监控程序和应用程序的整合,其核心主程序循环为键盘扫描程序和显示器更新程序以及中心功能程序。

传统上,最典型的固件是IBM-PC主板上的BIOS。BIOS的功能和上面的5点功能相似。Award和AMI是著名的固件供应商,全世界绝大部分的PC主板上都安装了这两家公司提供的固件。IEEE std 1275-1995 Standard for Boot (Initialization Configuration) [97]是一个Firmware的标准。Open Firmware是它的实现,是一个处理器和系统独立的引导固件。

正如IEEE std 1275定义的一样,经过不断的发展,固件(Firmware)的含义从最初的固化到硬件中的软件发展成为固化到硬件中的用于初始化系统并且提供一定功能的底层软件。

在嵌入式系统开发领域,固件除了初始化系统、引导操作系统的功能以外,还具有调试代理(Debug Agent)和下载程序(Flash Downloader)的功能。本文以下提到的的固件,都特指具有这些功能的底层软件,而不是固件最初的含义。

固件和操作系统或者应用程序究竟有什么区别呢?很多情况下,没有区别。操作系统或者独立的应用程序也必须初始化处理器、内存和系统中的接口器件。它必须包含设备驱动程序和中断处理子程序。

操作系统和固件的主要区别是操作系统更加复杂(难于理解)并且更加昂贵(他们包含更多的功能)。而对固件往往有以下要求: ① 尽可能地简单并且易于理解 ② 尽可能地操作系统中立 ③ 作为开发者的例子软件 ④ 可重用

21

扬州大学硕士学位论文

⑤ 一个可以重用的、可靠的代码库

3.2.2 一个固件范例——μHAL

ARM公司ADS 1.2套件中提供了μHAL固件模块,μHAL具有以下特点:

(1) 包含分离的处理器代码,这使它可以在不同的ARM处理器运行相同的软件; (2) 板子相关的代码被很好的分开。这使得它相对的简单和容易移植到新的平台; (3) 包含系统启动代码; (4) 范围和功能简单;

(5) 包含MMU和MPU代码,这些常常是ARM处理器最难于理解的代码; (6) 包含一个简单的中断处理系统;

(7) 支持最基本的设备(LEDs、timers和serial ports)。这些是第一次打开电源时需要的设备;

(8) 将运行在独立的板子上,或者作为semi-hosted应用。开发和调试基于μHAL的应用更加简单。

μHAL基本上是一个板子和处理器独立的应用编程接口。这个接口是一个ARM标准。

3.3 高层软件

上面介绍了底层软件——固件。这里的高层软件指固件以上的软件,即操作系统和应用软件。正如上面所说,固件和操作系统并没有明显的界限。固件、操作系统和应用软件都以二进制代码的形式存在于系统中,之所以具有不同的名字是因为它们的功能划分。固件直接与硬件接触,屏蔽处理器的差别,支持基本的处理器操作;操作系统提供更复杂、更高层次的功能;应用软件实现系统的功能需求。

在一个简单系统中,可能仅有几行处理器初始化代码和一个应用软件。这里的应用软件完成了固件和应用软件的功能。在一个复杂的系统中,层次分明,每一层使用下层提供的服务,并为上层提供服务。

3.3.1 软件库

软件库是经过验证的实现一定功能的软件集合。通常以二进制代码形式存在,提供函数声明头文件。也有以源代码形式存在的软件库。

软件库既不属于操作系统,也不属于应用软件,更不是固件。不过,它在实际工程的开发中是举足轻重的。有效的利用这些库,可以提高开发效率和代码质量(运行效率和源代码可读性)。

1. 开发系统提供的软件库

商业的IDE开发环境,集成了编译器、链接器、调试器、软件仿真器,还包含了软件库。这些软件库提供C语言支持库。这种库函数是函数的集合,提供常用的字符串操作等等功能。

2. 操作系统提供的软件库

Linux操作系统开发环境提供GLIBC库,是比较成熟的C语言支持库。这种库函数,是操作系统系统调用的包裹(wapper)。例如,库函数提供打开文件read()的操作,而这

22

周全 ES体系结构的研究及其应用

个函数实质上是通过int 80指令,引起一个软中断,将CPU切换到“内核态”,执行系统调用的服务程序。

3. 自定义软件库

有经验的工程师,往往有自己归纳、积累的软件模块。这些软件模块,针对某一个特殊的对象,通过归纳整理,可以组建成自定义的软件库。开发新项目时,可以方便的进行代码复用,大大提高效率。

3.3.2 操作系统 3.3.2.1 操作系统的分类

1. 内核服务运行的位置:单一内核操作系统和微内核操作系统 2. 操作系统应用领域:专用操作系统和通用操作系统 3. 产权模式:商业操作系统和非商业操作系统

3.3.2.2 单一内核操作系统

单一内核操作系统的系统调用运行在内核地址空间,实现容易,而且性能好。早期的操作系统大多是单一内核的操作系统。典型的单一内核操作系统有:

1. 绝大部分Unix操作系统版本:AIX、HP-UX、IRIX、SCO、Solaris、VMS、BSD、FreeBSD、NetBSD、OpenBSD、Linux

2. Windows操作系统早期版本:Windows 3.x,Windows 95/98/Me 3. 嵌入式操作系统:VxWorks、LynxOS、PalmOS

4. 其他操作系统:Apple II OS、Mac OS、OS-2、OS-9、RISC OS、NetWare

3.3.2.3 微内核操作系统

微内核操作系统的概念是上个世纪80年代提出的。以CMU Mach为代表的微内核经过不断的发展到现在,微内核技术已经成熟。典型的微内核实时操作系统QNX,被用于许多硬实时场合。

通用的操作系统Windows 2000/XP和Max OS X都宣称自己是微内核操作系统。这些操作系统未必是严格意义上的微内核操作系统,但是系统结构上与微内核操作系统趋同。操作系统设计者总是在灵活性、可靠性和性能上在微内核和单一内核操作系统之间权衡。目前,微内核操作系统有:

⑴ Unix操作系统:MINIX、Open BeOS、QNX、RT Mach、 NTT Unix、VSTa、GNU、Hurd2K

⑵ Windows操作系统:Windows 2000/NT/XP ⑶ 嵌入式操作系统:BeOS、Nucleus

⑷ 其他操作系统:Amoeba、L4、Mac OS X Mach 微内核操作系统将驱动程序放在用户进程空间,添加新的外围设备支持驱动程序就是运行该驱动程序的进程。这种灵活性,符合嵌入式系统经常需要支持新设备的要求。微内核操作系统天生适合于嵌入式系统,微内核系统必定会在嵌入式系统中得到广泛的应用。

23

扬州大学硕士学位论文

3.3.2.4 操作系统与实时操作系统

操作系统是一种便于使用计算机资源的系统软件。操作系统是硬件层上面的虚拟计算机,它封装了硬件的计算能力。

应用程序可以方便的利用这种封装提供的接口,在操作系统层上,应用程序不再需要(能够)调用CPU指令集定义的指令,而是调用由这些指令构成的具有一定功能的指令序列(routine),例如,open(),close(),??。诸如,open、close、seek等等操作系统提供的函数,被称为系统调用(system call)。

1. 实时系统

实时系统的定义是:Any system a timely response by the computer to external stimuli is vital is real-time. [10]这个定义更加详细的解释是“能够在限定的时间内执行完成所规定的功能,并能够在限定的时间内对外部的异步事件做出响应”。实时有软实时(soft real-time)和硬实时(hard real-time)两种。软实时指可以容忍偶尔出现的超过限定时间的响应;硬实时指必须对每一次异步响应要在限定的时间内完成。

2. 实时操作系统

实时操作系统(RTOS-Real Time Operating System)是指具有实时性能支持实时控制系统工作的操作系统。实时多任务操作系统是根据操作系统的工作特性而言的。

实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。 PC机的用户等待编译结果,不会有灾难性后果;飞机控制系统1秒钟的延误就决定生死。

实时操作系统需要快速的响应时间和尽可能短的关中断时间。例如,在同样的硬件平台上,实时操作系统QNX的中断响应时间是10几个微秒,而Linux上是几个毫秒。两种操作系统的差别是非常大的。

另一个衡量操作系统实时性的指标是可以支持的最大中断频率。最大可支持中断频率(Maximum Sustainable Interrupt Frequency)是指对于同样的外部中断,系统每一秒钟最多可以处理的次数。次数越多,说明系统处理能力越强。以QNX Neutrino v6.2[13,22,23]和ELDS v1.1[96]为例,最大可支持中断频率是9μs和60μs[96]。QNX Neutrino v6.2是QNX公司最新的内核,参见3.3.2.7 内核;ELDS是Redhat Embedded Linux,使用Linux kernel 2.4.5。

3. 实时操作系统中的关于时间的重要概念 ⑴ 系统响应时间(System response time ):这是指系统发出处理要求到系统给出应答信号的时间。

⑵ 任务切换时间(Context-switching time):这是指任务之间切换所需要的时间。

⑶ 中断延迟(Interrupt latency ):这是指计算机接收到中断信号到操作系统作出响应,并完成切换转入中断服务程序的时间。

4. 响应时间

响应时间是从任务请求的产生到任务的完成之间的时间间隔,需要满足一定的时间约束。控制要满足一定的实时性要求,就是响应时间小于临界时间。

响应时间由两个方面组成:反应时间和处理时间。对应于计算控制的实时系统,反应时间指外部中断提交到CPU开始处理的时间,处理时间指从CPU完成处理的时间。

提高系统的响应时间,可以从缩短反应时间和处理时间两个方面入手。反应时间是电信号的传导时间,对于不同速度的处理器,这个时间相差不大。

5. 实时操作系统的显著特点

通用操作系统注重平均表现性能,不注重个体表现性能。如对于整个系统来说,注重

24

周全 ES体系结构的研究及其应用

所有任务的平均响应时间而不关心单个任务的响应时间,对于某个单个任务来说,注重每次执行的平均响应时间而不关心某次特定执行的响应时间。由此可见,这种注重平均表现,即统计型表现特性的设计原则的影响是十分深远的。

而对于实时操作系统,它除了要满足应用的功能需求以外,更重要的是还要满足应用提出的实时性要求。而组成一个应用的众多实时任务对于实时性的要求是各不相同的,此外实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等,这就为系统实时性的保证带来了很大的困难。

因此,实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求,也就是说,实时操作系统注重的是个体表现,更准确地讲是个体最坏情况的表现。

由于实时操作系统与通用操作系统的基本设计原则差别很大,因此在很多资源调度策略的选择上以及操作系统实现的方法上两者都具有较大的差异,这些差异主要体现在以下几点:

(1) 任务调度策略

通用操作系统中的任务调度策略一般采用基于优先级(Priority-based)的、抢先式(Preemptable)调度策略。对于优先级相同的进程则采用时间片轮转(Round-robin)调度方式。用户进程可以通过系统调用动态地调整自己的优先级,操作系统也可根据情况调整某些进程的优先级。

实时操作系统中的任务调度策略目前使用最广泛的主要可分为两种,一种是静态表驱动方式,另一种是固定优先级抢先式调度方式。

① 静态表驱动方式是指在系统运行前工程师根据各任务的实时要求用手工的方式或在辅助工具的帮助下生成一张任务的运行时间表,这张时间表与列车的运行时刻表类似,指明了各任务的起始运行时间以及运行长度,运行时间表一旦生成就不再变化了,在运行时调度器只需根据这张表在指定的时刻启动相应的任务即可。静态表驱动方式的主要优点是:

·运行时间表是在系统运行前生成的,因此可以采用较复杂的搜索算法找到较优的调度方案;

·运行时调度器开销较小;

·系统具有非常好的可预测性,实时性验证也比较方便;

由于具有非常好的可预测性,这种方式主要用于航空航天、军事等对系统的实时性要求十分严格的领域。

这种方式主要缺点是不灵活,需求一旦发生变化,就要重新生成整个运行时间表。 ② 固定优先级抢先式调度方式则与通用操作系统中采用的基于优先级的调度方式基本类似,但在固定优先级抢先式调度方式中,进程的优先级是固定不变的,并且该优先级是在运行前通过某种优先级分配策略(如Rate-Monotonic、Deadline-Monotonic等)来指定的。这种方式的优缺点与静态表驱动方式的优缺点正好完全相反,它主要应用于一些较简单、较独立的嵌入式系统,但随着调度理论的不断成熟和完善,这种方式也会逐渐在一些对实时性要求十分严格的领域中得到应用。目前市场上大部分的实时操作系统采用的都是这种调度方式。

(2) 内存管理

为解决虚存给系统带来的不可预测性,实时操作系统一般采用如下两种方式:

25


ES体系结构的研究及其应用ES 内嵌式存储系统(embedded storage)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019年中考英语语法专题讲练: 被动语态 讲解附练习(含解析)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: