新書推薦:
《
UE5虚幻引擎必修课(视频教学版)
》
售價:HK$
110.9
《
真需求
》
售價:HK$
110.9
《
阿勒泰的春天
》
售價:HK$
50.4
《
如见你
》
售價:HK$
51.3
《
人格阴影 全新修订版,更正旧版多处问题。国际分析心理学协会(IAAP)主席力作
》
售價:HK$
67.0
《
560种野菜野果鉴别与食用手册
》
售價:HK$
67.1
《
中国官僚政治研究(一部洞悉中国政治制度演变的经典之作)
》
售價:HK$
62.7
《
锂电储能产品设计及案例详解
》
售價:HK$
110.9
|
編輯推薦: |
选择主流芯片,立足硬件原理,强调理论联系实践,引领读者掌握Cortex-A8的开发。
|
內容簡介: |
本书从开发角度出发,以Smart210开发板为开发平台,将Cortex-A8处理器体系结构、开发板硬件原理、指令系统、开发环境和各功能模块的原理及应用娓娓道来,不仅让读者知其然,更要让读者知其所以然,并让这些知识再反作用于实践。揭开嵌入式Linux C系统开发背后鲜为人知的秘密,具体说来,全书主要讨论了包括嵌入式C语言高级编程、嵌入式开发中经典数据结构与算法、嵌入式Linux系统编程、多任务解决机制,网络编程以及嵌入式数据库开发等多个方面的话题。
|
關於作者: |
王恒,女,硕士,讲师,毕业于河海大学通信与信息系统专业,现任职于南京航空航天大学金城学院,单人苏嵌的嵌入式系统培训讲师,具有丰富的教学和科研经验。
|
目錄:
|
目 录
第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 页表缓存TLB65
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 S5PV210SYS&ConnectivityBoot Option102
3.6.2 S5PV210DDR2&SROM Memory107
3.6.3 S5PV210Media109
3.6.4 S5PV210Gen Power113
3.6.5 DDR21 Gbit×4XM1118
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-Sensor142
3.7.7 EEPROM芯片143
3.7.8 Ethernet143
3.7.9 SD卡144
3.7.10 Audio144
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 LoadStore指令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 安装并配置Fedora15231
5.2 安装交叉编译器231
5.3 使用MiniTools烧写裸机程序233
5.3.1 什么是MiniTools233
5.3.2 安装MiniTools工具233
5.3.3 如何使用MiniTools烧写裸机程序234
5.4 跟我一起写Makefile236
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 几个流行的BootLoader282
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 IO操作步骤303
6.2 点亮LED303
6.2.1 原理图303
6.2.2 汇编点亮LED303
6.2.3 C语言点亮LED308
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 控制iCache329
7.4.1 什么是Cache329
7.4.2 程序相关讲解329
7.4.3 编译代码和烧写运行330
7.4.4 编译代码和烧写运行330
7.5 重定位代码到IRAM+0x4000330
7.5.1 重定位330
7.5.2 程序相关讲解330
7.5.3 编译代码和烧写运行333
7.5.4 实验现象333
7.6 重定位代码到DRAM333
7.6.1 关于DRAM333
7.6.2 程序相关讲解335
7.6.3 编译代码和烧写运行343
7.6.4 实验现象343
7.7 NANDFlash的读写擦除343
7.7.1 关于NANDFlash343
7.7.2 程序相关讲解348
7.7.3 编译代码和烧写运行359
7.7.4 实验现象359
第8章 中断机制361
8.1 中断的基本概念361
8.1.1 中断的概念361
8.1.2 中断源、中断信号和中断向量362
8.1.3 中断优先级364
8.1.4 中断操作366
8.2 S5PV210的中断系统366
8.2.1 向量中断控制器366
8.2.2 S5PV210的中断源367
8.2.3 中断相关寄存器370
8.3 中断编程示例377
8.3.1 程序相关讲解378
8.3.2 编译代码和烧写运行381
8.3.3 实验现象381
第9章 系统时钟和定时器383
9.1 系统时钟383
9.1.1 时钟域383
9.1.2 时钟声明384
9.1.3 时钟关系385
9.1.4 时钟的产生386
9.1.5 时钟配置过程389
9.1.6 系统时钟相关寄存器389
9.1.7 系统时钟示例395
9.2 PWM定时器398
9.2.1 PWM定时器概述398
9.2.2 PWM定时器特点399
9.2.3 PWM定时器的操作399
9.2.4 PWM定时器相关寄存器403
9.2.5 PWM定时器编程示例406
9.3 看门狗定时器408
9.3.1 看门狗定时器概述408
9.3.2 看门狗定时器相关寄存器409
9.3.3 看门狗定时器编程示例1410
9.3.4 看门狗定时器编程示例2412
9.4 RTC实时时钟415
9.4.1 RTC实时时钟概述415
9.4.2 RTC相关寄存器416
9.4.3 RTC编程示例418
第10章 串行通信接口423
10.1 串行通信概述423
10.1.1 通信的概念423
10.1.2 通信的分类423
10.1.3 串行通信和并行通信424
10.1.4 同步通信和异步通信425
10.2 UART接口425
10.2.1 基本术语425
10.2.2 异步串行通信协议426
10.2.3 S5PV210的UART接口430
10.2.4 S5PV210的UART相关寄存器434
10.2.5 UART编程示例1441
10.2.6 UART编程示例2445
10.3 IIC接口448
10.3.1 IIC总线接口概述448
10.3.2 S5PV210的I2C接口449
10.3.3 S5PV210的IIC相关寄存器454
10.4 SPI接口457
10.4.1 SPI接口概述457
10.4.2 S5PV210的SPI操作458
10.4.3 S5PV210的SPI相关寄存器461
10.4.4 特殊功能寄存器的设置顺序466
第11章 人机接口技术467
11.1 LCD接口467
11.1.1 LCD概述467
11.1.2 S5PV210的LCD控制器469
11.1.3 S5PV210的LCD相关寄存器497
11.1.4 LCD示例1503
11.1.5 LCD示例2508
11.2 IIS多音频接口510
11.2.1 概述510
11.2.2 S5PV210的IIS相关寄存器516
11.2.3 示例1520
11.2.4 示例2523
11.3 ADC和
|
內容試閱:
|
前 言
经过几十年的发展,嵌入式系统已经在很大程度上改变了人们的工作、生活和娱乐方式。嵌入式系统在工业自动化、国防、交通和航天等很多产业中得到了广泛的应用,并逐步改变着这些产业。在日常生活中,几乎所有带一点智能的家电,也都拥有自己的嵌入式系统。
对于嵌入式硬件工程师和嵌入式驱动工程师来说,都需要对硬件有一定的理解。而嵌入式系统的硬件部分,其核心元件是嵌入式处理器,相当于嵌入式系统的大脑。进行嵌入式硬件和驱动的开发需要掌握嵌入式微处理器的相关知识。
作为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月
|
|