近年来,嵌入式系统技术发展迅速,嵌入式产品也广泛应用于我们的工作、生活中。产业界对嵌入式人才的需求也推动了教育界对嵌入式课程的日益重视和建设。本书作者多年来一直从事嵌入式系统课程的教学,积累了丰富的教学经验。本书正是在作者丰富的教学实践和科研成果的基础上编写而成的。
本书特点
●从微电子学的相关知识着手讲解嵌入式系统知识,使得基础知识扎根于底层电路之上,并且涵盖嵌入式系统技术领域的主要概念和知识点。
●以目前市场上常见的ARM处理器作为嵌入式硬件平台的核心,兼顾其他体系结构的处理器,系统介绍嵌入式系统硬件的理论和知识。
●原理介绍、软硬件接口介绍、电路介绍和应用编程介绍并重,并注意理论与实践的结合,通过大量实例帮助读者理解重要的概念和理论。
●本书为教师配有电子教案及其他相关资源,请登录机工新阅读网站(www.cmpreading.com)下载。
无
近十年以来,嵌入式系统技术和嵌入式产品发展势头迅猛,其应用领域涉及通信产品、消费电子、汽车工业、工业控制、信息家电、国防工业等各个方面。目前,嵌入式产品在IT产业以及电子工业的经济总额中所占的比重越来越大,对国民经济增长的贡献日益显著。随着手机、媒体播放器、PDA、数码相机和机顶盒等嵌入式产品的普及,嵌入式系统的知识在广大民众中间的传播也越来越广泛。现在每年有许多IT 公司投入大量科研力量研发嵌入式新产品,产业界每年都需要大量的受过良好教育的嵌入式系统开发人才。出于对嵌入式高科技知识的追求,广大在校学生纷纷选修嵌入式系统课程,以获得嵌入式系统的理论知识和开发技能。教育界也积极地推动嵌入式系统教学质量和水平的提高。
在整个社会对嵌入式系统研发人才需求大增的背景下,本书的三位作者均从
2002年开始着手准备嵌入式系统的教学工作,并且于2004年在南京大学计算机系和软件学院及东南大学计算机系正式开设并讲授嵌入式系统课程。到2007年为止,作者们在嵌入式系统课程上已经培养出了大约2000名修课学生。
2006年春季,在几年的教学实践和科研成果的基础上,大家经过讨论决定编写一本面向本科生和硕士研究生的嵌入式系统基础教材,并确立了这本书的基本编写原则。
1)应当以硬件基础为主,把后继教材中的知识点所涉及的大多数硬件知
识讲深讲透,以便读者掌握好底层嵌入式开发的技能,为将来进一步学习嵌入式技术打好基础。
2)在知识传授方面,做到合理衔接、循序渐进,力求做到其他课程讲授过的内容不再在这套教材中简单地重复出现。
3)对于其他已在前导课程讲授且与嵌入式系统基础课程相重叠的知识点,通过对比和补足的方式加以讲解。例如,DMA输入输出方式在计算机组成原理和微机原理与接口课程中都讲解过了,在嵌入式系统课程中,我们将通过对比的方式简明扼要地介绍嵌入式系统中的DMA机制与使用方法,从而消除学生的重复感,使之学深学透。
4)尽可能提高抽象度。例如,嵌入式处理器有多种体系结构,它们同PC机的x86处理器体系结构均有所不同。我们把这些嵌入式处理器的共有特点抽象出来,有利于读者举一反三,深入理解嵌入式处理器不同于通用处理器的主要方面。
本书的主要特点
本书中阐述的知识点主要是在计算机组成原理和微机原理与接口技术这两门本科生课程之上的延续,涵盖嵌入式系统技术领域的主要概念和知识点,力求做到阐明无误、表达清楚。
从微电子学开始对涉及嵌入式系统的知识点进行讲解,例如知识产权核、低功耗
原理和Flash存储单元结构等。这使得本书的嵌入式系统知识基础扎根于底层电路之上。
以ARM处理器为嵌入式硬件平台核心,兼顾其他体系结构的嵌入式处理器,全面
系统地介绍嵌入式系统硬件理论和知识,包括常用嵌入式处理器、常用嵌入式存储器、常用嵌入式总线、常用嵌入式接口和常用嵌入式外部设备。
原理介绍、软件硬件接口介绍、电路连接介绍和应用编程介绍并重。除了把每一个重要的概念讲解清楚之外,还力求做到理论与实践相结合,并给出大量的编程范例。这些范例都是经过调试通过的,覆盖了很多典型的嵌入式程序设计。
概括介绍嵌入式操作系统的基础知识,包括实时系统、嵌入式操作系统的基本
特点、RTOS调度算法、启动程序Bootloader和最小的实时嵌入式操作系统内核μC/OSII。
有些内容是选修选讲内容,在标题上用*号标记。使用本书的教师可以根据课时计划和学生的知识基础对这些内容加以取舍。
教学建议
1)本书主要用于本科生教学,硕士生教学可以酌情使用。
2)第2章是微电子专业学生必修的章节,其他专业的学生可以选学。
3)如果课时数大于72学时(授课课时48,实验课时24),则可分为两个阶段讲授。第一阶段在课堂讲授第1~5章,第二阶段在课堂讲授第6~9章并与实验同步进行。如果课时数小于54小时(授课课时36,实验课时18),则可以略去第2、9章不讲,并且在讲授第6、7、8章时同步进行实验。
本书的教学资源
本书的实例程序、教学课件、实验指导可以从华章网站(wwwhzbookcom)下载。
作者分工
本书由俞建新编制提纲,并撰写了第2、3、4、5、7、8、9章,王健撰写了第1章,宋健建撰写了第6章。俞建新负责全书的统调工作。
致谢
南京大学计算机系张福炎、陈道蓄、陈立军、周根林教授和王崇骏副教授为本书的编写提供了很好的指导性建议;南京大学计算机系杨献春教授和陆庆文副教授为本书的实验范例编写提供了良好的实验环境。南京大学的黄滨、孙睿、吴亚琦、胡琰华、黄蓉、邢向磊、范爱华、娄孝祥、赵凤英、赵伟明、张国斌、赵红玉和魏文宁等同学参加了本书的部分范例程序的编写、调试工作以及部分文稿校对工作。
近几年来,ARM中国公司总裁谭军先生和费浙平先生一直在为作者们开展嵌入式系统教学提供技术资料和业务指导。作者在此也向他们表示衷心的感谢。
编者
2007年12月于中国·南京
近年来,嵌入式系统技术发展迅速,嵌入式产品也广泛应用于我们的工作、生活中。产业界对嵌入式人才的需求也推动了教育界对嵌入式课程的日益重视和建设。本书作者多年来一直从事嵌入式系统课程的教学,积累了丰富的教学经验。本书正是在作者丰富的教学实践和科研成果的基础上编写而成的。 本书特点 ●从微电子学的相关知识着手讲解嵌入式系统知识,使得基础知识扎根于底层电路之上,并且涵盖嵌入式系统技术领域的主要概念和知识点。 ●以目前市场上常见的ARM处理器作为嵌入式硬件平台的核心,兼顾其他体系结构的处理器,系统介绍嵌入式系统硬件的理论和知识。 ●原理介绍、软硬件接口介绍、电路介绍和应用编程介绍并重,并注意理论与实践的结合,通过大量实例帮助读者理解重要的概念和理论。 ●本书为教师配有电子教案及其他相关资源,请登录华章网站(www.hzbook.com)下载。
目录
前言
第1章嵌入式系统概论
11嵌入式系统概述
12嵌入式系统发展简史
121微处理器的发展
122嵌入式系统的发展
13嵌入式系统的特点
14嵌入式系统的基本分类
15嵌入式系统的基本组成
16嵌入式处理器
17嵌入式系统的发展趋势
171嵌入式系统的现状及主要
制约因素
172嵌入式系统的发展方向
18嵌入式系统的相关研究领域
181嵌入式系统的主干学科
领域
182与嵌入式系统关系密切的
技术领域
19本章小结
110习题和思考题
第2章可编程逻辑器件与IP核
21EDA与可编程逻辑器件
211EDA
212硬件描述语言
213可编程逻辑器件
214主流的CPLD/FPGA开发
工具
215可编程逻辑器件CPLD/
FPGA的设计流程
22FPGA应用举例*
221FPGA应用举例一:16位m
序列伪随机信号发生器
222FPGA应用举例二:扩展的
凯撒密码加密器
23系统级芯片
231硅知识产权和知识
产权核
232系统芯片
233IP核标准化基础
234IP核形态与优选原则
24IP核互连与片上总线
241IP核互连的拓扑结构
242片上总线
243片上总线CoreConnect
244片上总线Avalon
245五种片上总线的性能
比较
25低功耗设计的基本原理
251硬件低功耗设计
252软件低功耗设计
26本章小结
27习题和思考题
第3章嵌入式微处理器技术基础
31嵌入式微处理器的典型技术
311I/O端口统一编址与特殊
功能寄存器
312哈佛结构
313桶型移位器
314正交指令集
315双密度指令集
316看门狗定时器
317边界对准与端序
318地址重映射
319FIFO缓冲寄存器
3110主存控制器
32主流嵌入式微处理器
321ARM系列嵌入式
微处理器
322MIPS RISC嵌入式
微处理器
323PowerPC系列嵌入式
微处理器
33嵌入式系统调试技术
331指令集模拟器
332ROM仿真器
333实时在线仿真
334片上调试技术与背景调试
模式
335基于Angel的调试方案
336边界扫描测试技术和JTAG
接口
337Nexus调试标准
338半主机调试方式
34本章小结
35习题和思考题
第4章ARM处理器的体系结构和
指令集
41ARM体系结构的版本及系列
411ARM处理器的体系结构
412ARM体系结构版本的
变种
413ARM体系结构版本的命名
规则
414ARM处理器核系列
42ARM处理器的结构
421ARM处理器的RSIC
特征
422流水线
423ARM的工作模式和工作
状态
424ARM寄存器的组织
43ARM存储器的组织
431ARM存储器的数据类型和
存储格式
432ARM的存储体系
433片内存储器的用法
434协处理器CP15
435存储管理单元
436保护单元
437ARM处理器的Cache
438快速上下文切换扩展
439写缓存区
44ARM处理器的片上总线标准
AMBA
441AMBA 20片上总线的
特点
442AMBA 20片上总线的
主控单元和从动单元
443AMBA 20总线的时序
444AMBA 30——AXI
协议
45ARM处理器核的典型范例:
ARM7TDMI
451复位
452总线周期
453ARM7TDMI处理器的总线
优先级
46ARM处理器的寻址方式和指令
系统
461ARM处理器指令系统的主要
特征
462ARM指令集的编码格式和
语法
463ARM处理器的寻址
方式
464ARM指令的分类说明
47ARM的异常中断处理
471ARM的异常中断响应
过程
472从异常中断处理程序
返回
48本章小结
49习题与思考题
第5章ARM汇编语言程序设计
51ARM汇编语言程序的格式
511预定义寄存器名及内部
变量名
512ARM汇编语言程序的语句
格式
513ARM汇编语言程序编写
规范
514ARM汇编语言指示符
515ARM过程调用标准ATPCS
和AAPCS
52典型ARM汇编语言程序举例
521入门的范例
522基本结构
523典型的ARM汇编程序
范例
53ARM汇编、C和C++混合编程
531内嵌汇编
532C/C++与汇编程序的相互
调用
533软中断和半主机方式ARM
汇编程序设计
5345级流水线的互锁问题
54GNU格式的ARM汇编语言程序
设计
541GNU格式的ARM汇编语言
程序的设计要点
542GNU格式ARM汇编语言
程序举例
55本章小结
56习题与思考题
第6章ARM开发工具
61ARM开发工具概述
62ARM映像文件格式
621ELF文件格式
622ARM映像文件的组成
63ADS的组成与使用
631命令行开发工具
632GUI开发工具
633ADS实用工具
64用ADS生成应用程序
641生成简单应用程序hello
642生成函数库mathlib
643生成一个在目标板上运行的
定时器程序
65RVDS
651RVDS的组件
652RVDS使用概览
66GNU交叉工具链
67本章小结
68习题与思考题
第7章中断、DMA和时间控制
71嵌入式中断控制器
711嵌入式中断控制器工作
原理
712向量中断与非向量中断的
入口程序编程示例
713嵌入式中断应用程序
举例
72嵌入式DMA控制器
721S3C44B0X的DMA控制器
722S3C44B0X的DMAC相关
控制寄存器
723S3C44B0X的DMA应用程序
举例
73时钟电源管理器、实时时钟和脉宽
调制定时器
731S3C44B0X的时钟电源
管理器
732S3C2410X的实时时钟
733实时时钟应用程序概要
设计案例
734S3C44B0X的脉宽调制
定时器
74本章小结
75习题与思考题
第8章嵌入式存储器和接口技术
81嵌入式系统常用的半导体
存储器
811闪速存储器
812静态存储器和同步动态
存储器
82常用的嵌入式系统总线
821I2C总线
822SPI总线接口
823CAN总线
824工业以太网
825PC104总线
83常用的嵌入式系统接口
831UART接口
832通用输入通出接口
833USB
834以太网接口
84嵌入式系统常用的外部设备
841键盘
842液晶显示器
843触摸屏
844无线接入技术
85本章小结
86习题和思考题
第9章嵌入式操作系统概论
91实时系统
911什么是实时系统
912实时系统的属性和指标
913实时系统的分类
92嵌入式操作系统的特点和分类
921嵌入式操作系统的特点
922嵌入式操作系统分类
93RTOS常用的调度算法
931基于优先级的调度算法
932时钟驱动调度算法
933基于比例共享的调度
算法
934非周期性任务的调度
935临界资源和代码临界区
936优先级反转和对策
94启动程序Bootloader*
941嵌入式系统的启动方式
942Bootloader的程序结构与
调试
943Bootloader人机交互接口
设计
944常用Bootloader介绍
95嵌入式操作系统μC/OSII
951μC/OSII的主要特点
952μC/OSII的层次
953μC/OSII的代码结构
954μC/OSII的内核
955μC/OSII的任务调度
956μC/OSII的任务切换
957μC/OSII的中断处理
958μC/OSII的时间管理
959μC/OSII的任务间通信
9510μC/OSII的存储管理
9511μC/OSII的移植
96本章小结
97习题和思考题
附录术语和缩略语表
参考文献