描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121294921丛书名: 嵌入式技术与应用丛书
目 录
第1章 绪论 1
1.1 嵌入式系统概述 1
1.1.1 什么是嵌入式系统 1
1.1.2 嵌入式系统的组成 2
1.1.3 嵌入式系统的发展 5
1.1.4 嵌入式系统的应用 7
1.2 嵌入式处理器 9
1.2.1 嵌入式微处理器 9
1.2.2 嵌入式微控制器 10
1.2.3 嵌入式数字信号处理器 10
1.2.4 嵌入式片上系统 11
1.3 嵌入式操作系统 11
1.3.1 嵌入式操作系统概述 11
1.3.2 嵌入式操作系统的特点 12
1.3.3 嵌入式实时操作系统 12
1.3.4 常见的嵌入式操作系统 13
1.4 嵌入式技术知识结构 17
1.5 嵌入式工程师成长之路 18
第2章 ARM体系结构 21
2.1 ARM简介 21
2.1.1 ARM公司简介 21
2.1.2 ARM技术特征 22
2.2 ARM处理器架构 22
2.3 ARM处理器内核 26
2.3.1 Classic处理器 26
2.3.2 Cortex-M系列 29
2.3.3 Cortex-R系列 32
2.3.4 Cortex-A系列 33
2.3.5 SecurCore处理器 38
2.3.6 ARM微处理器的应用选型 39
2.4 Cortex-A8处理器编程模型 39
2.4.1 Cortex-A8内核结构 40
2.4.2 Jazelle扩展体系结构 42
2.4.3 TrustZone安全扩展体系结构 42
2.4.4 高级SIMD体系结构 43
2.4.5 VFPv3体系结构 43
2.4.6 处理器状态 43
2.4.7 数据类型 44
2.4.8 存储器格式 44
2.4.9 存储器系统地址 45
2.4.10 处理器工作模式 46
2.4.11 寄存器组 47
2.4.12 异常 52
2.4.13 安全扩展 57
2.4.14 系统控制协处理器 59
2.5 Cortex-A8存储管理模型 60
2.5.1 高速缓冲存储器(Cache) 62
2.5.2 虚拟内存 62
2.5.3 页表缓存TLB 65
2.5.4 存储属性 67
2.5.5 页表的使用 68
2.5.6 存储顺序 69
2.6 Cortex-A8处理器时钟系统 71
2.7 Cortex-A8处理器复位系统 73
2.9 Cortex-A8处理器功耗控制 75
2.10 流水线 79
2.10.1 流水线的概念和原理 79
2.10.2 流水线的分类 79
2.10.3 影响流水线性能的因素 81
第3章 硬件平台详解 83
3.1 S5PV210处理器概述 83
3.2 S5PV210系列芯片的结构框图 83
3.3 S5PV210系列芯片的特性 85
3.3.1 微处理器 86
3.3.2 存储器子系统 87
3.3.3 多媒体 88
3.3.4 音频子系统 90
3.3.5 安全子系统 90
3.3.6 接口 90
3.3.7 系统外设 92
3.3.8 AMBA总线 93
3.3.9 S5PV210和S3C6410的比较 95
3.4 S5PV210系列芯片的应用领域 96
3.5 S5PV210芯片的封装和引脚 96
3.6 开发板硬件设计说明(核心板) 102
3.6.1 S5PV210(SYS&Connectivity)/Boot Option 102
3.6.2 S5PV210(DDR2&SROM Memory) 107
3.6.3 S5PV210(Media) 109
3.6.4 S5PV210(Gen Power) 113
3.6.5 DDR2(1 Gbit×4)XM1 118
3.6.6 系统电源 125
3.6.7 复位电路 128
3.6.8 系统时钟电路 128
3.6.9 JTAG接口电路 129
3.6.10 NANDFlash芯片模块 130
3.6.11 音频输入与输出电路 133
3.6.12 网络驱动芯片模块 134
3.7 开发板硬件设计说明(底板) 137
3.7.1 板对板接口 137
3.7.2 电源 137
3.7.3 SDIO-GPIO电路、按键电路 137
3.7.4 蜂鸣器电路 141
3.7.5 串口电路 141
3.7.6 G-Sensor 142
3.7.7 EEPROM芯片 143
3.7.8 Ethernet 143
3.7.9 SD卡 144
3.7.10 Audio 144
3.7.11 HDMI接口 145
3.7.12 USB接口 146
2.7.13 LCD接口 146
3.7.14 MIPI-DSI接口 149
3.7.15 摄像头接口 149
第4章 ARM处理器的指令系统 151
4.1 寻址方式 151
4.2 ARM指令集 154
4.2.1 指令格式 154
4.2.2 跳转指令 158
4.2.3 数据处理指令 161
4.2.4 程序状态寄存器传输指令 170
4.2.5 Load/Store指令 172
4.2.6 异常中断产生指令 178
4.2.7 协处理器指令 180
4.2.8 指令速查表 182
4.3 Thumb指令集 193
4.3.1 Thumb指令集 193
4.3.2 Thumb-2指令集 194
4.3.3 ThumbEE指令集 195
4.4 ARM伪指令 195
4.5 ARM伪操作 198
4.5.1 符号定义伪操作 199
4.5.2 数据定义伪操作 200
4.5.3 符号定义伪操作 203
4.5.4 杂项伪操作 205
4.5.5 GNU ARM汇编伪操作 209
4.6 汇编程序设计 213
4.6.1 汇编语言的语句格式 213
4.6.2 汇编语言的程序结构 219
4.7 C语言与汇编混合编程 220
4.7.1 ATPCS介绍 220
4.7.2 内嵌汇编 222
4.7.3 ARM中的汇编和C语言相互调用 227
第5章 开发环境详解 231
5.1 安装并配置Fedora15 231
5.2 安装交叉编译器 231
5.3 使用MiniTools烧写裸机程序 233
5.3.1 什么是MiniTools 233
5.3.2 安装MiniTools工具 233
5.3.3 如何使用MiniTools烧写裸机程序 234
5.4 跟我一起写Makefile 236
5.4.1 Makefile的组成结构 236
5.4.2 Makefile详解 241
5.4.3 书写规则 243
5.4.4 书写命令 249
5.4.5 使用变量 252
5.4.6 使用条件判断 258
5.4.7 使用函数 261
5.4.8 make的运行 267
5.4.9 隐含规则 271
5.4.10 使用make更新函数库文件 279
5.5 系统引导程序综述 280
5.5.1 系统引导程序含义 280
5.5.2 系统引导程序的功能 281
5.5.3 BootLoader的操作模式 281
5.5.4 BootLoader的启动 282
5.5.5 几个流行的BootLoader 282
5.5.6 U-Boot分析 285
5.5.7 移植U-Boot到开发板 286
第6章 GPIO端口 289
6.1 GPIO原理分析 289
6.1.1 GPIO类型 290
6.1.2 GPIO特性 290
6.1.3 端口功能定义 291
6.1.4 GPIO寄存器 301
6.1.5 I/O操作步骤 303
6.2 点亮LED 303
6.2.1 原理图 303
6.2.2 汇编点亮LED 303
6.2.3 C语言点亮LED 308
6.3 控制蜂鸣器 311
6.3.1 原理图 311
6.3.2 程序相关讲解 311
6.3.3 编译代码和烧写运行 313
6.3.4 实验现象 313
6.4 查询方式检测按键 313
6.4.1 原理图 313
6.4.2 程序相关讲解 314
6.4.3 编译代码和烧写运行 315
6.4.4 实验现象 316
第7章 存储器管理 317
7.1 存储器概述 317
7.1.1 存储器组织结构 317
7.1.2 随机存储器和只读存储器 317
7.2 S5PV210的存储系统 320
7.2.1 S5PV210的虚拟内存映射 320
7.2.2 S5PV210微处理器的启动过程 322
7.3 S5PV210的内存控制器 325
7.3.1 DRAM控制器 325
7.3.2 SROM控制器 327
7.3.3 OneNAND控制器 327
7.3.4 NANDFLASH控制器 328
7.4 控制iCache 329
7.4.1 什么是Cache 329
7.4.2 程序相关讲解 329
7.4.3 编译代码和烧写运行 330
7.4.4 编译代码和烧写运行 330
7.5 重定位代码到IRAM 0x4000 330
7.5.1 重定位 330
7.5.2 程序相关讲解 330
7.5.3 编译代码和烧写运行 333
7.5.4 实验现象 333
7.6 重定位代码到DRAM 333
7.6.1 关于DRAM 333
7.6.2 程序相关讲解 335
7.6.3 编译代码和烧写运行 343
7.6.4 实验现象 343
7.7 NANDFlash的读写擦除 34
前 言
经过几十年的发展,嵌入式系统已经在很大程度上改变了人们的工作、生活和娱乐方式。嵌入式系统在工业自动化、国防、交通和航天等很多产业中得到了广泛的应用,并逐步改变着这些产业。在日常生活中,几乎所有带一点“智能”的家电,也都拥有自己的嵌入式系统。
对于嵌入式硬件工程师和嵌入式驱动工程师来说,都需要对硬件有一定的理解。而嵌入式系统的硬件部分,其核心元件是嵌入式处理器,相当于嵌入式系统的“大脑”。进行嵌入式硬件和驱动的开发需要掌握嵌入式微处理器的相关知识。
作为ARM的一个关键转型产品,Cortex-A8备受瞩目,因其可在Android、Linux和WinCE系统之间切换,所以在手机、平板、工控三大领域得到了大量的应用。Cortex-A8设计用来满足需要高性能、高功效、Web连接的市场需求,其中包括智能手机、上网本、机顶盒、数字电视、家庭网络、存储网络(HDD、SSD)、打印机,Cortex-A8处理器还获得了主流EDA和操作系统的支持。紧跟社会需求,本书选择ARM Cortex-A8微处理器进行深入的讲解。
对于一个有志于从事底层系统开发(如改造BootLoader、钻研内核、为新硬件编写驱动程序)的人,特别是一个想从上层软件开发转到底层软件开发的人,必须能看懂电路原理图,能够看懂芯片数据手册,清楚软件是如何和硬件发生作用。同样,对于想从硬件岗位转到软件岗位,想从传统单片机(如51单片机)编程进一步学习“有操作系统的”嵌入式编程的人,需要找到一个学习的切入点,这个切入点就是先掌握各个硬件部分的简单编程,再将它们组合起来构成一个相对复杂的软件系统(如BootLoader),进而编写基于操作系统的驱动程序,后深入钻研操作系统内核。本书会带领读者从分析内核开始,详细地讲解开发板硬件的各模块,告诉读者如何利用数据手册和芯片厂商或第三方资料来设计硬件电路。在讲解各个功能模块时按照由浅入深的顺序,分析每个功能模块时,首先给出概念、讲解原理,然后分析相应的寄存器,后给出代码并对代码进行详细的分析,尤其讲解清楚和原理及寄存器的关系。本书所有的实例都已经经过友善之臂的Smart210开发板进行了验证。
本书的编写更强调解决问题的方法,怎样利用数据手册和芯片原厂或第三方资料来设计硬件电路,怎样分析各个模块的原理和利用寄存器编写程序,这些都需要一定的方法,希望通过本书的学习,读者能够掌握Cortex-A8微处理器的原理及接口技术。
本书特色:
(1)硬件是基础。如果不想只从事纯应用(和硬件没有任何关系)编程,那必须掌握一定的ARM系统与接口等硬件技术,具有分析系统原理和调试解决问题的能力。硬件是基础,其实硬件并没有初学者想象中那么难。ARM处理器原厂或第三方也都会提供完整的硬件参考设计,都是标准化电路及接口,学习者只要突破一种就可以理解多种ARM处理器,就可以消除硬件上的模糊。本书在编写时,详细讲解了开发板的硬件原理图,并从硬件本身去分析各个模块的功能,深入到时序、引脚功能、电平转换和物理现象等。
(2)独特视角。本书是苏嵌多年从事嵌入式社会培训教育经验汇总,从实战的角度全面系统地介绍了苏嵌嵌入式裸机开发和驱动开发领域的培训心得。
(3)强调理论联系实践。每个模块从细节上去分析功能,这样就可以从基本的角度去了解每个模块的工作原理。在了解原理的基础上,针对各个模块又设计了相对应的实例,所有实例都使用友善之臂的Smart210开发板进行验证,具有很强的实用性。
参与本书编写的人员有王恒、林新华、桑元俊、苗新蕊、霍跃华、牛雪峰,本书既可作为高等院校相关专业师生的教学参考书,自学参考书,也可供相关领域的工程技术人员查阅之用,对于普通Cortex-A8嵌入式微处理器爱好者,本书也不失为帮助他们掌握Cortex-A8嵌入式微处理器原理与接口技术的深入浅出的一本读物。
感谢苏嵌教育在本书编写的过程中提供的帮助和支持,感谢友善之臂的开发平台,特别感谢电子工业出版社的编辑在本书出版过程中给予作者的指导和大力支持。
由于本书涉及的知识面广,时间又仓促,限于笔者的水平和经验,疏漏之处在所难免,恳请专家和读者批评指正。
作 者
2016年7月
评论
还没有评论。