发表于:2007-04-13 18:03:00
楼主
Phar Lap ETS™ – 工业强度的实时操作系统
技术白皮书
美国Ardence公司
北京航天捷越科技有限公司
摘要
在以前,嵌入式系统开发者不得不分别以很高的价格获得开发工具和调试工具,但效果却不是很理想。现在随着Phar Lap Embedded ToolSuite (ETS) 的推出,开发者以合理的价格获得了一个功能非常齐全的实时操作系统。这个开发工具可以为32位X86架构的硬件提供创建多线程实时嵌入式系统和应用程序的所有组件。开发包的核心组件是实时ETS内核,它是一个功能丰富的实时操作系统,包括可靠的网络支持,实时GUI,防止优先级倒置设置,强大的事件日志系统和多介质引导功能(软盘、IDE硬盘、PC卡ATA驱动器,M-Systems的Flash盘和ROM)。实时ETS内核是可裁减的,你可以只选择你所需要的组件,这样可以生成一个小尺寸的、高效、易于使用的、具有工业强度的实时操作系统。
简介
基于32位X86架构的PC机市场已经实现了标准化,市场非常成熟。这使PC架构的平台成为嵌入式系统开发的一个明显而有吸引力的解决方案,采用X86架构具有如下优点:
 32位X86架构的PC家族的性价比优势
 廉价的、工业标准的编译器和其他成熟的运行在Windows平台的第3方开发工具
 标准的应用程序编程接口(API),例如Win32下的支持多线程、多任务、确定优先级和WinSock(为TCP/IP协议栈提供标准接口)功能的API函数
 大量价格合适的专为嵌入式系统设计的32位X86板卡
因此,使用ETS(Embedded ToolSuite)创建你的嵌入式应用程序比使用其它多个提供商的工具更能减少你的开销。这个开发工具本身比它的竞争者价格低廉,并且它支持Windows编译器,比其他嵌入式系统专有的编译器花费更少。
使用标准的Windows 工具开发嵌入式软件是ETS的几个最大优势之一。例如你可以使用十分熟悉的Visual Studio C/C++编译器创建嵌入式应用程序,并且可以用它来进行应用程序的调试。ETS StudioExpress 插件让你使用Visual Studio 集成调试环境(IDE)的所有功能,包括自动编译更改过的源代码以生成ETS应用程序。
ETS开发工具包主要包括以下模块:
 实时ETS操作系统。支持C/C++运行库和Win32 API的子集
 实时线程管理器。实时线程管理器具有以下优点:
 支持确定性的多线程嵌入式应用程序,包括可靠的避免优先级倒置的处理
 支持优先级的调度
 支持具有可变时间片的轮讯调度
 PEG图形支持包。一个支持所有图形特征的实时GUI,它是一个小型的、快速并且易于在实际任何支持图形输出的硬件上配置出图形
 网络支持包。包括内置支持WinSock 1.1编程接口的TCP/IP协议栈;支持多种以太网和PPP/SLIP 串行连接;支持现有绝大多数10、100和1000M以太网卡驱动。
 文件系统支持包。支持兼容MS-DOS的文件系统,支持FAT12、 FAT16、和FAT32格式,并且支持广泛的磁盘类型,包括IDE(CHS和LBA格式)、软盘、PC 卡ATA (转动的和flash介质)、M-Systems的文件系统。
 嵌入式StudioExpress。嵌入到Microsoft Visual Studio上的一个插件,用来开发和调试嵌入式应用程序
 动态链接库加载器(DLL)
 浮点仿真库。为没有浮点协处理器支持的平台提供浮点仿真库
 ETS PC卡支持包。支持PC 卡ATA磁盘、以太网适配器、串口和modem
 LinkLoc。一个32位的链接/定位器
 Visual System Builder。一个用来配置ETS 内核、应用程序和创建ETS Visual Studio工程及工作区的工具
 制作系统引导的工具(软驱、IDE硬盘、PC卡ATA或 M-System flash)。可以直接从ROM中引导(作为一个BIOS扩展)或者从DOS引导。
 通俗易懂的在线用户文档。提供深入浅出的入门指导和对实时系统编程问题的深入探究
实时ETS内核
除了提供通用操作系统的很多特性外,实时ETS内核在设计上就是针对嵌入式实时操作系统的。作为一个嵌入式RTOS,它具有针对嵌入式计算机应用程序的额外特性:
 实时ETS内核是可裁减的。可以根据你的需要你的系统中包括哪些组件。如果应用程序不需要操作系统支持某种特性,可以将其排除,以减少实时ETS内核的内存占用
 实时ETS内核能够保证应用程序的实时响应
 实时ETS内核提供许多额外的API以处理中断向量、事件日志、配置系统、输出状态信息和调试实时应用程序
 实时ETS内核只运行在物理内存中。为了保证实时响应,它不提供请求分页的虚拟内存。嵌入式应用程序开发必须考虑到这点。特别是一个嵌入式应用程序不能无限制的分配内存,必须使用固定大小的栈。
 实时ETS内核可以为非标准硬件定制。所有与硬件相关的模块都提供源代码,并且可以按照你的需要进行替换和修改。
实时ETS内核被分为两个部分:ETS监视器(ETS Monitor)和开发应用程序的ETS支持库。
 ETS支持库包括Win32 API,C/C++ 运行支持库,并且也包含实时ETS内核的可选组件的支持库
 ETS监视器负责同开发机的通讯、程序下载或卸载磁盘、以及系统硬件初始化和切换处理器到保护模式的转换和应用程序的加载。
实时ETS内核是一个用于运行嵌入式程序的简单紧凑的RTOS(可以小到97 Kb)。ETS监视器初始化系统为32位保护模式,ETS支持库为C/C++ 运行库提供支持,这使得开发嵌入式系统的程序就像开发Windows控制台程序一样简单。
ETS监视器包括一个可选的主机通讯模块,允许嵌入式系统与运行Windows的PC主机通讯。可以使用熟悉的Windows工具开发嵌入式应用程序,然后通过连到目标机的电缆下载编译和链接好了的程序。目标机上的实时ETS内核会加载刚刚下载完毕的程序,并且在目标机上的程序调试,可以与运行在主机上的Visual Studio调试器同步。
在应用程序被加载前,监视器执行低优先级的任务,设置一个保护模式下的运行环境。一旦应用程序运行, ETS库将提供应用程序序要的底层支持。仅仅不支持的是那种在嵌入式系统上不可调用的函数。
为了兼容今天市场上广泛采用的目标系统,ETS监视器和实时ETS内核库都包括了相关的硬件支持模块,提供与嵌入式硬件的接口。这些模块以源代码的形式提供。
实时ETS内核包含了一些可定制和配置的选项。实现这种架构的其中一个目的就是为了最小化内存占用,提高嵌入式系统性能。嵌入式的应用程序只加载在实际运行中使用的内核组件,以减小系统额外的开销。下表总结了不同实时ETS内核组件的内存要求。
使用内存 ROM(代码) RAM(数据)
基本ETS内核 Min Max Min Max
ETS监控器 17k 33k 13k 25k
ETS内核库 33k 60k 13k 18k
总体 50k 93k 26k 43k
使用内存 ROM(代码) RAM(数据)
多线程支持 28k 6k
结构异常支持 3k <1k
浮点仿真 23k <1k
本地FAT文件系统 64k 28k + 100k
DLL装载器 15k 8k
PC卡支持 32k 16k
M-Systems Flash支持 30k 6k
TCP/IP栈 100k 100k (2)
SLIP/PPP驱动 20k 7k
Ethernet驱动 4k – 11k 2k – 70k
GUI (PEG) 230