Embedded 版 (精华区)

发信人: he (无情的雨), 信区: Embeded_system
标  题: 嵌入式系统以及如何构造一个嵌入式系统概览-4(转载)
发信站: 哈工大紫丁香 (2001年05月16日13:34:01 星期三), 转信

嵌入式系统--定义

一种观点认为: 如果某种应用没有用户界面,从而,用户不能直接地和它交互,那么它就是
嵌入式系统.这当然太过简单化了.电梯控制系统是嵌入式系统,但却有一个用户界面: 选
择楼层的按钮和显示电梯正到达几层的指示器. 对于那些连入网络的嵌入式系统,如果该
系统包含一个用于监视和控制的web服务器,界面上的区别就更显模糊了.一个较好的定义
应强调在该系统的重要功能或主要用途上.

由于Linux可以提供一个用以执行嵌入功能的基本内核以及各种你想要的用户界面元素,
所以Linux有很强的通用特点.它能处理嵌入性任务和有关用户界面两方面的作业.可以把
Linux看作如下的一个连续体:
从一个只有内存管理,任务调度,定时器服务的缩简的微内核到一个支持各种文件系统和
多种网络服务的完整服务器.

一个最小的嵌入式系统仅需如下基本组成部分:
1 : 一个用作引导的可用设施(工具);
2 : 一个具备内存管理,进程管理,和定时器服务的Linux微内核;
3 : 一个初始进程;

为让上面的最小嵌入式系统变得有一定实用性,尚需加上一些东西:
1 : 硬件的驱动程序;
2 : 一个或几个应用进程以提供必要的应用功效.

随着对系统要求的增加,也许还要用到下面这些组件:
1 : 一个文件系统(或许放在ROM或RAM中);
2 : TCP/IP 网络协议栈;
3 : 一个磁盘用来存放半易失性数据和提供交换能力.

硬件平台

挑选最好的硬件是一项很复杂的工作,充满着各种顾忌和干扰:公司的政策,各种成(偏)见
,其它工程的影响以及缺乏完整或准确的信息.

成本经常是一个关键性因素.当你着眼成本时,一定要考虑产品的整体成本,而不要只看到
CPU;有时一个快速而廉价的CPU可能成了这个产品的耗价的问题根源,一旦当你加上总线
和延迟逻辑以便同你的各种外设协同工作的时候.如果你是一个仅管听命的软件员,那么
你就只能对早已作好的决定撞运气了,如果你是系统的设计者,就需要尽力制订一个合理
的预算并且所选用的硬件要能令你满意地处理实时任务.

从实际中观察CPU到底需要多快方能把工作做好,然后把这个速度乘3(才是系统将所要的
CPU速度);因为CPU在理论上所能达到的能力到了现实中总是难以置信地大打折扣!不要忘
记缓存对你的系统的影响.

也要计算出总线需要运行多快,如果有二级总线(像一条PCI总线那样),也要把它们包含进
来;一条慢的或过多参与DMA传输的总线能够让一个快速的CPU变成在爬行.

有集成外设的CPU很不错,因为很少有硬件需要调试.而且,为支持主流CPU,它们的驱动程
序经常是可用的.不过在我以往的工程中,这些芯片对外设的组合好象总是不合理或者缺
少我们期望的性能(功能);同样,正因为这些外设被集成在一起,所以不要设想这会是一个
最低价的(硬件平台)方案.

把10磅的Linux塞进5磅的口袋

对Linux的一个通常观点是,它由于太大而不宜用作嵌入式系统.这种观点不一定是真实的
.面向PC机的Linux典型发布版有很多你根本用不上的功能特征甚至也超过了一个真正PC
用户的需求.

首先,我们要把内核和各种任务分开来.标准的Linux内核总是长驻内存的.每一个要运行
的应用程序需要从磁盘中装载到内存中,并在那里被执行.当该程序运行结束,它占用的内
存被释放掉,也就是说,该程序被卸载掉.在一个嵌入式系统中,可能不存在一个磁盘.因系
统的复杂程度和硬件的不同设计,有两种方法可用以摆脱对一个磁盘的依赖性.在一个简
单的系统中,当系统启动后,内核和各种应用进程均驻留在内存中--这是大多数传统嵌入
式系统的工作方式.Linux也支持这种方式.

使用Linux, 出现了另外一种方式.既然Linux有装载和卸载程序的能力,一个嵌入式系统
可以利用这一点以节省RAM.考虑一个比较典型的系统:有大约8兆到16兆的闪存和8兆RAM
;那么闪存可以被用作文件系统.用闪存驱动程序作为从闪存到文件系统的界面.作为一种
选择,也可以用一个闪存磁盘.这是用闪存来摆脱系统对一个磁盘的需求(依赖).使用这种
方式的一个例子是M-System(http://www.m-systems.com/)中的DiskOnChip技术,它可以
支持160MB.所有应用程序以文件的形式被存放在闪存文件系统中并在必要的时候被装载
到内存中;这种"用到时才装载"的能力是一个很强大的特征,从而可以很容易地具有(支持
)以下各种能力:

1: 允许系统启动后抛弃(释放)那些初始化代码(空间).典型地,Linux用到很多运行在内
核外部的工具性程序(utilities).它们通常仅在系统初始化期间运行一次,以后将再也用
不到.而且,它们以互斥的方式,一个接一个地依序运行.这样,随着系统的启动,一段内存
可以被反复地使用:"以页调入"的方式运载每一个程序.这可以很好地节省内存,特别是处
理像网络栈那样的对象时,因为这些对象一经配置便永不更变.

2: 如果Linux之支持可动态装卸模块的特征被包含在内核之中,不仅各种应用程序,驱动
程序也可被动态装卸.这样,系统能够检查硬件环境并有选择性地仅仅装载那些适应当前
硬件环境的软件.这可以取消(降低)让一个程序以占用更多闪存的代价处理众多硬件变数
的复杂性.

3: 系统的升级更加标准化(模块化),你可以常常在系统运行过程中升级一些应用和驱动
程序.

4: 配置信息和运行时间参数可作为数据文件存放在闪存中.

--

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.250]
--
※ 修改:·he 於 05月16日13:42:55  修改本文·[FROM: 202.118.235.250]
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: 202.118.235.250]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.250毫秒