📄 00000009.htm
字号:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>嵌入式系统讲义(部分) jacobw </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人: warning (hi), 信区: Embedded <br />标 题: 嵌入式系统讲义(部分) <br />发信站: BBS 水木清华站 (Wed Jul 25 21:58:30 2001) <br /> <br />未经老师同意,自做主张贴上来了,抱歉。 <br />有很多图,没办法贴。 <br /> <br /> <br />一. 嵌入式系统的文化 <br />1.1定义 <br />1、嵌入式系统:指以设备的面目出现的系统。 <br />嵌入式系统大体可以分为: <br />l 通讯类(电信、数据等) <br />l 消费电子类(手机、PDA、机顶盒、数字相机等) <br />l 国防产品、汽车电子、工业控制等等。 <br />2、实时系统:系统必须在一个指定的时间内完成规定的一个处理。该指定时间称 <br />为时间限(time dead line)。 <br />嵌入式系统和实时系统的关系如图1-1所示。有许多嵌入式系统具有实时系统的特 <br />性和要求,但像PAD这样的手持设备中的嵌入式系统并不是实时系统。 <br /> <br />图1-1 嵌入式系统与实时系统的关系 <br /> <br />实时系统按照实时要求的不同可以分为以下几类: <br />l 弱实时系统:秒级 <br />l 准实时系统:毫秒级 <br />l 强实时系统:微秒级 <br />不同的处理器具有不同的性能,对于8位CPU来说,一般可以支持几百~千行程序; <br />对于16位CPU来说,一般可以支持几千行程序;由于实时操作系统对于硬件资源有 <br />较高的要求,所以一般的实时操作系统主要应用在32位处理器上。对于32位的CPU <br />来说,一般可以几万行程序。 <br />1.2 学习方法 <br />学习本课要把握的系统观有: <br />l Top-Down的思想:即从上到下的思想。 <br />l 历史观:即现存各技术都是有其历史渊源,都是为了解决历史上的一系列问题而 <br />逐步形成的,了解相应的历史对于掌握这些技术会有帮助。 <br />1.3 嵌入式系统的现状 <br />目前世界上有以下一些嵌入式产品: <br />VxWorks,pSOSystem:占据70%的市场份额 <br />VRTX、Nuclear、QNX、OS9 <br />WinCE:支持嵌入式非实时系统 <br />国内的主要产品有: <br />DeltaCore:实时嵌入式操作系统 <br />Hopen:女娲。 <br />二、实时系统概览 <br />2.1 实时系统的特点 <br />32位CPU有:X86、PowerPC、68000、ARM、MIPS、I960等系列产品。 <br />嵌入式系统的一大特点是:无软件的自开发能力。它必须在其他的系统上完成软件 <br />的开发任务,然后将软件移植到该系统上。 <br />这里涉及到三个基本概念:宿主机(Host)、目标机(Target)和交叉编译(Cross <br />Compile)。 <br />在嵌入式系统中,用户自己设计的板子通常是没有软件的自开发能力,所以需要一 <br />台通用机来辅助开发,这台通用机可以是PC或工作站,我们称辅助我们软件开发的 <br />通用机为宿主机(Host),用户自己开发的板子,即应用软件最终要运行的机器,为 <br />目标机(Target)。一般目标的CPU为:x86、PowerPC、68000、ARM、MIPS、I960等 <br />。 <br />宿主机上要有一个集成开发环境(IDE)来辅助软件开发,这套集成开发环境可以运 <br />行在Windows95/NT或 UNIX下,它包括交叉编译器(Cross Compiler)和交叉调试器 <br />(Cross Debugger)。在VxWorks中IDE为Tornado。 <br />所谓交叉编译器就是将在宿主机上编写的源代码编译成能够在目标机上运行的机器 <br />码的过程。交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调 <br />试。 <br />在系统安装的时候,集成调试环境和生成嵌入式实时操作系统的原材料(一些obj <br />文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE中包含了实时操作 <br />系统。 <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> 图2-1 宿主机与目标机 <br /> <br />2.2 实时系统核心 <br />实时系统的内核一般采用以下两条准则: <br />1、 微内核。这一特点使得整个操作系统具有很强的灵活性,许多组件 <br />Components可放在微内核的外面,如文件系统和TCP/IP等协议,用户可根据应用系 <br />统的实际要求进行裁减或添加。 <br />2、 对设备不假设。所谓对外设不做假设是指操作系统不假设用户开发的板子上是 <br />否有总线以及有什么样的总线,也不假设内存的大小及内存如何定位,不假设I/O <br />及有多少I/O。举一个对外设假设的例子:DOS就是一个对外设假设的操作系统, <br />DOS系统的移植中,外设必须符合BIOS标准。对外设不做假设的优点就是系统只与 <br />CPU有关,移植性好。由于对外设不做假设,所以IMAGE中就要有板级支持包BSP( <br />即驱动程序)来完成对外设的管理。 <br />实时系统的核心映像Image中通常包含三个层次: <br />1、 应用层。最高层是多任务的应用程序(multe-task application),该层提供实 <br />现各种功能的应用程序; <br />2、 系统层。第二层是操作系统的核心和一些提供服务的模块,该层提供操作系统 <br />核心的服务和各种模块的服务; <br />3、 BSP层。最底层是板集支持包BSP(Board Support Package),该层提供一些与 <br />目标机板集有关的服务。每个硬件厂家在CPU推出之前为各种Evaluation board提 <br />供BSP源程序模板,设备厂家可以根据这些BSP开发自己的My Board。 <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />图2-2 Image的结构 <br />在宿主机上的开发目录下通常有以下几种类型的目录和文件: <br />1、 RTOS原材料目录:这个目录下有一些*.c、*.s、*.obj和*.h文件,这些文件被 <br />编译后形成系统库($syslib)。 <br />2、 为各种EvBoard提供的BSP源程序模板:这里有一些*.c和*.s文件,这些文件将 <br />被编译链接成BSP库($BSPlib)。 <br />3、 一些演示(Demo)文件:这是一些*.c文件,这些文件最终将被编译链接成应用 <br />程序。 <br /> <br />$PSS_ROOT Apps demo#1 <br /> . <br /> . <br /> demo#n <br /> bin <br /> bsps board#1 <br /> . <br /> . <br /> board#n $bsp.lib(obj) <br /> configs /src/ <br /> drivers <br /> include <br /> sys <br /> <br /> /os $syslib(obj) <br /> source file <br /> 图2-3 典型的IDE中RTOS的目录结构 <br />对于系统软件工程师,主要关心第一部分文件的内容:BSP。 <br />对于应用软件工程师,主要关心第三部分文件的内容:应用系统。 <br />对于商品操作系统提供商,主要关心第二部分文件的内容:RTOS本身。 <br />2.3 Image各部分的详细介绍 <br />一、OS Kernel <br />1、功能组成:多任务的管理和调度、任务之间的同步与通信的管理、动态内存的 <br />分配与释放、软时钟的管理和驱动程序管理。 <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />图2-4 RTOS的组成 <br />2、系统的实时性 <br />这里要介绍两个概念: <br />上下文切换Context Switch时间Tc:它是指一个任务切换到另一个任务所需要的时 <br />间; <br />系统调用system Call时间Ts:它是指一个任务开始系统调用到调用结束的时间。 <br />Tc和Ts都具有原子性,也就是说,上下文切换和系统调用都是不可分割操作。我们 <br />对这两个时间的要求是尽可能的短,而且希望它们是可确定的常量。所谓可确定是 <br />指tc和ts有一个上限,而不是一个统计的结果,即不会出现峰值,不会随系统任务 <br />的增多而增多。 <br />实时操作系统的Tc和Ts一般在都在微秒级,而非实时的UNIX在毫秒级。 <br />Tak1 Task <br /> <br /> Task2 system call <br /> tc ts <br /> 图2-5 tc与ts示意图 <br />3、统一的API <br />保证应用程序的可重用性。可以从两个角度来理解,即对于RTOS支持的不同的CPU <br />、RTOS的不同版本,API都是一样的。 <br />一般RTOS的API就是系统调用System Call,System Call是服务原语,是不可打断 <br />的,采用的是trap机制,这样可以保证系统调用的时间尽量小、尽量是常量和可确 <br />定。举例:DOS的API是INT21,UNIX的API是System Call。 <br /> <br />二、模块(Components) <br />模块分为两类: <br />l 通用模块:TCP/IP、文件系统、标准C库、调试代理(Debug Agent)等。 <br />l 专用模块:图形图象、浏览器、Java虚拟机、WAP协议等。 <br /> <br />三、BSP部分 <br />(见下一课) <br /> <br /> <br />-- <br />凉风有幸 秋月无边 <br /> 亏我思娇的情绪好比度日如年 <br /> 虽然我不是玉树临风 风流倜傥 <br /> 但我有广阔的胸襟和强劲的臂弯~~~~~~~ <br /> <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.68.9.136] <br /><a href="00000008.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一页</a><a href="index.htm">回到目录</a><a href="#top">回到页首</a><a href="00000010.htm">下一篇</a></h1></center><center><h1>BBS 水木清华站∶精华区</h1></center></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -