本教材主要作为嵌入式系统的基础理论教程,以目前最流行的ARM嵌入式系统结构来讲解嵌入式系统的原理。本书涉及:ARM微处理器结构、ARM及Thumb指令集、ARM汇编程序设计、实时操作系统、嵌入式系统开发流程等内容。本教材还包括一些开发实例,为本科生学习嵌入式系统提供一个内容合适、理论实践并举的教材。
嵌入式系统基础
朱恺 吉逸 储昊明 编著
本书是作者根据多年嵌入式系统教学经验编写的适合本科教学的嵌入式教材,比较全面地介绍了嵌入式系统的原理和主流开发平台,主要内容包括:
嵌入式系统基础知识
ARM微处理器结构和ARM程序设计
实时操作系统原理
μC/OS-II源码解析和移植分析
嵌入式设计开发流程和ARM嵌入式开发主流工具
本书内容完整、层次清晰、理论和实践兼顾,在介绍嵌入式系统原理之外,还安排了大量贴近工程实际的实践性知识,相关章节有实例教程,有利于学生理解嵌入式系统知识、掌握主流的开发工具和开发技巧,为后续的专业课程学习和工程实践打下良好基础。
本书特点:
以目前最为流行的ARM嵌入式系统为主线,组织全书内容。
注重讲解实时操作系统的原理和裁剪过程,以μC/OS-II为主线,便于学生学习和理解。
精选内容,合理编排,既满足本科教学要求,又不至于内容过多过难,让学生学习吃力。
内容组织灵活,部分章节可选讲,便于教师根据教学情况合理安排教学内容和教学课时。
注重知识的实用性,有实时系统的源码讲解,结合实验,可以加深学生对基础知识的理解。
提供完善的配套教学资源,为教师配有电子教案,配有章后习题答案,以及相关源代码,有需要者可登录华章网站(www.hzbook.com)下载。
在后PC时代,嵌入式系统的应用已经深入到我们日常生产、生活的方方面面,我们似乎从未像今天这样依赖各种各样的智能设备去感知世界或与人交流。嵌入式系统的发展已经成为一种不可逆转的趋势,其影响绝不仅限于个人,它已经开始改变人们的娱乐方式、生活习惯和社会的生产组织形态。
此时,可能你已经意识到:你使用智能手机与朋友分享过微博;你使用数码相机记录过家庭生活的精彩一刻;你使用电子血压计做过体检……但你可能还未意识到:在绕地球飞行的卫星上、在变电站的监控设备中、在监测空气质量的监测站里……处处都有嵌入式系统的身影。蓦然回首,我们已经生活在一个嵌入式系统的世界中。
正因为嵌入式系统广泛的应用领域和广阔的应用前景,今天,嵌入式系统的设计和开发已经成为信息科学中的热门技术。据不完全统计,全球每年嵌入式系统处理器的出货量占处理器市场的80%以上,嵌入式系统所带动的相关产业的产值突破了1万亿美元。难怪福特汽车曾宣称:“福特出售的‘计算能力’已超过了IBM。”这里的计算能力就是由聚集在福特汽车上的众多种类的嵌入式设备形成的。
嵌入式系统的巨大市场需求催生了巨大的人才需求,在大学生就业竞争日益激烈的大背景下,国内每年对于嵌入式系统设计和开发人才的需求缺口竟高达30万以上。由于嵌入式系统既涉及硬件又涉及软件,目前,从事嵌入式系统研发的工程师基本可以分为两类:一类是从事硬件研发的硬件工程师,主要完成硬件系统原理图和PCB印刷线路板的设计、开发与硬件相关的底层软件(如BootLoader、设备驱动程序等);另一类是从事软件研发的软件工程师,主要完成对操作系统的裁剪、应用程序的开发、软件系统的调试等。
分工细化能够提高生产效率,这是工业生产的必然,但这一现状也使嵌入式人才培养陷入困境。多数学校或培训机构出于就业目的,将嵌入式人才培养等同于嵌入式开发技能培训,只教授一两种热门的开发工具(如EDA设计工具、Windows CE平台、J2ME程序开发等),而学生对嵌入式系统设计开发缺乏全面、深入的理解,这样的“人才”严格地来说并不能称为嵌入式人才。这是因为,他们对于嵌入式系统知识往往是知其然而不知其所以然,一旦技术革新造成开发工具淘汰,他们就会因为基础知识欠缺而难以适应知识的更新。另一方面,也有不少学校由于硬件条件的限制或是师资的缺乏,使嵌入式系统的教学成为一门“理论课”,课程内容缺乏实用性,学生固然被灌输了大量的嵌入式概念和理论,但没有实际动手练习的机会,这样的学生在就业市场上自然也难受欢迎。
写作目的
嵌入式系统涉及计算机硬件、操作系统、软件开发、软件工程等诸多领域,知识点众多,其中不少内容还是信息科学中的难点;同时,嵌入式系统又是一门实践性很强的课程,嵌入式领域的处理器和开发工具种类众多,开发工具中很多参数的配置、代码的调试往往依赖于经验;本科教学的学时有限,如何选取教学内容,使之既能保证教学内容的完整,又能让学生掌握主流的开发工具和开发技巧,是每一个嵌入式系统基础课程的授课者首先要思考的问题。基于以上三方面的考虑,我们编写了这本内容完整、理论和实践兼顾、适合本科教学的教材。
本书特色
本书选择了ARM处理器(以ARM7TDMI的S3C44B0X处理器为重点)和开源操作系统μC/OS-II作为示例进行知识讲解。这样选择是因为:ARM公司是全球领先的16/32位RISC处理器知识产权核(IP Core)提供商,ARM处理器具有功能强大、体积小、功耗低等优点,被众多芯片厂商支持。ARM处理器广泛地应用于各类嵌入式产品中,其在RISC处理器市场的占有率在75%以上,可以说,ARM处理器已经成为嵌入式处理器的主流。而μC/OS-II是一款结构小巧的可移植、可裁剪的实时多任务操作系统内核,它虽然不如商业实时操作系统功能强大,但由于源码开放且代码精练、设计规范,其5000余行代码的解析对于学习实时操作系统原理十分有益,十分适合于嵌入式的基础教学。同时,μC/OS-II结构简单、便于改进,在实际工程项目中也被广泛应用。
此外,本书中还介绍了嵌入式程序设计、嵌入式系统设计开发流程,以及ARM嵌入式开发中的主流开发工具(ADS和RealView MDK等)的使用等实用性知识。这些知识结合之前的嵌入式系统原理,为初学者展现一个完整而生动的嵌入式系统场景。
教学建议
本书共10章:第1章总述嵌入式系统的相关知识;第2~5章系统介绍ARM处理器相关知识;第6、7章介绍实时操作系统相关知识;第8、9章介绍嵌入式系统设计、开发相关知识;第10章介绍ARM7TDMI的S3C44B0X处理器的系统结构,由于这部分内容很多是工程操作或工程定义,放在ARM处理器原理中并不合适,但在实际工作中又常常需要查阅使用,所以将其单独列出,读者可以将其与第2、3章对照学习。
本书建议学时为36学时,各章的学时分配建议如下:
章节 内容 学时
第1章
嵌入式系统基础知识 主要介绍嵌入式系统的基础知识,包括嵌入式系统的概念、特点、发展历史、分类、组成等 2
第2章
ARM微处理器硬件结构 主要介绍ARM微处理器的硬件结构,包括ARM各系列微处理器的介绍、ARM7TDMI的硬件结构、ARM微处理器的存储体系、ARM协处理器、ARM片上总线、ARM调试结构等 2
第3章
ARM微处理器体系结构 主要介绍ARM微处理器的寄存器组织、工作状态、工作模式、异常处理、流水线技术、协处理器等 4
第4章
ARM指令系统 系统地介绍ARM指令集和Thumb指令集的基本指令,以及各指令的应用场合及方法 4
第5章
ARM程序设计基础 主要介绍ARM程序设计的一些基本概念,如ARM汇编语言的伪指令、汇编语言的语句格式和程序结构等,同时介绍ARM混合编程的内容 3
第6章
实时软件系统 主要介绍实时操作系统的概念、结构、工作原理,最后还介绍了主流的实时操作系统 4
第7章
μC/OS-II源码解析和移植分析 重点介绍μC/OS-II的内核结构,包括任务调度、任务管理、时间管理、内存管理和任务间的通信与同步等基本功能,并提供在这个内核之上最基本的系统服务,如信号量、邮箱、消息队列、内存管理、中断管理等,最后介绍了μC/OS-II移植的相关知识 5
第8章
嵌入式系统设计开发流程 介绍嵌入式系统设计开发流程的相关知识,包括需求分析、概要设计、详细设计、软硬件测试、软件调试等。最后以导航仪的设计开发为例,来说明嵌入式系统设计开发的流程 4
第9章
嵌入式系统开发
工具及实例 主要介绍ARM嵌入式开发所使用的四种主流开发工具:ADS 12、RealView MDK、RVDS和IAR EWARM,并着重介绍了ADS 12和RealView MDK的使用方法 4
第10章
S3C44B0X系统结构 主要介绍S3C44B0X的系统结构,并对其内部各功能模块做了详细说明 4
致谢
本书在编写的过程中得到了很多专家和朋友的指导、帮助。特别感谢解放军理工大学胡友彬教授、东南大学杨全胜教授和宋之毅教授审阅本书并提出宝贵意见;感谢博芯公司提供实验环境和产品资料;感谢机械工业出版社华章分社策划编辑姚蕾的支持;感谢家人的关心和鼓励,正是你们的帮助才促使本书顺利地完成。
本书由朱恺、吉逸、储昊明合编,吉逸负责第1章、储昊明负责第2章和第10章,其余各章由朱恺编写,最后由朱恺统稿。在本书的编写过程中,我的好友王晓伟、王宇阳、叶飞江、李光生也参与了部分章节图表的绘制、代码的编写以及内容的整理工作。由于编者水平有限,书中疏漏、不妥之处在所难免,敬请广大读者批评指正。
朱恺
2011年10月于南京
计算机科学及应用
本书是作者根据多年嵌入式系统教学经验编写的适合本科教学的嵌入式教材,比较全面地介绍了嵌入式系统的原理和主流开发平台,主要内容包括:
嵌入式系统基础知识
ARM微处理器结构和ARM程序设计
实时操作系统原理
μC/OS-II源码解析和移植分析
嵌入式设计开发流程和ARM嵌入式开发主流工具
本书内容完整、层次清晰、理论和实践兼顾,在介绍嵌入式系统原理之外,还安排了大量贴近工程实际的实践性知识,相关章节有实例教程,有利于学生理解嵌入式系统知识,掌握主流的开发工具和开发技巧,为后续的专业课程学习和工程实践打下良好基础。
本书特点:
1.以目前最为流行的ARM嵌入式系统为主线,组织全书内容。
2.注重讲解实时操作系统的原理和裁剪过程,以μC/OS-II为主线,便于学生学习和理解。
3.精选内容,合理编排,既满足本科教学要求,又不至于内容过多过难,让学生学习吃力。
4.内容组织灵活,部分章节可选讲,便于教师根据教学情况合理安排教学内容和教学课时。
5.注重知识的实用性,有实时系统的源码讲解,结合实验,可以学生加深对基础知识的理解。
6.提供完善的配套教学资源,为教师配有电子教案,配有章后习题答案,以及相关源代码,有需要者可登录华章网站(www.hzbook.com)下载。
出版者的话
编委会
丛书序言
前言
第1章嵌入式系统基础知识
11嵌入式系统概述
111计算机的发展历史
112嵌入式系统的发展历史
113嵌入式系统的概念
114嵌入式系统的特点
115嵌入式系统的分类
116嵌入式系统的典型应用
12嵌入式系统的结构与组成
121嵌入式系统的体系结构
122嵌入式系统的组成
123嵌入式处理器
124实时操作系统
13嵌入式系统程序开发
131嵌入式系统程序开发过程
132嵌入式系统程序开发层次
133嵌入式系统程序开发语言
134嵌入式系统的开发特点
14嵌入式系统的新发展
15嵌入式系统中的信息表示与运算基础
151进位计数制与转换
152计算机中数的表示
153计算机中数的单位
16本章小结
习题
第2章ARM微处理器硬件结构
21ARM简介
211CISC
212RISC
213ARM微处理器介绍
22ARM7TDMI微处理器硬件结构
221ARM7TDMI内核
222ARM7TDMI外围电路
223ARM7TDMI外围引脚
23ARM存储体系
231ARM存储器简述
232ARM存储层次结构
233ARM数据存储类型
234ARM数据存储方式
24ARM协处理器
25ARM片上总线
26ARM调试结构
27ARM外围电路扩展
28本章小结
习题
第3章ARM微处理器体系结构
31ARM的工作状态
311ARM/Thumb技术介绍
312ARM/Thumb状态切换
32ARM的工作模式
33ARM的寄存器组织
331ARM状态下的寄存器组织
332Thumb状态下的寄存器组织
34ARM的异常处理
341ARM异常类型
342对异常的响应
343从异常返回
344各类异常的具体描述
345异常向量
346异常优先级
35ARM的流水线技术
351ARM7的三级流水线
352三级流水线中PC的行为
353ARM9的五级流水线
36ARM协处理器
37本章小结
习题
第4章ARM指令系统
41ARM指令集概述
411ARM指令集编码
412ARM指令的条件码
413ARM指令格式
42ARM指令的寻址方式
421立即寻址
422寄存器寻址
423寄存器间接寻址
424基址变址寻址
425堆栈寻址
426块拷贝寻址
427相对寻址
43ARM指令集
431跳转指令
432数据处理指令
433乘法指令与乘加指令
434程序状态寄存器访问指令
435加载/存储指令
436批量数据加载/存储指令
437数据交换指令
438移位指令(操作)
439协处理器指令
4310异常产生指令
4311基本功能段示例
44Thumb指令及应用
441Thumb指令集概述
442Thumb指令分类介绍
45本章小结
习题
第5章ARM程序设计基础
51ARM汇编伪指令
511符号定义伪指令
512数据定义伪指令
513汇编控制伪指令
514地址读取伪指令
515其他常用的伪指令
52ARM汇编语言
521ARM汇编语句格式
522汇编语言程序中常用的符号
523汇编语言程序中的表达式和运算符
524ARM汇编程序结构
525ARM汇编程序示例
53汇编语言与C语言的混合编程
531ARM程序的文件格式
532ATPCS简介
533内嵌汇编
534C语言程序和ARM汇编程序间相互调用
54本章小结
习题
第6章实时软件系统
61实时软件系统概述
62实时软件系统结构
621轮转结构
622带有中断的轮转结构
623函数队列调度结构
624实时操作系统结构
63实时操作系统概述
631实时操作系统分类
632实时操作系统体系结构
64实时操作系统运行原理
641任务
642互斥
643同步
644任务间通信
645中断处理
646时钟节拍
647死锁
648实时调度策略
65主流的实时操作系统
66本章小结
习题
第7章μC/OS-II源码解析和移植分析
71μC/OS-II的内核结构
711文件结构
712初始化和启动
713时钟节拍
714任务管理
715中断服务
716任务间通信
72μC/OS-II的移植
721INCLUDESH
722OS_CPUH
723OS_CPU_CC
724OS_CPU_AASM
73本章小结
习题
第8章嵌入式系统设计开发流程
81嵌入式系统设计开发基础
811嵌入式系统产品生命周期
812嵌入式系统分析与设计方法
813统一建模语言UML
82嵌入式系统需求分析
83嵌入式系统的设计
831设计模式
832概要设计
833详细设计
84嵌入式系统测试
841硬件测试
842软件测试
843嵌入式系统的系统测试
85嵌入式系统的调试
851软件模拟器
852在线仿真调试
853片上调试
854基于调试代理的调试方法
86嵌入式系统设计实例
861需求分析
862规格说明
863体系结构设计(概要设计)
864硬件构件和软件构件的设计(详细设计)
865系统集成与测试
87本章小结
习题
第9章嵌入式系统开发工具及实例
91ARM嵌入式开发工具概览
92ADS 12
921建立一个工程
922配置生成目标
923编译连接
924用AXD进行代码调试
93RealView MDK
931集成开发环境简介
932工程管理
933编写源程序
934编译程序
935调试程序
94RVDS
941RVDS简介
942RVDS特点
95IAR EWARM
951EWARM 集成开发环境介绍
952IAR J-Link仿真器简介
96本章小结
习题
第10章S3C44B0X系统结构
101S3C44B0X简介
1011片上功能
1012特性
1013芯片引脚定义
102S3C44B0X存储控制器
1021空间划分
1022功能描述
1023特殊功能寄存器
103S3C44B0X的I/O端口
1031功能概述
1032端口控制寄存器
104S3C44B0X的DMA
1041概述
1042ZDMA
1043BDMA
1044DMA请求源选择
1045自动重装模式
1046DMA相关寄存器
105S3C44B0X的UART
1051概述
1052UART操作
1053特殊功能寄存器
106S3C44B0X的中断控制器
1061概述
1062中断控制器操作
1063中断源
1064特殊功能寄存器
107S3C44B0X的RTC
1071概述
1072RTC特性
1073RTC操作
1074特殊功能寄存器
108S3C44B0X的其他模块
109本章小结
习题
参考文献