第 1 章 嵌入式系统开发入门
1.1 嵌入式系统介绍
本章作为 ARM Linux 系统移植的第一章,也是本书的第一章。俗话说说的好“良好的 开始是成功的一半”,虽然这句话并不是真理,但是希望读者在学习任何东西之前都应该有 坚定的学习态度和持之以恒的信念,同样学习本书也要有个良好的开端。首先介绍嵌入式系 统的概述。
1.1.1 嵌入式系统概述
随着嵌入式系统在消费类电子、工业控制、航空航天、汽车电子、医疗保健、网络通信 等各个领域的广泛应用,嵌入式系统这个名词已经被各行各业的人所熟悉, 嵌入式系统已 经走进了人们的生活。它正在以各种不同的形式悄悄地改变着人们的生产、生活方式。无庸 质疑,社会对嵌入式系统开发人员的需求也越来越大,所以现在越来越多的人已经加入到这 个行业中来。嵌入式系统,英文为 Embedded System,从广义上讲,凡是带有微处理器的专 用软、硬件系统都可称为嵌入式系统。如各类单片机和 DSP 系统,这些系统在完成较为单 一的专业功能时具有简洁高效的特点。但是由于他们没有使用操作系统,所以管理系统硬件 和软件的能力有限,在实现复杂的多任务功能时往往困难重重,甚至无法实现。从狭义上讲,
那些使用嵌入式微处理器构成的独立系统,并且有自己的操作系统,具有特定功能,用于特 定场合的系统。本书中所说的嵌入式系统是指狭义上的嵌入式系统。到目前为止,对于嵌入 式系统还没有一个明确的定义。嵌入式系统的核心是嵌入式微处理器,该处理器都是 RISC
(Reduce Instruction Set Computing,精简指令集计算机)*(注 1)的处理器内核。
*注 1:RISC 和 CISC(Complex Instruction Set Computing,复杂指令集计算机)是当前 CPU 的两种架构。它 们的区别在于不同的 CPU 设计理念和方法。早期的 CPU 全部是 CISC 架构,它的设计目的是要用最少的机 器语言指令来完成所需的计算任务。比如对于乘法运算,在 CISC 架构的 CPU 上,您可能需要这样一条指 令:MUL ADDRA, ADDRB 就可以将 ADDRA 和 ADDRB 中的数相乘并将结果储存在 ADDRA 中。将 ADDRA, ADDRB 中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于 CPU 中设计的逻辑来实 现。这种架构会增加 CPU 结构的复杂性和对 CPU 工艺的要求,但对于编译器的开发十分有利。比如 C 程 序中的 a*=b 就可以直接编译为一条乘法指令。今天只有 Intel 及其兼容 CPU 还在使用 CISC 架构。RISC 架 构要求软件来指定各个操作步骤。上面的例子如果要在 RISC 架构上实现,将 ADDRA, ADDRB 中的数据 读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB;
MUL A, B; STR ADDRA, A。这种架构可以降低 CPU 的复杂性以及允许在同样的工艺水平下生产出功能更 年)、R10000(于 1996 年)和 R12000(于 1997 年)等型号。随后,MIPS 公司的 战略发生变化,把重点放在嵌入式系统。1999 年,MIPS 公司发布 MIPS32 和 MIPS64 架构标准,为未来 MIPS 处理器的开发奠定了基础。新的架构集成了所有原来 NIPS 指令集,并且增加了许多更强大的功能。MIPS 公司陆续开发了高性能、低功耗的 32 位处理器内核(core)MIPS324Kc 与高性能 64 位处理器内核 MIPS64 5Kc。2000 年,MIPS 公司发布了针对 MIPS32 4Kc 的版本以及 64 位 MIPS 64 20Kc 处理器内核。
2. ARM 处理器
ARM(Advanced RISC Machines)处理器是由只设计内核的英国 ARM 公司研发出 来的一套处理器体系,ARM公司成立于 1990 年 11 月,其前身是 Acorn 计算机公司。
4. 68K/ColdFire 处理器
68K/ColdFire 处理器是 Motorola 公司独有的处理器体系。68K 内核是最早在嵌入式 领域广泛应用的内核。其最著名的代表芯片是 68360。Coldfire 继承了 68K 的特点 并继续兼容它。
由于嵌入式系统一般具有芯片集成度高,软件代码小,高度自动化,响应速度快等特点,
特别适合于要求实时性和多任务的体系。RTOS(Real-Time Operating System,实时操作系 统)是根据操作系统的工作特性而言的。实时是指物理进程的真实时间。实时操作系统是指 具有实时性,能支持实时控制系统工作的操作系统。首要任务是调度一切可利用的资源完成 实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制 和要求。一般 Windows、Unix、Linux 等桌面系统都属于分时操作系统,在此有必要说明一 下实时操作系统与分时操作系统的区别:具体的说,对于分时操作系统,软件的执行在时间 上的要求并不严格,时间上的错误,一般不会造成灾难性的后果。而对于实时操作系统,主 要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在 事件发生时能够在严格的时限内作出响应,即使是在尖峰负荷下,也应该如此,系统时间响 应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即 系统能对运行情况的最好和最坏等的情况能做出精确的估计。
到此为止,读者应该对嵌入式系统有了大概的了解,下面将介绍嵌入式系统的一般组成。
1.1.2 嵌入式系统组成
嵌入式系统一般由硬件平台和软件平台两部分组成,如下图 1.1 所示。其中硬件平台由 嵌入式微处理器和外围硬件设备组成,而软件平台由嵌入式操作系统和应用软件组成。
图 1.1 嵌入式系统的一般架构 应用程序
操作系统
存储器
处理器
输入 输出
软件平台
硬件平台
随着芯片技术的不断发展,嵌入式处理器的主频也越来越高,通常主频都在 40M Hz 以 上,有的甚至高达 500MHz。多处理器、多核处理器平台也逐渐应用在嵌入式领域,不过现 在大量使用的还是 32 位单处理器组成的平台。一个典型的硬件平台如图 1.2 所示[2]。
图 1.2 嵌入式硬件平台基本组成结构
嵌入式软件平台主要由嵌入式操作系统与应用软件组成。目前流行的嵌入式操作系统可 以分为两类:一类是从运行在个人电脑上的操作系统向下移植到嵌入式系统中,形成的嵌入 式操作系统,如微软公司的 Windows CE,SUN 公司的 Java 系统,朗讯科技公司的 Inferno,
嵌入式 Linux 等。这类系统经过个人电脑或高性能计算机等产品的长期运行考验,技术日 趋成熟,其相关的标准和软件开发方式已被用户普遍接受,同时积累了丰富的开发工具和应 用软件资源。另一类是实时操作系统,如 WindRiver 公司的 VxWorks,ISI 的 pSOS,QNX 系统软件公司的 QNX,ATI 的 Nucleus,中国科学院凯思集团的 Hopen 嵌入式操作系统等,
这类产品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了 精巧的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业 控制等领域中。目前常见的嵌入式系统有:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、
uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 等。嵌入式操作系统的发展也必将带动新一轮科技竞争。
应用程序运行在嵌入式操作系统之上,一般情况下应用程序和操作系统是分开的。当处 理器上带有 MMU(Memory Management Unit,存储器管理单元),它可以从硬件上将应用程 序和操作系统分开编译和管理,Linux、WinCE 就是这种分离机制。这样做的好处就是系统 安全性更高,可维护性更强,更有利于各功能模块的划分。很多情况下在没有 MMU 的处理 器,如 ARM7TDMI,经常应用程序和操作系统是编译在一起运行的,对于开发人员来说,
操作系统更像一个函数库。