《嵌入式系统基础教程(第2版)》全面介绍了嵌入式系统的基本理论和知识,教学重点是基于ARM处理器的嵌入式硬件平台。本书的主要内容包括:嵌入式系统的基本概念、嵌入式微处理器技术、ARM处理器体系结构、嵌入式调试技术、ARM处理器指令系统、嵌入式开发工具、嵌入式外设控制器、嵌入式存储器和接口技术、嵌入式操作系统等知识。
目录
- 前言
- 第1章嵌入式系统概论1
- 1.1概述1
- 1.1.1嵌入式系统的定义1
- 1.1.2后PC时代与无所不在的计算时代1
- 1.2嵌入式系统发展简史2
- 1.2.1微处理器的发展2
- 1.2.2嵌入式系统的发展阶段3
- 1.3嵌入式系统的特点4
- 1.4嵌入式系统的基本分类5
- 1.5嵌入式系统举例5
- 1.5.1低端嵌入式系统5
- 1.5.2中端嵌入式系统7
- 1.5.3高端嵌入式系统9
- 1.6嵌入式系统的基本组成11
- 1.6.1嵌入式系统的硬件组成12
- 1.6.2嵌入式系统的软件组成13
- 1.7嵌入式系统的现状与发展趋势14
- 1.7.1嵌入式系统的现状及主要制约因素14
- 1.7.2嵌入式系统的发展方向15
- 1.8嵌入式系统的相关研究领域15
- 1.8.1嵌入式系统的主干学科领域15
- 1.8.2与嵌入式系统密切关联的科学技术领域15
- 1.9本章小结18
- 1.10习题和思考题19
- 第2章嵌入式微处理器技术20
- 2.1嵌入式处理器基本分类20
- 2.1.1通用型嵌入式微处理器20
- 2.1.2微控制器22
- 2.1.3嵌入式DSP处理器23
- 2.1.4可编程片上系统23
- 2.1.5嵌入式双核/多核处理器24
- 2.1.6可扩展处理平台26
- 2.2嵌入式微处理器的典型技术27
- 2.2.1I/O端口统一编址与特殊功能寄存器27
- 2.2.2哈佛结构29
- 2.2.3桶型移位器31
- 2.2.4正交指令集32
- 2.2.5双密度指令集33
- 2.2.6看门狗定时器33
- 2.2.7边界对准与端序35
- 2.2.8地址重映射36
- 2.2.9FIFO缓冲寄存器37
- 2.2.10主存控制器38
- 2.3主流嵌入式微处理器39
- 2.3.1MIPS RISC嵌入式微处理器39
- 2.3.2PowerPC系列嵌入式微处理器41
- 2.3.3飞思卡尔公司的系列嵌入式微控制器42
- 2.3.4凌动系列嵌入式微处理器43
- 2.3.5ARM系列嵌入式微处理器45
- 2.4本章小结46
- 2.5习题和思考题46
- 第3章ARM处理器体系结构47
- 3.1概述47
- 3.1.1ARM体系结构的版本47
- 3.1.2ARM体系结构版本的变种48
- 3.1.3ARM体系结构版本的命名规则48
- 3.1.4ARM处理器核系列49
- 3.2ARM处理器的结构52
- 3.2.1ARM处理器的RISC特征52
- 3.2.2流水线53
- 3.2.3ARM的工作模式和工作状态57
- 3.2.4ARM寄存器的组织59
- 3.3ARM Cortex处理器62
- 3.3.1ARM Cortex-M3内核62
- 3.3.2采用Cortex-M3核生产的微控制器66
- 3.3.3ARM Cortex-A8内核66
- 3.3.4ARM Cortex-A9内核67
- 3.3.5采用Cortex-A9内核生产的应用处理器69
- 3.4ARM存储器的组织70
- 3.4.1ARM存储器的数据类型和存储格式70
- 3.4.2ARM的存储体系70
- 3.4.3片内存储器的用法71
- 3.4.4协处理器CP1571
- 3.4.5存储管理单元72
- 3.4.6保护单元78
- 3.4.7ARM处理器的Cache80
- 3.4.8快速上下文切换扩展82
- 3.4.9写缓存区83
- 3.5ARM处理器的片上总线规范AMBA84
- 3.5.1AMBA 2.0片上总线的特点84
- 3.5.2AMBA 2.0片上总线的主控单元和从动单元85
- 3.5.3AMBA 2.0总线的时序85
- 3.5.4AMBA 3.0——AXI协议86
- 3.6ARM处理器核的典型范例:ARM7TDMI86
- 3.6.1复位87
- 3.6.2总线周期87
- 3.6.3ARM7TDMI处理器的总线优先级90
- 3.7ARM的异常中断处理90
- 3.7.1ARM的异常中断响应过程90
- 3.7.2从异常中断处理程序返回92
- 3.8本章小结94
- 3.9习题和思考题94
- 第4章嵌入式系统调试技术95
- 4.1嵌入式硬件调试结构和调试技术95
- 4.1.1与通用计算机调试结构的比较96
- 4.1.2调试信道96
- 4.1.3ROM仿真器97
- 4.1.4实时在线仿真97
- 4.2指令集模拟器97
- 4.2.1ARMulator98
- 4.2.2SkyEye98
- 4.3片上调试技术99
- 4.3.1背景调试模式99
- 4.3.2边界扫描测试技术和JTAG接口100
- 4.3.3ARM7TDMI核中的JTAG扫描链104
- 4.3.4嵌入式ICE-RT模块105
- 4.3.5JTAG的断点设置原理106
- 4.3.6Nexus调试标准107
- 4.4嵌入追踪宏单元ETM108
- 4.5基于Angel的调试方案109
- 4.5.1Angel调试系统的组成109
- 4.5.2Angel的两种版本109
- 4.5.3Angel的调试处理流程和调试操作步骤110
- 4.6半主机调试方式110
- 4.7本章小结112
- 4.8习题和思考题112
- 第5章ARM处理器指令集113
- 5.1ARM处理器的指令系统113
- 5.1.1ARM处理器指令系统的主要特征113
- 5.1.2ARM与x86指令系统的比较114
- 5.2ARM指令集的编码格式和语法114
- 5.2.1ARM指令集的编码格式114
- 5.2.2ARM指令的一般语法格式114
- 5.2.3ARM指令的执行条件114
- 5.2.4第2操作数<Operand2>说明116
- 5.3ARM处理器的寻址方式117
- 5.4ARM指令的分类说明121
- 5.4.1分支指令122
- 5.4.2Load/Store指令123
- 5.4.3数据处理指令127
- 5.4.4乘法指令128
- 5.4.5前导零计数指令129
- 5.4.6程序状态寄存器指令129
- 5.4.7协处理器指令130
- 5.4.8异常中断指令131
- 5.4.9ARM伪指令131
- 5.5本章小结133
- 5.6习题和思考题134
- 第6章ARM汇编语言程序设计135
- 6.1概述135
- 6.1.1预定义寄存器名及内部变量名135
- 6.1.2ARM汇编语言程序的语句格式136
- 6.1.3ARM汇编语言程序编写规范139
- 6.2ARM汇编语言指示符139
- 6.2.1AREA140
- 6.2.2ENTRY141
- 6.2.3CODE16、CODE32、THUMB和ARM141
- 6.2.4EQU142
- 6.2.5END142
- 6.2.6ALIGN142
- 6.2.7DCB143
- 6.2.8MAP144
- 6.2.9FIELD144
- 6.2.10SPACE144
- 6.2.11DCD和DCDU145
- 6.2.12GBLA、GBLL及GBLS146
- 6.2.13LCLA、LCLL及LCLS147
- 6.2.14SETA、SETL及SETS147
- 6.2.15其他指示符的简单功能描述147
- 6.3ARM汇编语言指示符的编程举例149
- 6.3.1条件分支指示符149
- 6.3.2ASCII字符串比较149
- 6.3.3宏定义指示符151
- 6.4ARM过程调用标准ATPCS和AAPCS153
- 6.4.1寄存器的使用规则153
- 6.4.2堆栈使用规则153
- 6.4.3参数传递规则154
- 6.5典型ARM汇编语言程序举例154
- 6.5.1入门范例154
- 6.5.2基本结构156
- 6.5.3典型的ARM汇编程序范例159
- 6.5.45级流水线的互锁问题165
- 6.6ARM内嵌汇编166
- 6.6.1内嵌汇编的指令用法167
- 6.6.2内嵌汇编器与armasm汇编器的区别167
- 6.7C/C++与汇编程序的相互调用168
- 6.7.1C/C++程序调用汇编程序169
- 6.7.2汇编程序调用C程序169
- 6.7.3汇编程序调用C++程序170
- 6.7.4C程序调用C++程序172
- 6.8软中断和半主机方式ARM汇编程序设计173
- 6.9GNU格式的ARM汇编语言程序设计177
- 6.9.1GNU格式ARM汇编语言程序的设计要点177
- 6.9.2GNU格式ARM汇编语言程序举例178
- 6.10本章小结179
- 6.11习题和思考题179
- 第7章嵌入式系统开发工具181
- 7.1概述181
- 7.1.1开发ARM嵌入式系统的硬件结构181
- 7.1.2开发工具的基本分类和主要品种181
- 7.1.3集成开发环境183
- 7.1.4CodeWarrior集成开发环境184
- 7.2ARM开发工具概述185
- 7.3ARM映像文件格式186
- 7.3.1ELF文件格式186
- 7.3.2ARM映像文件的组成188
- 7.4ADS的组成与使用196
- 7.4.1命令行开发工具196
- 7.4.2GUI开发工具200
- 7.4.3ADS实用工具202
- 7.5用ADS生成应用程序203
- 7.5.1生成简单应用程序hello203
- 7.5.2生成函数库mathlib206
- 7.5.3生成一个在目标板上运行的定时器程序207
- 7.6RVDS209
- 7.6.1RVDS的组件210
- 7.6.2RVDS使用概览211
- 7.6.3开中断关中断的内嵌ARM汇编函数212
- 7.7GNU交叉工具链214
- 7.8本章小结214
- 7.9习题和思考题214
- 第8章嵌入式外设控制器216
- 8.1嵌入式中断控制器216
- 8.1.1嵌入式中断控制器工作原理216
- 8.1.2ARM Cortex-M3嵌套向量中断控制器222
- 8.2向量中断与非向量中断的入口程序编程示例225
- 8.3嵌入式中断应用程序举例228
- 8.4嵌入式DMA控制器232
- 8.4.1S3C44B0X的DMA控制器232
- 8.4.2S3C44B0X的DMAC相关控制寄存器234
- 8.4.3S3C44B0X的DMA应用程序举例235
- 8.5时钟电源管理器、实时时钟和脉宽调制定时器237
- 8.5.1S3C44B0X的时钟电源管理器238
- 8.5.2S3C2410X的实时时钟240
- 8.5.3实时时钟应用程序概要设计案例241
- 8.5.4S3C44B0X的脉宽调制定时器244
- 8.6本章小结245
- 8.7习题和思考题245
- 第9章嵌入式存储器和接口技术247
- 9.1嵌入式系统常用的半导体存储器247
- 9.1.1闪速存储器247
- 9.1.2静态存储器和同步动态存储器258
- 9.2常用的嵌入式系统总线265
- 9.2.1I2C总线266
- 9.2.2SPI总线接口268
- 9.2.3CAN总线269
- 9.3常用的嵌入式系统接口271
- 9.3.1UART接口271
- 9.3.2通用输入输出接口277
- 9.3.3以太网接口278
- 9.4嵌入式系统常用的外部设备285
- 9.4.1键盘285
- 9.4.2液晶显示器288
- 9.4.3触摸屏291
- 9.5本章小结297
- 9.6习题和思考题297
- 参考文献298