标题：零基础学ARM9嵌入式Linux系统开发
图书信息
出版社: 机械工业出版社; 第1版 (2010年10月1日)
平装: 461页
正文语种: 简体中文
开本: 16
ISBN: 7111316711, 9787111316718
条形码: 9787111316718
尺寸: 26 x 18.4 x 1.8 cm
重量: 762 g
内容简介
《零基础学ARM9嵌入式Linux系统开发》以ARM9微处理器为硬件平台，详细讲解了ARM9芯片的硬件结构及软件体系。结合所选的ARM9芯片S3C2410X，阐述了嵌入式系统开发的各个主要环节。详尽讲解了芯片内部的各种资源及相关的外围电路设计与编程方法。在此基础上介绍了嵌入式系统软硬件设计、调试方法，详细介绍了嵌入式系统下驱动程序的开发方法和Linux内核移植的基本知识。详述了S3C2410X开发平台Bootloader、ADS集成开发环境和图形用户界面编辑环境Qt。
《零基础学ARM9嵌入式Linux系统开发》以“立足基本理论、系统全面、由浅入深、实例引导、贴近实用”为宗旨，基于嵌入式系统开发的基本流程，详细讲解基本指令的使用方法及相关技巧，内容翔实、实践性强。另外，《零基础学ARM9嵌入式Linux系统开发》配套光盘给出了书中的实例文件、开发过程的操作录像文件、常用元器件及芯片等丰富的拓展资源，极大地方便了读者自学，动手实践。
《零基础学ARM9嵌入式Linux系统开发》可作为机电控制、信息家电、工业控制、手持仪器、医疗器械、机器人技术等方面嵌入式系统开发与应用的参考书，也可以作为高等院校有关嵌入式系统教学的本科生或研究生教材。
目录
前言
第一篇 入门篇1
第1章 嵌入式系统1
1.1 嵌入式系统简介1
1.1.1 嵌入式系统的特点1
1.1.2 嵌入式系统的应用领域2
1.1.3 嵌入式系统的发展趋势3
1.2 嵌入式系统的组成5
1.2.1 嵌入式平台的硬件结构5
1.2.2 板级支持包和嵌入式系统6
1.2.3 嵌入式系统上的应用程序6
1.3 嵌入式系统中的处理器6
1.3.1 微处理器7
1.3.2 微控制器7
1.3.3 数字信号处理器7
1.3.4 嵌入式片上系统8
1.4 嵌入式系统的一般设计流程和方法8
1.4.1 嵌入式系统的一般设计流程8
1.4.2 嵌入式系统的一般设计方法9
1.5 实践拓展10
1.6 习题11
第2章 ARM微处理器结构12
2.1 ARM公司简介12
2.2 ARM微处理器系列12
2.3 ARM体系结构的版本及命名方法15
2.3.1 ARM体系结构的版本16
2.3.2 ARM体系结构的变种18
2.3.3 ARM/Thumb体系结构的命名格式19
2.4 ARM微处理器模式20
2.5 ARM寄存器介绍21
2.5.1 通用寄存器22
2.5.2 程序状态寄存器23
2.6 ARM体系的异常中断24
2.6.1 ARM中异常中断的种类25
2.6.2 ARM处理器对异常中断的响应过程25
2.6.3 从异常中断处理程序中返回26
2.7 ARM体系中的存储系统26
2.7.1 ARM体系中的存储空间26
2.7.2 ARM体系结构的存储器格式26
2.7.3 非对齐的存储访问操作27
2.7.4 ARM指令预取和自修改代码27
2.8 实践拓展28
2.9 习题29
第3章 ARM微处理器指令系统30
3.1 ARM指令系统简介30
3.1.1 ARM指令的分类30
3.1.2 ARM指令的一般编码格式30
3.1.3 ARM指令的条件码域31
3.2 ARM指令寻址方式32
3.2.1 数据处理指令的操作数的寻址方式32
3.2.2 字及无符号字节的Load/Store指令的寻址方式36
3.2.3 杂类Load/Store指令的寻址方式39
3.2.4 批量Load/Store指令的寻址方式41
3.2.5 协处理器Load/Store指令的寻址方式42
3.3 ARM指令集详解43
3.3.1 跳转指令44
3.3.2 数据处理指令45
3.3.3 乘法指令与乘加指令49
3.3.4 程序状态寄存器访问指令51
3.3.5 加载/存储指令52
3.3.6 批量数据加载/存储指令53
3.3.7 数据交换指令54
3.3.8 移位指令55
3.3.9 协处理器指令56
3.3.10 异常产生指令57
3.4 ARM程序设计示例58
3.5 实践拓展61
3.6 习题63
第二篇 基础篇64
第4章 构建嵌入式开发环境64
4.1 交叉开发环境简介64
4.1.1 交叉开发环境模型65
4.1.2 Linux的常用版本65
4.2 宿主机与目标板的连接方式66
4.2.1 串行通信接口66
4.2.2 以太网接口67
4.2.3 USB接口68
4.2.4 JTAG接口68
4.3 建立主机开发环境69
4.3.1 Fedora的安装69
4.3.2 Minicom的安装配置82
4.3.3 TFTP服务的安装配置85
4.3.4 NFS的安装配置86
4.3.5 建立交叉工具链87
4.4 实践拓展89
4.5 习题90
第5章 S3C2410X硬件结构及功能91
5.1 S3C2410X简介91
5.1.1 S3C2410X处理器91
5.1.2 S3C2410X引脚描述92
5.1.3 S3C2410X内核结构95
5.2 S3C2410X的存储器映射96
5.2.1 存储器的控制寄存器96
5.2.2 Nand Flash及其控制器99
5.3 DMA控制器103
5.3.1 DMA工作原理103
5.3.2 DMA控制器的相关寄存器…105
5.4 时钟和电源管理109
5.4.1 时钟110
5.4.2 电源管理112
5.4.3 专用寄存器114
5.4.4 S3C2410X时钟及电源管理应用117
5.5 中断118
5.5.1 中断控制器专用寄存器119
5.5.2 中断实例122
5.6 输入/输出端口124
5.6.1 端口寄存器及其引脚配置…124
5.6.2 外中断实例133
5.7 定时器135
5.7.1 结构与工作原理135
5.7.2 定时器专用寄存器138
5.7.3 定时器的使用139
5.7.4 定时器应用实例140
5.8 实践拓展141
5.9 习题144
第6章 S3C2410X的外部接口145
6.1 UART接口145
6.1.1 串行口结构和工作原理145
6.1.2 UART专用寄存器149
6.1.3 UART应用实例152
6.2 IIC总线接口153
6.2.1 IIC总线接口的工作模式…154
6.2.2 IIC总线接口的特殊功能寄存器158
6.2.3 IIC应用实例160
6.3 SPI接口162
6.3.1 SPI结构与工作原理163
6.3.2 SPI专用寄存器164
6.3.3 SPI应用方法166
6.3.4 SPI应用实例167
6.4 A/D转换与触摸屏接口169
6.4.1 A/D转换器结构与工作原理170
6.4.2 A/D转换和触摸屏专用寄存器172
6.5 实践拓展174
6.6 习题176
第7章 嵌入式操作系统177
7.1 常见的嵌入式操作系统177
7.2 嵌入式Linux的基本结构和工作原理179
7.2.1 嵌入式Linux的基本结构…179
7.2.2 嵌入式Linux的工作原理…182
7.3 实践拓展183
7.4 习题185
第三篇 提高篇186
第8章 S3C2410X平台Bootloader186
8.1 Bootloader的操作模式186
8.2 Bootloader的启动流程187
8.3 Bootloader之vivi188
8.3.1 vivi的配置与编译189
8.3.2 vivi第一阶段的代码190
8.3.3 vivi第二阶段的代码201
8.4 Bootloader之U-Boot217
8.4.1 U-Boot的主要目录结构218
8.4.2 U-Boot支持的主要功能218
8.4.3 U-Boot的原理分析219
8.4.4 U-Boot在S3C2410上的移植231
8.5 自行开发Bootloader239
8.6 实践拓展239
8.7 习题241
第9章 移植嵌入式操作系统242
9.1 Linux内核242
9.1.1 Linux内核的组成结构243
9.1.2 Linux源码结构244
9.2 移植Linux内核245
9.2.1 给内核打补丁245
9.2.2 配置内核247
9.2.3 编译内核257
9.3 移植根文件系统257
9.3.1 安装Busybox258
9.3.2 配置Busybox259
9.3.3 向Busybox添加新命令…260
9.3.4 编译和安装Busybox262
9.3.5 构造根文件系统262
9.3.6 创建根文件系统映像文件264
9.4 下载内核264
9.4.1 使用U-Boot制作、下载内核264
9.4.2 启动Linux内核266
9.5 使用U-Boot加载根文件系统映像266
9.6 实践拓展267
9.7 习题268
第10章 嵌入式系统的设备管理及驱动269
10.1 Linux设备管理和驱动269
10.1.1 Linux设备的分类269
10.1.2 设备驱动程序的作用269
10.1.3 访问设备的实现270
10.1.4 Linux设备控制方式270
10.2 Linux设备驱动开发流程272
10.2.1 构造和运行模块272
10.2.2 字符设备驱动编写273
10.2.3 字符设备驱动实例276
10.2.4 并发控制278
10.2.5 阻塞与非阻塞 284
10.2.6 select和poll288
10.2.7 中断处理290
10.2.8 内存与I/O操作292
10.3 块设备驱动编写296
10.3.1 块设备的I/O操作特点…296
10.3.2 block_device_operations结构体296
10.3.3 gendisk结构体297
10.3.4 request结构体299
10.3.5 request操作函数302
10.3.6 bio结构体304
10.3.7 注册与注销305
10.3.8 加载与卸载306
10.3.9 打开与释放308
10.3.10 ioctl函数308
10.3.11 I/O请求处理309
10.4 设备驱动实例——RAMDISK驱动312
10.5 实践拓展317
10.6 习题319
第11章 嵌入式Linux C语言开发工具320
11.1 编辑器VIM320
11.1.1 VIM的编辑模式320
11.1.2 VIM的进入与退出322
11.1.3 光标的移动322
11.1.4 删除、撤销和重复323
11.1.5 复制和粘贴324
11.1.6 查找和替换324
11.1.7 帮助系统和网络资源324
11.2 编译器GCC326
11.2.1 GCC的编译流程326
11.2.2 GCC的常用编译选项328
11.2.3 应用实例331
11.3 调试器GDB333
11.3.1 GDB的使用流程335
11.3.2 GdbServer远程调试338
11.4 工程管理Make339
11.4.1 Makefile文件介绍340
11.4.2 Makefile的规则341
11.4.3 Makefile的变量343
11.4.4 Make命令的使用345
11.4.5 使用自动工具生成Makefile346
11.5 集成开发环境Eclipse347
11.5.1 下载和安装Eclipse348
11.5.2 Eclipse的界面348
11.6 实践拓展350
11.7 习题351
第12章 嵌入式C语言开发流程352
12.1 命令行模式下的开发流程352
12.1.1 编写代码352
12.1.2 编译程序354
12.1.3 运行程序355
12.1.4 交叉编译355
12.1.5 编写Makefile 356
12.2 基于Eclipse的开发流程358
12.2.1 新建工程358
12.2.2 编写代码359
12.2.3 编译工程359
12.2.4 运行程序361
12.3 实践拓展362
12.4 习题363
第四篇 精通篇364
第13章 ADS集成开发环境364
13.1 命令行开发工具364
13.1.1 armcc编译器365
13.1.2 armlink的使用方法366
13.1.3 ARM运行时库367
13.1.4 CodeWarrior集成开发环境368
13.1.5 ADS调试器369
13.1.6 实用工具和软件370
13.2 使用ADS创建工程371
13.2.1 建立一个工程371
13.2.2 编译和链接工程374
13.2.3 命令行模式下编译工程…379
13.3 使用AXD调试代码381
13.3.1 打开调试文件381
13.3.2 查看存储器内容382
13.3.3 设置断点383
13.3.4 查看变量值383
13.4 实践拓展385
13.5 习题386
第14章 图形用户界面编辑环境Qt387
14.1 嵌入式系统中的GUI387
14.1.1 MicroWindows387
14.1.2 MiniGUI388
14.1.3 Qt/Embedded388
14.2 MiniGUI编程388
14.2.1 MiniGUI移植390
14.2.2 MiniGUI实例392
14.3 初识Qt/Embedded394
14.3.1 Qt/Embedded的系统要求395
14.3.2 Qt的架构395
14.3.3 窗口系统396
14.4 Qt/Embedded嵌入式图形开发397
14.4.1 建立Qt/Embedded开发环境397
14.4.2 认识Qt/Embedded开发环境399
14.4.3 窗体401
14.4.4 对话框407
14.4.5 外形与感觉411
14.4.6 国际化412
14.5 Qt/Embedded实战演练413
14.5.1 安装Qt/Embedded工具开发包414
14.5.2 交叉编译Qt/Embedded库414
14.5.3 “Hello,World”程序415
14.5.4 发布Qt/Embedded程序到目标板421
14.5.5 添加一个Qt/Embedded应用到QPE 423
14.6 实践拓展 424
14.7 习题 425
第15章 S3C2410X完整开发系统的设计426
15.1 最小系统426
15.2 实验板硬件资源规划426
15.3 实验板硬件电路设计427
15.3.1 电源电路427
15.3.2 复位电路428
15.3.3 调试及下载接口电路429
15.3.4 时钟电路429
15.3.5 微处理器电路430
15.3.6 外部存储器电路433
15.3.7 串行接口电路437
15.3.8 网络接口电路437
15.3.9 USB接口电路439
15.3.10 液晶接口电路440
15.3.11 其他电路441
15.4 PCB的设计方法442
15.5 电路的调试方法444
15.6 软件的移植与开发445
15.6.1 准备交叉编译工具445
15.6.2 vivi的移植447
15.6.3 内核的移植452
15.6.4 根文件系统的移植455
15.6.5 驱动程序的编写457
15.7 实践拓展460
15.8 习题461
参考文献462