标题：ARM嵌入式
ARM嵌入式简介
企业简介ARM是微处理器行业的一家知名企业，设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域，比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
1991 年 ARM 公司成立于英国剑桥，主要出售芯片设计技术的授权。目前，采用 ARM技术知识产权（ IP ）核的微处理器，即我们通常所说的 ARM 微处理器，已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场，基于 ARM 技术的微处理器应用约占据了 32 位 RISC 微处理器 75 %以上的市场份额， ARM 技术正在逐步渗入到我们生活的各个方面。
ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司，作为知识产权供应商，本身不直接从事芯片生产，靠转让设计许可由合作公司生产各具特色的芯片，世界各大半导体生产商从ARM公司购买其设计的 ARM 微处理器核，根据各自不同的应用领域，加入适当的外围电路，从而形成自己的 ARM 微处理器芯片。目前，全世界有几十家大的半导体公司都使用 ARM 公司的授权，因此既使得 ARM 技术获得更多的第三方工具、制造、软件的支持，又使整个系统成本降低，使产品更容易进入市场被消费者所接受，更具有竞争力。处理器介绍ARM处理器的三大特点是：耗电少功能强、16位/32位双指令集和众多合作伙伴。
根据IEEE（国际电机工程师协会）的定义，嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”（原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants）。这主要是从应用上加以定义的，从中可以看出嵌入式系统是软件和硬件的综合体，还可以涵盖机械等附属装置。嵌入式系统的核心是嵌入式微处理器。
今天嵌入式系统带来的工业年产值已超过了1万亿美元，1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出，未来5年仅基于嵌入式计算机系统的全数字电视产品，就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称，“福特出售的‘计算能力’已超过了IBM”，由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上，基于RTOS的Embedded Internet成为一个技术新热点。在国内，“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬，机顶盒、信息家电这两年更成了IT热点，而实际上这些都是嵌入式系统在特定环境下的一个特定应用。据调查，目前国际上已有两百多种嵌入式操作系统，而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。在国内，虽然嵌入式应用、开发很广，但该领域却几乎还是空白，只有三两家公司和极少数人员在从事这方面工作。由此可见，嵌入式系统技术发展的空间真是无比广大。
用ARM处理器做的嵌入式系统更是前途广阔，接下来就简介开发工具、操作系统等研发设计及制造的公司或组织。
开发工具
ARM应用软件的开发工具根据功能的不同，分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等，目前世界上约有四十多家公司提供以上不同类别的产品。
用户选用ARM处理器开发嵌入式系统时，选择合适的开发工具可以加快开发进度，节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境（IDE）一般来说是必不可少的，至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。
使用集成开发环境开发基于ARM的应用软件，包括编辑、编译、汇编、链接等工作全部在PC机上即可完成，调试工作则需要配合其他的模块或产品方可完成（一） ARM SDTARM SDT的英文全称是ARM Software Development Kit ，是ARM公司(为方便用户在ARM芯片上进行应用软件开发而推出的一整套集成开发工具。ARM SDT经过ARM公司逐年的维护和更新，目前的最新版本是2.5.2，但从版本2.5.1开始，ARM公司宣布推出一套新的集成开发工具ARM ADS 1.0，取ARM SDT而代之，今后将不会再看到ARM SDT的新版本。
ARM SDT由于价格适中，同时经过长期的推广和普及，目前拥有最广泛的ARM软件开发用户群体，也被相当多的ARM公司的第三方开发工具合作伙伴集成在自己的产品中，比如美国EPI公司的JEENI仿真器。
ARM SDT（以下关于ARM SDT的描述均是以版本 2.50为对象）可在Windows95、98、NT以及Solaris 2.5/2.6、HP-UX 10上运行，支持最高到ARM9(含ARM9）的所有ARM处理器芯片的开发，包括StrongARM。
ARM SDT包括一套完整的应用软件开发工具：
*armcc ARM的C编译器，具有优化功能，兼容于ANSI C。
*tcc THUMB的C编译器，同样具有优化功能，兼容于ANSI C。
*armasm 支持ARM和THUMB的汇编器。
*armlink ARM连接器，连接一个和多个目标文件，最终生成ELF格式的可执行映像文件。
*armsd ARM和THUMB的符号调试器。
以上工具为命令行开发工具，均被集成在SDT的两个Windows开发工具ADW和APM中，用户无需直接使用命令行工具。
*APM Application Project Manageer，ARM工程管理器，完全图形界面，负责管理源文件，完成编辑、编译、链接并最终生成可执行映像文件等功能。（二） ADSADS（ARM Developer Suite），是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。ADS 是全套的实时开发软件工具，包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM 结构应用。ADS包括三种调试器ARMeXtended Debugger， AXD 向下兼容的ARMDebugger for Windows/ARM Debugger forUNIX 和ARM 符号调试器。其中AXD 不仅拥有低版本ARM调试器的所有功能，还新添了图形用户界面，更方便的视窗管理数据显示，格式化和编辑以及全套的命令行界面。该产品还包括RealMonitor™（可以在前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具）。
ADS对汇编、C/C++、java支持的均很好，是目前最成熟的ARM开发工具。很多ARM开发软件（例如Keil）也是借用的ADS的编译器。ADS在2006年版本已经发布到2.2。但国内大部分开发者使用的均是1.2版本。（三） RealView MDKRealView MDK开发工具源自德国Keil公司，被全球超过10万的嵌入式开发工程师验证和使用，是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术，包括&micro;Vision3集成开发环境与 RealView编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器，自动配置启动代码，集成Flash烧写模块，强大的Simulation设备模拟，性能分析等功能，与ARM之前的工具包ADS等相比，RealView编译器的最新版本可将性能改善超过20% 
RealView MDK的突出特性:
菜鸟的阿拉伯飞毯 —— 启动代码生成向导，自动引导，一日千里 
启动代码和系统硬件结合紧密，必须用汇编语言编写，因而成为许多工程师难以跨越多门槛。RealView MDK的&micro;Vision3工具可以帮您自动生成完善的启动代码，并提供图形化的窗口，随您轻松修改。无论对于初学者还是有经验的开发工程师，都能大大节省时间，提高开发效率。。
高手的无剑胜有剑 —— 软件模拟器，完全脱离硬件的软件开发过程 
RealView MDK的设备模拟器可以仿真整个目标硬件，包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试，使软硬件开发同步进行，大大缩短开发周期。而一般的ARM开发工具仅提供指令集模拟器，只能支持ARM内核模拟调试。
专家的哈雷望远镜 —— 性能分析器，看得更远、看得更细、看得更清
RealView MDK的性能分析器好比哈雷望远镜，让您看得更远和更准，它辅助您查看代码覆盖情况，程序运行时间，函数调用次数等高端控制功能，指导您轻松的进行代码优化，成为嵌入式开发高手。通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。
业界最优秀的编译器——RealView 编译器，代码更小，性能更高
RealView MDK的RealView编译器与ADS 1.2比较：
代码密度：比ADS 1.2编译的代码尺寸小10%；
代码性能：比ADS 1.2编译的代码性能高20%。
配备ULINK2仿真器+ Flash编程模块，轻松实现Flash烧写
RealView MDK无需寻求第三方编程软件与硬件支持，通过配套的ULINK2仿真器与Flash编程工具，轻松实现CPU片内FLASH、外扩FLASH烧写，并支持用户自行添加FLASH编程算法；而且能支持FLASH整片删除、扇区删除、编程前自动删除以及编程后自动校验等功能，轻松方便。
绝对的高性价比——国际品质，本土价格
RealView MDK中国版保留了RealView MDK国际版的所有卓越性能，而产品价格和国内普通开发工具的价格差不多 ；另外我们还根据不同需求，专门定制了4个版本，以满足工程师们不同的需要。这绝对是您选择开发工具的首选。
更贴身的服务——专业的本地化的技术支持和服务
RealView MDK中国版用户将享受到专业的本地化的技术支持和服务，包括电话、Email、论坛、中文技术文档等，这将为国内工程师们开发出更有竞争力的产品提供更多的助力（四） GNUGNU是“GNU‘s Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆（注：Gnu在英文中原意为非洲牛羚，发音与new相同）。UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准，因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件，例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。
1985年Richard Stallman又创立了自由软件基金会（Free Software Foundation）来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献，但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时，一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions
到了1990年，GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs，C语言编译器GCC，以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。 
1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传，许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合，完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。（尽管如此GNU计划自己的内核Hurd依然在开发中，目前已经发布Beta版本。）
许多UNIX系统上也安装了GNU软件，因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。（五） ARM REALVIEW DEVELOPER SUITERealView Developer Suite工具是ARM公司是推出的新一代ARM集成开发工具。支持所有ARM 系列核，并与众多第三方实时操作系统及工具商合作简化开发流程。开发工具包含以下组件：
· 完全优化的ISO C/C++编译器
· C++ 标准模板库
· 强大的宏编译器
· 支持代码和数据复杂存储器布局的连接器
· 可选 GUI调试器
· 基于命令行的符号调试器(armsd)
· 指令集仿真器
· 生成无格式二进制工具、Intel 32位和Motorola 32位ROM映像代 码的指令集模拟工具
· 库创建工具
· 内容丰富的在线文档（六） IAR EWARMEmbedded Workbench for ARM 是IAR Systems 公司为ARM 微处理器开发的一个集成开发环境(下面简称IAR EWARM)。比较其他的ARM 开发环境，IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。
IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.30。这里提供的是32k 代码限制、但没有时间限制的Kickstart版。
EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM 内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。
IAR EWARM 的主要特点如下：
1、高度优化的IAR ARM C/C++ Compiler
2、IAR ARM Assembler
3、一个通用的IAR XLINK Linker
4、IAR XAR 和XLIB 建库程序和IAR DLIB C/C++运行库
5、功能强大的编辑器
6、项目管理器
7、命令行实用程序
8、IAR C-SPY 调试器(先进的高级语言调试器（七） KEIL ARM-MDKARMKeil uVision调试器可以帮助用户准确地调试ARM器件的片内外围功能(I2C、 CAN、UART、SPI、中断、I/O口、A/D转换器、D/A转换器和PWM模块等功能)。ULINK USB-JTAG转换器将PC机的USB端口与用户的目标硬件相连(通过JTAG或OCD)，使用户可在目标硬件上调试代码。通过使用Keil uVision IDE/调试器和ULINK USB-JTAG转换器，用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。
支持Philips、Samsung、 Atmel、 Analog Devices、 Sharp、 ST等众多厂商ARM7内核的ARM微控制器。
高效工程管理的uVision3集成开发环境
* Project/Target/Group/File的重叠管理模式，并可逐级设置；
* 高度智能彩色语法显示；
* 支持编辑状态的断点设置,并在仿真状态下有效。
高速ARM指令/外设模拟器
* 高效模拟算法缩短大型软件的模拟时间；
* 软件模拟进程中允许建立外部输入信号；
* 独特的工具窗口，可快速查看寄存器和方便配置外设；
* 支持C调试描述语言，可建立与实际硬件高度吻合的仿真平台；
* 支持简单/条件/逻辑表达式/存储区读写/地址范围等断点。
多种流行编译工具选择
* Keil高效率C编译器；
* ARM公司的ADS/RealView 编译器；
* GNU GCC 编译器；
* 后续厂商的编译器。（八） MULTI 2000Multi 2000是美国Green Hills软件公司开发的集成开发环境，支持C/C++/Embedded C++ /Ada 95/Fortran编程语言的开发和调试，可运行于Windows平台和Unix平台，并支持各类设备的远程调试。
Multi 2000支持Green Hills公司的各类编译器以及其它遵循EABI标准的编译器，同时Multi 2000支持众多流行的16位、32位和64位处理器和DSP，如PowerPC、ARM、MIPS、x86、Sparc、TriCore、SH-DSP等，并支持多处理器调试。
Multi 2000包含完成一个软件工程所需要的所有工具，这些工具可以单独使用，也可集成第三方系统工具。（九） Embest IDEEmbest IDE英文全称是Embest Integrated Development Environment，是深圳市英蓓特信息技术有限公司推出的一套应用于嵌入式软件开发的新一代集成开发环境。
Embest IDE是一个高度集成的图形界面操作环境，包含编辑器、编译器、汇编器、链接器、调试器等工具，其界面同Microsoft Visual Studio类似。 Embest IDE支持ARM、Motorola等多家公司不同系列的处理器，对于ARM系列处理器，目前支持到ARM9系列，包括ARM7、ARM5等低系列芯片。（十） Hitool for ARM由Hitool International Inc出品，是一种较新的ARM嵌入式应用软件开发系统，主要包括Hitool ARM Debugger、GNU Compiler（内建）、JTAG cable、评估板以及嵌入式实时操作系统ThreadX等。其中编译器模块可以替换成ARM ADS Compiler或ARM SDT Compiler。
其主要特点如下：
1) 近似MS Visual Studio的调试界面风格，可以在Win98/ME/NT等多种Win32环境下运行；
2) 优秀的工程管理器、源代码和二进制代码编辑器、字符串搜索引擎以及调试目标的自由拖放等功能；
3) 支持汇编、C以及C++源码级调试，不仅可以通过串口和并口进行本地调试，也可以通过TCP/IP进行远端调试；
4) 集成了S-Record、Binary和Disassembly格式的内存上下载工具，Flash编程工具；
5) 支持多种常用的Jtag Cable，具备通过宏和脚本实现的自动化调试功能。（十一） JEENI仿真器JEENI仿真器是美国EPI公司生产的专门用于调试ARM7系列的开发工具。它与PC之间通过以太网口或串口连接，与ARM7目标板之间通过JTAG口连接。该仿真器使用独立电源。
JEENI仿真器支持ARM/THUMB指令，支持汇编/高级语言调试。用户应用程序通过JEENI仿真器下载到目标RAM中。通过JEENI仿真器，用户可以观察/修改ARM7的寄存器和存储器的内容，用户可以在所下载的程序上设置断点，用户可以以汇编/高级语言单步执行程序，也可以全速运行程序，用户可以观察高级语言变量的数据结构及内容并对变量的内容在线修改。
JEENI 内部使用了一片带有高速缓存的 ARM 处理器，支持对调试操作的快速响应，比如：单步、读写存储器、读写寄存器和下载应用程序到目标板。JEENI 的这种结构，允许以太网接口在处理器执行JTAG指令的同时访问存储器。这种设计极大的提高了下载速度。
JEENI仿真器能够很好地与SDT2.5工具连接，用户可使用SDT的编译器和调试界面。JEENI 对那些正在使用ARM BlackICE/EmbeddedICE JTAG接口的用户来说是即插即用的替代品。JEENI 可用于ARM SDT 2.11a 或 SDT 2.5，另外大多数第三方的调试器也都支持 JEENI（十二） ULINK2 仿真器ULINK2是ARM公司最新推出的配套RealView MDK使用的仿真器，是ULink仿真器的升级版本。ULINK2不仅具有ULINK仿真器的所有功能，还增加了串行调试（SWD）支持，返回时钟支持和实时代理等功能。开发工程师通过结合使用RealView MDK的调试器和ULINK2，可以方便的在目标硬件上进行片上调试(使用on-chip JTAG， SWD和 OCDS)、Flash编程…
ULINK2 新特点：
标准Windows USB驱动支持ULINK2即插即用
支持基于 ARM Cortex-M3的串行调试
支持程序运行期间的存储器读写、终端仿真和串行调试输出
支持10-pin 连接线 (也支持20-pin 连接线)
ULINK2主要功能：
USB通讯接口高速下载用户代码
存储区域/寄存器查看
快速单步程序运行
多种程序断点
片内Flash编程（十三） Multi-ICEMulti-ICE是ARM公司自己的JTAG在线仿真器，目前的最新版本是2.1版。
Multi-ICE的JTAG链时钟可以设置为5 kHz到10 MHz，实现JTAG操作的一些简单逻辑由FPGA实现，使得并行口的通信量最小，以提高系统的性能。Multi-ICE硬件支持低至1V的电压。Multi-ICE 2.1还可以外部供电，不需要消耗目标系统的电源，这对调试类似手机等便携式、电池供电设备是很重要的。
Multi-ICE 2.x支持该公司的实时调试工具MultiTrace，MultiTrace包含一个处理器，因此可以跟踪触发点前后的轨迹，并且可以在不终止后台任务的同时对前台任务进行调试，在微处理器运行时改变存储器的内容，所有这些特性使延时降到最低。 
Multi-ICE 2.x支持ARM7、ARM9、ARM9E、ARM 10和Intel Xscale微结构系列。它通过TAP控制器串联，提供多个ARM处理器以及混合结构芯片的片上调试。它还支持低频或变频设计以及超低压核的调试，并且支持实时调试。
Multi-ICE提供支持Windows NT4.0、Windows95/ 98/2000/Me、HPUX 10.20 和 Solaris V2.6/7.0的驱动程序。
Multi-ICE主要优点：
快速的下载和单步速度。
用户控制的输入/输出位。
可编程的JTAG位传送速率。
开放的接口，允许调试非ARM的核或DSP。
网络连接到多个调试器。
目标板供电，或外接电源
操作系统
（一）μC/OS-IIμC/OS-II 是一种基于优先级的抢占式多任务实时操作系统，包含了实时内核、任务管理、时间管理、任务间通信同步（信号量，邮箱，消息、队列）和内存管理等功能。它可以使各个任务独立工作，互不干涉，很容易实现准时而且无误执行，使实时应用程序的设计和扩展变得容易，使应用程序的设计过程大为减化。（二） VxWorksVxWorks 是美国 Wind River System 公司（ 以下简称风河公司 ，即 WRS 公司）推出的一个实时操作系统。Tornado 是WRS 公司推出的一套实时操作系统开发环境，类似Microsoft Visual C，但是提供了更丰富的调试、防真环境和工具。
VxWorks操作系统有以下部件组成： 
内核（wind）： 
多任务调度（采用基于优先级抢占方式，同时支持同优先级任务间的分时间片调度） 
任务间的同步 
进程间通信机制 
中断处理
 定时器和内存管理机制 
I/O 系统 
VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统，包括 UNIX 标准的Basic I/O（creat(), remove(), open(),close(), read(), write(), and ioctl().），Buffer I/O (fopen(), fclose(), fread(), fwrite(), getc(), putc()) 以及POSIX 标准的异步 I/O。VxWorks 包括以下驱动程序：网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。 
VxWorks 提供了一个实用例程的扩展集，包括中断处理、看门狗定时器、消息登录、 内存分配、字符扫描、线缓冲和环缓冲管理、链表管理和 ANSIC标准。
在 Tornado 开发系统中，开发工具是驻留在主机上的。但是也可以根据需要将基于目标机的Shell 和装载卸载模块加入 VxWorks。 
嵌入式Vxworks系统的主要应用领域主要有以下几方面：
1.数据网络：如：以太网交换机、路由器、远程接入服务器等
2.远程通讯：如：电信用的专用分组交换机和自动呼叫分配器，蜂窝电话系统等
3.医疗设备：如：放射理疗设备
4.消费电子：如：个人数字助理等
5.交通运输：如：导航系统、高速火车控制系统等
6.工业：如：机器人
7.航空航天：如：卫星跟踪系统
8.多媒体：如：电视会议设备
9.计算机外围设备：如：X终端、I/O 系统等
总之，VxWorks的系统结构是一个相当小的微内核的层次结构。内核仅提供多任务环境、进程间通信和同步功能。这些功能模块足够支持VxWorks在较高层次所提供的丰富的性能的要求。 
VxWorks6.0版本新增功能：
风河通用平台VxWorks版（GPP）是所有设备软件应用程序的首要基础平台。此通用平台基于全球应用最广泛的运行时操作系统--VxWorks而构建。最新版本（VxWorks 6.1）中的各运行时组件可向后兼容VxWorks的早期版本。此最新版本包含了增强的内存保护、容错管理，并支持最新的网络和安全协议以及设备与企业间的连通性。
通用平台组合了最为严格和确定性的实时操作系统，其产品完全集成了现有的产品开发解决方案，从而能够满足贵企业的各种苛刻需求。它无缝集成了业界标准的RTOS（VxWorks 6.1）、功能强大的开发套件（Workbench 2.3）、网络和安全协议、用于工程人员快速启动项目的培训以及迅速扩展您开发团队综合技能的各种专业服务。（三）pSOSpSOSystem是美国系统集成公司(Integrated Systems, Inc. 简称ISI公司,现已与美国WindRiver系统公司合并)根据几十年从事嵌入式实时系统理论研究与实践活动而设计开发的实时嵌入式操作系统。pSOSystem 集成了一整套嵌入式软件模块、工具和服务。作为嵌入式系统微内核设计的先驱者之一，ISI公司将pSOSystem构造成适于嵌入式应用系统开发、在嵌入式实时领域具有领导地位的实时操作系统。pSOSystem从ISI 公司和许多第三厂家得到大量的支持。 
pSOSystem 是一个专门为嵌入式微处理器设计和开发的模块化、高效率的实时操作系统。它提供了基于标准化开放系统的完整的多任务环境，例如：对网络文件系统的支持。
pSOSystem 的设计宗旨是为了实现高效、可靠、易于使用的嵌入式实时软件，以支持用户自己设计的或商品化的硬件系统。
pSOSystem 的每一部分都是完全“自包含”的，这种机制允许开发者根据每个应用的特殊要求对操作系统的功能和内存进行裁剪和配制。pSOSystem 的这种设计，使得开发人员对简单的独立设备及复杂的可容错多处理机系统都可以灵活配置。
pSOSystem提供了一套集成化的交叉开发工具以支持应用系统的开发。该集成环境可在PC机或工作站上运行。这些工具可通过多种连接机制与目标机通讯。（四）Palm OSPalm OS是Palm公司开发的专用于PDA上的一种操作系统，这是PDA上的霸主，一度普占据了90%的PDA市场的份额。虽然其并不专门针对于手机设计，但是Palm OS的优秀性和对移动设备的支持同样使其能够成为一个优秀的手机操作系统。其最新的版本为Palm OS 5.2。目前具有手机功能的Palm PDA如Palm公司的Tungsten W。而Handspring公司（目前已被Palm公司收购）的Treo系列则是专门使用Palm OS的手机，如Treo 270以及最新的倍受瞩目的Treo 650
Palm OS是一种32位的嵌入式操作系统，用于掌上电脑。此系统是3Com公司的Palm Computing 部开发的。（Palm Computing目前已经独立成一家公司。） Palm OS与同步软件HotSync结合可以使掌上电脑与PC机上的信息实现同步，把台式机的 功能扩展到了手掌上。 目前，基于Palm OS的掌上电脑主要是3Com的系列产品，如Palm IIIx，Palm V，Palm VII, IBM WorkPad c3用的也是Palm OS。Sony等公司也获得了Palm Computing的许可，将开发 基于Palm OS的掌上电脑。Palm OS与Windows CE间的搏斗正在展开。（五）QNXQNX是由一家位于加拿大的 QNX软件系统有限公司开发的实时操作系统。 QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具)、部分遵循POSIX.1b(实时扩展)。它最早开发于1980年，到现在已相当成熟。QNX是一个微内核实时操作系统，其核心仅提供4种服务：进程调度、进程间通信、底层网络通信和中断处理，其进程在独立的地址空间运行。所有其它OS服务，都实现为协作的用户进程，因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。（六）Windows CEWindowsCE是微软公司嵌入式、移动计算平台的基础，它是一个开放的、可升级的32位嵌入式操作系统，是基于掌上型电脑类的电子设备操作系统，它是精简的Windows 95，Windows CE的图形用户界面相当出色。
WindowsCE版本主要有1.0、2.0、3.0、4.0、4.2、5.0 和6.0（七）Linux简单地说，Linux是一套免费使用和自由传播的类Unix操作系统，它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux的出现，最早开始于一位名叫Linus Torvalds的计算机业余爱好者，当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix（是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序）的操作系统，这个操作系统可用于386、486或奔腾处理器的个人计算机上，并且具有Unix操作系统的全部功能，因而开始了Linux雏形的设计。
绝大多数基于Linux内核的的操作系统使用了大量的GNU软件，包括了shell程序、工具、程序库、编译器及工具，还有许多其他程序，例如Emacs。正因为如此，GNU计划的开创者理查德·马修·斯托曼博士提议将Linux操作系统改名为GNU/Linux。但有些人只把操作系统叫做"Linux"。 
Linux 的历史是和GNU紧密联系在一起的。 
1983年，理察·马修·斯托曼（Richard Stallman）创立了G [3]NU计划（GNU Project）。这个计划有一个目标是为了发展一个完全免费自由的Unix-like操作系统。自1990年代发起这个计划以来，GNU 开始大量的产生或收集各种系统所必备的元件，像是——函式库（libraries）、编译器（compilers）、侦错工具（debuggers）、文字编辑器（text editors）、网页服务器（web server），以及一个Unix的使用者接口（Unixshell）——除了执行核心（kernel）仍然付阙外。1990年，GNU计划开始在马赫微核（Mach microkernel）的架构之上开发系统核心，也就是所谓的GNU Hurd，但是这个基于Mach的设计异常复杂，发展进度则相对缓慢。 
从1983年开始的GNU计划致力于开发一个自由并且完整的类Unix操作系统，包括软件开发工具和各种应用程序。到1991年 Linux 内核发布的时候，GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下，GNU组件可以运行于Linux内核之上。整个内核是基于GNU通用公共许可，也就是GPL（GNU General Public License，GNU通用公共许可证）的，但是Linux内核并不是GNU 计划的一部分。1994年3月，Linux1.0版正式发布，Marc Ewing成立了 Red Hat 软件公司，成为最著名的Linux分销商之一。
嵌入式linux与ARM开发板的入门建议
[1]第一，学习基本的【非法词语被屏蔽】机编程。
对于学硬件的人而言，必须先对硬件的基本使用方法有感性的认识，更必须深刻认识该硬件的控制方式，如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7（主意是当时ARM9还很贵），学ARM7的时候还是保持着学51单片机的思维，使用ADS 去编程，第一个实验就是控制 led。学过一段时间ARM的人都会笑这样很笨，实际上也不是，我倒是觉得有这个过程会好很多，因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制，因此对这些硬件的控制有了感性的认识就好很多了
学习【非法词语被屏蔽】机的编程的同时要好好理解这个硬件的构架、控制原理，这些我称他为理解硬件。所谓的理解硬件就是说，理解这个硬件是怎么组织这么多资源的，这些资源又是怎么由cpu、由编程进行控制的。比如说，s3c2410中有AD转换器，有GPIO（通用IO口），还有nandflash控制器，这些东西都有一些寄存器来控制，这些寄存器都有一个地址，那么这些地址是什么意思？又怎么通过寄存器来控制这些外围设备的运转？还有，norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元，那么这些地址与刚刚说的寄存器地址又有什么关系？他们是一样的吗？而与 norflash相对应的nandflash内部的储存单元并不是线性排放的，那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用？或者简单地说应该怎么用nandflash？再有，使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件，这个文件究竟有什么用？他里面的代码是什么意思？不要这个可以吗？诸如此类都是对硬件的理解，理解了这些东西就对硬件有很深的理解了，这对以后更深一步的学习将有很大的帮助，如果跳过这一步，我相信越往后学越会觉得迷茫，越觉得这写东西深不可测。因为，你的根基没打好。
不过先声明一下，本人并没有使用ADS对ARM9进行编程，我是学完ARM7后直接就使用ARM9学linux系统的，因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^，自己去研究研究吧。
对于这部分不久将提供一份教程，这个教程中的例程并不是我为我们所代理的板子写的，是我在我们学院实验室拿的，英培特为他们自己 的实验箱写的，不过很有借鉴意义，可以作为一份有价值的参考。
第二，使用linux系统进行一些基本的实验。
在买一套板子的时候一般会提供一些linux的试验例程，好好做一段时间这个吧，这个过程也是很有意义的，也是为进一步的学习积累感性认识，你能想象一个从没有使用过linux系统的人能学好linux的编程吗？好好按照手册上的例程做一做里面的实验，虽然有点娃娃学走路，有点弱智，但是我想很多高手都会经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程，主要是开发板的提供商会提供很丰富的例程，我们不做重复工作，只提供他们没有的、最有价值的东西给大家。
第三，研究完整的linux系统的的运行过程。
所谓完整的linux系统包括哪些部分呢？
三部分：bootloader、linux kernel（linux内核）、rootfile（根文件系统）。
那么这3部分是怎么相互协作来构成这个系统的呢？各自有什么用呢？三者有什么联系？怎么联系？系统的执行流程又是怎么样的呢？搞清楚这个问题你对整个系统的运行就很清楚了，对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨，自己好好研究吧。
第四，开始做系统移植。
上面说到完整的linux有3部分，而且你也知道了他们之间的关系和作用，那么现在你要做的便是自己动手学会制作这些东西。
当然我不可能叫你编写这些代码，这不实现。事实上这个3者都能在网下载到相应的源代码，但是这个源代码不可能下载编译后就能在你的系统上运行，需要很多的修改，直到他能运行在你的板子上，这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多，要懂的相关知识也很多，等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。
在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码，我不提倡无目的地去看linux源代码，用许三多的话说，这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看，这里我推荐一本好书倪继利的《linux内核的分析与编程》，这是一本针对linux-2.6.11内核的书，说得很深，建议先提高自己的C语言编程水平再去看。
至于每个部分的移植网上也可以找到好多吨的资料，自己研究研究吧，不过要提醒的是，很多介绍自己经验的东西都或多或少有所保留，你按照他说的去做总有一些问题，但是他不会告诉你怎么解决，这时就要靠自己，如果自己都靠不住就找我一起研究研究吧，我也不能保证能解决你的问题，因为我未必遇到过你的问题，不过我相信能给你一点建议，也许有助你解决问题。
这一步的最终目的是，从源代码的官方主页上（都是外国的，悲哀）下载标准的源代码包，然后进行修改，最终运行在板子上。
盗用阿基米德的一句话：“给我一根网线，我能将linux搞定”。
第五，研究linux驱动程序的编写。
移植系统并不是最终的目的，最终的目的是开发产品，做项目，这些都要进行驱动程序的开发。Linux的驱动程序可以说是五花八门，linux2.4和 linux2.6的编写有相当大的区别，就是同为linux2.6但是不同版本间的驱动程序也有区别，因此编写linux的驱动程序变都不是那么容易的事情，对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核，这样到时学驱动的编程就有足够的资料了。
这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。
第六，研究应用程序的编写。
做作品做项目除了编写驱动程序，最后还要编写应用程序。现在的趋势是图形应用程序的开发，而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序，不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产，支持MiniGUI”。 MiniGUI的编程比较相似Windows下的VC编程，比较容易上手，效果应该说是相当不错的，我曾使用过来开发ARM7的程序。不过MiniGUI 最大的不好就是没有像qtopia这样的图形操作平台，这大大【非法词语被屏蔽】了他的推广，我曾经幻想过与北京飞漫公司（就是MiniGUI的版权拥有者）合作使用 MiniGUI函数库开发像qtopia这样的图形操作平台，不过由于水平有限这只能是幻想了，呵呵。
完成这一步你基本就学完了嵌入式linux的全部内容了。
还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人，客观原因是身边的老师、同学师兄都没有这方面的高手，主观原因是我不喜欢问人，喜欢自己研究解决问题。这样做有个好处，就是可以提高自己解决问题的能力，因为做这些东西总有很多问题你难以理解，别人也没有这方面的经验，也不是所有问题都有人给你答案，这时必须要自己解决问题，这样，个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下，确实找不到答案了就问问高手，还是不行了就自己去研究，不要一味去等别人帮你解决问题。
记住，问题是学习的最好机会。