21 世纪全国应用型人才培养规划教材·嵌入式技术系列
嵌入式 ARM 系统原理与实例开发
杨宗德 编著
杨 刚 主 审
参 编 张厚先 汤 斌 杨智硕
主 审 熊义杰 张恒杰
编 李 磊 张 军
内 容 简 介
本书是一本介绍 ARM 处理器原理与底层程序开发实例的教材,涉及嵌入式系统结构、嵌入式处理器
及操作系统基本概念、ARM 处理器原理及应用、ARM 汇编程序设计、ARM 处理器 C 语言程序设计、ARM
中断处理、无操作系统下 ARM 接口驱动程序设计以及嵌入式操作系统基本原理等内容。本书在内容编写
上按由浅入深、从易到难的顺序,构建了完整的嵌入式 ARM 底层相关开发知识体系。第 1 部分:精要介
绍了与该知识点相关的基础理论;第 2 部分:详细介绍了应用平台 ARM 处理器与之相关的知识点内容;
第 3 部分:详细介绍了 ARM 实例开发程序和源代码分析。
本书所对应的课程是嵌入式专业的核心课程之一,是嵌入式知识体系中的重中之重,无论以后是从事
嵌入式上层应用开发、驱动开发、系统开发,还是硬件底层开发的读者都需要对这一部分内容有较深入的
研究。
本书可以作为高等学校电子、通信、软件方向的嵌入式专业专科生、本科生的教材,也可以作为 IT
企业嵌入式工程师的参考用书。
图书在版编目(CIP)数据
嵌入式 ARM 系统原理与实例开发/杨宗德编著. —北京:北京大学出版社,2007.9
(21 世纪全国应用型人才培养规划教材·嵌入式技术系列)
ISBN 978-7-301-12530-4
Ⅰ. 嵌… Ⅱ. 杨… Ⅲ. 微处理器,ARM—系统设计—高等学校—教材 Ⅳ. TP332
中国版本图书馆 CIP 数据核字(2007)第 106102 号
书 名:嵌入式 ARM 系统原理与实例开发
著作责任者:杨宗德 编著
责 任 编 辑:孙 琳
标 准 书 号:ISBN 978-7-301-12530-4/TP·0908
出 版 者:北京大学出版社
地 址:北京市海淀区成府路 205 号 100871
网 址:http://www.pup.cn http://www.pup6.com
电 话:邮购部 62752015 发行部 62750672 编辑部 62750667 出版部 62754962
电 子 邮 箱:pup_6@163.com
印 刷 者:北京大学印刷厂
发 行 者:北京大学出版社
经 销 者:新华书店
787 毫米×1092 毫米 16 开本 15.75 印张 351 千字
2007 年 9 月第 1 版 2007 年 9 月第 1 次印刷
定 价:25.00 元
未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。
版权所有,侵权必究
举报电话:010-62752024
电子邮箱:fd@pup. pku. edu. cn
前 言
随着信息技术的发展,嵌入式技术也已经广泛运用到日常生活中的方方面面,嵌入式
系统在消费、汽车电子、微控制、无线通信、数码产品、网络设备、安全系统等领域的应
用方兴未艾。从广义概念来说,除了通用的计算机系统应用外,其他所有的智能电子设备
都属于嵌入式系统。从狭义概念来讲,嵌入式系统主要有以下两个重要特征:
在硬件上,嵌入式系统至少拥有一个高性能处理器作为硬件平台(目前以 32 位处理
器为主流),如 ARM、MIPS 系列处理器。
在软件上,嵌入式系统以一个多任务操作系统为软件开发平台,如 Linux、Windows
CE、Symbian、µC/OS-II、VxWorks 等。
随着越来越多的公司、研究单位、大专院校以及个人开始进行嵌入式系统的研究,嵌
入式系统设计将是未来相当长一段时间内电子领域研究的热点。
本书主要为应用型本科和高等职业院校嵌入式专业而编写,在介绍主要内容及写作思
路之前,首先介绍作者所在院校嵌入式专业(3 年制专科)的培养目标及教学体系。
1. 高等职业院校嵌入式专业培养目标(参考)
目前,全国本专科院校已经着手培养嵌入式专业的本科生和专科生。可见,设置符
合高职院校学生的嵌入式专业课程体系极为重要。以下介绍高职院校嵌入式专业培养目
标,仅供参考。
1) 嵌入式应用工程师能力结构
由于嵌入式领域以工程应用为主,对从业人员而言,主要强调实际的工程应用能力,
为此,在高校培养方向上应以培养嵌入式应用工程师为主,其能力结构如图 1 所示。
图 1 嵌入式应用工程师能力结构(参考)
2) 高职高专嵌入式专业(3 年制)培养目标
作者根据在嵌入式专业的教学经验和高职高专院校学生底子较差、学习时间较短(一般
为 3 年)的情况,认为高职院校的嵌入式专业培养目标及体系应考虑以下原则。
(1) 在培养目标上,以培养嵌入式应用工程师为主,强调学生动手能力,尽可能减少
烦琐的理论知识介绍。
·IV·
嵌入式 ARM 系统原理与实例开发
(2) 在教学方法上,主要采用案例教学的思想。
(3) 在教学形式上,多开设实践课程,要求学生在绝大多数课程中动手操作。
(4) 在嵌入式专业知识体系上,学生应该在整个学习期间掌握以下知识点:
至少一种嵌入式处理器。最好选用当前流行的 32 位处理器,如 ARM、MIPS 系列,
具体选择哪种操作系统可根据学校实际情况来定。
至少一种嵌入式操作系统。具体的处理器可根据学校实际情况来定,但最好选用一
种较简单、开源的嵌入式操作系统,学生可以直接查看操作系统源代码,如 Linux、
µC/OS-II 操作系统。
一套嵌入式开发工具。根据处理器的不同而选择不同的底层程序开发工具(每种类型
的处理器有不同的底层程序开发工具,如 ARM 处理器流行的开发环境为 ADS),
根据选用的嵌入式操作系统选择该应用平台对应的开发工具(如 Linux 系统平台的
开发软件包为 GCC 套件)。
一类开发语言。由于目前在嵌入式设备上的程序绝大多数采用 C 语言,因此建议采
用 C 系列语言为学习对象。
2. 高等职业院校嵌入式专业课程设置(参考)
1) 高职高专嵌入式专业(3 年制)课程体系架构(参考)
如图 2 所示是作者所在高职院校嵌入式专业课程体系结构图。在此方案中,以 ARM(处
理器)+Linux(操作系统)+GCC(开发工具)+C(开发语言)为课程体系主线,即选用 ARM 处
理器为硬件平台,Linux 为主要操作系统平台(在介绍操作系统原理时选用µC/OS-II,因为
Linux 源代码太多,不便于教学),在开发工具上采用 ADS+GCC 套件,在开发语言上选择
C 语言系列。
图 2 嵌入式专业课程体系
·IV·
前 言
·V·
从能力结构上,此教学体系软件和硬件两条线并行,图 2 中的课程体系包括了专业基
础课程、硬件相关课程、软件相关课程、软/硬件结合课程和实践课程,另外根据院校情况
可以开设相应的专业方向选修课程。
2) 主干课程介绍
(1) 基础课程介绍,如表 1 所示。包括嵌入式基础概述和网络技术基础。嵌入式基础
概述作为专业介绍性内容,网络技术基础为后续 Linux 网络应用基础,Linux 应用编程(网
络编程部分),嵌入式在网络中的应用打基础。其中“可选”表示可以选择性开设,亦可不
开设,“<32”表示低于 32 学时。
表 1 嵌入式基础课程
课程名称
参考
学时
嵌入式基础概述
<32
网络技术基础
32
课程主要内容参考
前导课程 实验
入门课程,对嵌入式开发进行概要性介绍,本
课程也可以在学生进校后只安排几个学时作为专
业介绍内容
主要介绍网络基本原理、基本概念,为学习
Linux 网络应用打基础;Linux 网络编程为嵌入式
在网络中的应用打基础
无
可选
无
可选
(2) 硬件核心课程介绍,如表 2 所示。此部分课程主要包括嵌入式专业的硬件课程,
主要涉及数字/模拟电路、PCB 硬件电路设计、单片机课程和嵌入式 ARM 基础。
课程名称
参考
学时
表 2 嵌入式硬件核心课程
课程主要内容参考
主要介绍数字/模拟电路相关知识点,作为以后学习
单片机原理及 ARM 处理器基础之用
以某一种单片机处理器为介绍对象,介绍单片机基
本原理、接口原理、C 语言程序开发(如选用 51 单片机)
掌握一门 PCB 印制电路设计工具,学生毕业后进行
嵌入式电路设计时需要使用,选用 Protel DXP
专业前
导课程
无
C 语言
数字/模拟电路
实验
有
有
数字/模拟电路 有
数字/模拟
电路基础
单片机原理
及程序开发
PCB 印制
电路设计
嵌入式 ARM
处理器原理
及程序开发
64
64
48
64
以 ARM 处理器为主,主要介绍 32 位处理器架构、
ADS 汇编程序、ARM 接口、无操作系统 ARM 接口
驱动开发
单片机原理
C 语言
数字/模拟电路
有
(3) 软件核心课程介绍,如表 3 所示。此部分以 C 语言开发为主线,包括 C 语言程序
设计、Linux 操作系统基础、嵌入式操作系统原理(µC/OS-II 为对象)、Linux 应用程序开发
以及软件工程内容。“选”表示可以根据情况选择性开设,如果条件不允许,可以不开设该
课程。
·V·
·VI·
嵌入式 ARM 系统原理与实例开发
课程名称
C 语言程序
设计
Linux 操作
系统基础
嵌入式操作系
统原理及应用
Linux 下 C 语
言应用编程
软件工程
参考
学时
64
48
64
64
32
嵌入式数据库
48 选
C++程序设计
64 选
表 3 嵌入式软件核心课程
课程主要内容参考
专业前
导课程
实验
介绍 C 语言程序开发相关知识点
学习 Linux 操作系统(如 RedHat)的使用,重点介
绍 Linux 使用以及简单的服务器配置(因为部分服务
器在嵌入式开发中会用到,如 NFS)
与传统的操作系统原理课程类似,但介绍对象为
一种嵌入式操作系统,涉及操作系统内核分析,如
选用µC/OS-II。因 Linux 内核代码过多,故不建议
使用 Linux
无
无
C 语言
单片机原理
让学生掌握软件开发的基本流程,具有工程化开
以 C 语言为开发工具,主要介绍 Linux 上层应用
程序开发,包括文件管理、进程/线程管理、进程间
通信、网络编程基础等上层应用开发内容
Linux 应用基础
C 语言
操作系统原理
操 作 系 统 原 理
C 语言
Linux 基础
C 语言基础
选修。有条件学院(课时充足)介绍 C++程序开发 C 语言基础
选修。有条件学院(课时充足)介绍一种数据库,
让学生对数据库有一定的了解,如选用 Mysql
发软件的思想
有
有
有
有
无
有
有
(4) 软、硬件结合课程,如表 4 所示。此部分主要为一门课程,结合前面学习的软、
硬件基础,进行嵌入式系统应用开发,“>64”表示学时数需要超过 64 学时。
课程名称
参考
学时
ARM+Linux
应用系统开发 >64
表 4 嵌入式软、硬件结合课程
课程主要内容参考
专业前
导课程
以 ARM 处理器为硬件平台,以 Linux 操作系统为
开发平台,根据需要选择性介绍基于 ARM 处理器的
Linux 上层开发、驱动开发及内核开发等内容
ARM 处理器、
Linux 操作 系
统等内容
实验
有
(5) 专业选修课程,如表 5 所示。因为嵌入式专业根据选用的软件操作系统平台不同
可以分为多个方向(如 Linux 方向、Windows CE 方向等),因此,可以开设其他专业的选修
课程。如果前面不选择 Linux 操作系统,可以选择以下所列的某操作系统为介绍主线。
表 5 嵌入式专业选修课程
课程名称
课程主要内容参考
实 验
Symbian 方向课程
Windows CE 方向课程
Java 方向课程
在 Symbian 智能手机上开发 C++应用程序,包括 C++程序开
发课程、Symbian 基础、Symbian 通信应用开发课程
与嵌入式 Windows CE 操作系统相关的课程内容,包括 C++
程序开发、Windows CE 应用开发,以及 Windows CE 下驱动开
发相关内容
跨平台的 Java、J2ME 应用程序开发,包括 Java 程序设计、
J2ME 程序开发等课程内容
有
有
有
·VI·
前 言
·VII·
(6) 项目实训课程,如表 6 所示。根据学校条件,可以选择性或者全部开设下列专业
项目实训课程,作者所在院校有 2 次小学期实践(1~1.5 个月/次),学生针对某一个专题进
行项目实习,如果没有条件,可以在毕业设计中体现这些内容。
表 6 嵌入式项目实训课程
项目名称
课程主要内容参考
前导课程
单片机项目实训
Linux 应用程序开发项目实训
基于某一种单片机处理器(如 51 系列单片
机),让学生学会简单电路设计、单片机接口
驱动程序开发
在 Linux 操作系统下设计 Linux 应用程序
项目
嵌入式系统开发毕业设计
作为本专业毕业设计内容,内容涉及硬件
开发、操作系统设计、软件程序开发等
C 语言、单片机原理
及程序开发、PCB 印制
电路板设计
C 语言、操作系统原
理、Linux 应用程序开发
本专业所有核心课程
3. 本书的写作思路及使用参考
1) 本书内容安排
本书是一本介绍 ARM 处理器原理及底层程序开发的教材,在内容上涉及 ARM 汇编程
序设计、ARM 处理器 C 语言程序设计、无操作系统下 ARM 接口驱动程序设计以及嵌入式
操作系统基本原理等内容。本书在内容编写上按由浅入深、从易到难的顺序,从而构建出
如图 3 所示的完整嵌入式 ARM 底层相关开发知识体系。
图 3 本书主要知识点及编排结构
第 1 章主要介绍嵌入式系统的基本概念、嵌入式操作系统特点、嵌入式系统的应用
领域以及当前流行的嵌入式处理器类型。
第 2 章概要介绍冯·诺依曼体系结构和哈佛体系结构的区别,然后重点介绍 ARM7
内核处理器、ARM9 内核处理器以及 xScale 内核处理器架构和主要接口功能。
第 3 章主要介绍嵌入式 ARM 程序设计基础,包括 ARM 处理器的寄存器结构、工
·VII·
·VIII·
嵌入式 ARM 系统原理与实例开发
作模式、寻址方式、指令编码格式以及常用的 ARM 汇编指令和伪指令功能和语法,
在介绍每一类指令时以一个具体程序为例子。
第 4 章主要介绍 ADS 集成开发环境下汇编程序/C/C++程序开发。重点介绍 ADS 集
成开发环境的使用、ARM 可执行程序结构、ARM 汇编程序/C/C++程序编译及调试,
并对每一个知识点都给出详细的示例程序。
第 5 章主要介绍嵌入式系统的软、硬件体系结构和嵌入式软件的几种开发模式,包
括交叉编译环境和嵌入式应用软件开发模式示例。
第 6 章主要介绍 ARM 处理器的 7 种异常中断处理类型,阐述了它们的原理及应用
方法,同时以 SWI 为例为读者展示了中断处理程序的装载过程和运行过程。
第 7 章主要介绍 ARM 处理器常见接口原理及驱动程序,包括串行通信接口实验、
键盘和 LED 实验、触摸屏实验、A/D 模/数转换实验以及 LCD 驱动实验。在介绍每
一个实验时,首先介绍了与该知识点相关的原理,然后介绍了该实验中使用到的硬
件电路原理,最后为读者展示了相关源代码分析。
第 8 章以µC/OS-II 为对象介绍了嵌入式操作系统的基本概念。内容涉及嵌入式操作
系统的基本概念、µC/OS-II 操作系统与处理器相关的源代码分析。这一部分内容是
后续课程——嵌入式操作系统的基础内容。
第 9 章增加了 ARM 存储设备的管理模式的内容,重点介绍了常用存储设备特点和应
用领域,并对 ARM 处理器的 MMU 原理进行了简要介绍。
2) 本书写作方式
从写作方式上,本书在介绍每个知识点时遵循了以下原则。
第 1 部分:精要介绍了与该知识点相关的基础理论;
第 2 部分:详细介绍了应用平台 ARM 处理器与之相关的知识点内容;
第 3 部分:详细介绍了该内容的示例程序和源代码分析。
3) 本书课程地位
本书所对应的课程是嵌入式专业的核心课程之一,是嵌入式知识体系中的重中之重,
无论以后是从事嵌入式上层应用开发、驱动开发、系统开发,还是硬件底层开发,都需要
对这一部分内容有较深入的研究。
4) 本书读者对象
本书可以作为高等学校电子、通信、软件方向的嵌入式专业本科生、专科生的教材,
也可以作为 IT 企业嵌入式工程师的参考用书。
本书力求满足绝大多数专业学生的需要,在教学安排上,根据应用专业,可以使读者
选择性地学习相关内容。如下所示为电子专业和计算机专业对各章内容的掌握情况。
专业方向
第 1 章
系统
电子方向
了解
计算机方向 了解
第 2 章
偏硬
掌握
了解
第 3 章
结合
掌握
掌握
第 4 章
偏软
掌握
掌握
第 5 章
系统
掌握
掌握
第 6 章
偏硬
了解
了解
第 7 章
结合
掌握
掌握
第 8 章
偏软
了解
了解
第 9 章
偏硬
了解
选学
·VIII·