商家名称 | 信用等级 | 购买信息 | 订购本书 |
零基础学ARM9嵌入式Linux系统开发 [平装] | |||
零基础学ARM9嵌入式Linux系统开发 [平装] |
《零基础学ARM9嵌入式Linux系统开发》以ARM9微处理器为硬件平台,系统地论述了嵌入式系统开发的设计思想和各个主要环节,深刻诠释了嵌入式系统开发的基本理论、基本方法与实用技巧,内容涉及软硬件两个层面。
前言
第一篇 入门篇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
嵌入式系统是指以应用为核心,以计算机技术为基础,对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。在当前数字信息技术和网络技术高速发展的后Pc时代,嵌入式系统已经广泛地渗透到消费电子、航空航天、汽车电子、医疗保健、网络通信、工业控制等各个领域。ARM已成为嵌入式技术的代名词。正在以不同的形式悄悄地改变着人们的生产、生活方式。随着ARM微处理器和嵌入式技术的不断发展,ARM9处理器已成为嵌入式开发的主流。
从技术层面来说,嵌入式系统实际上是硬软件的有机结合体。因此,一个优秀的嵌入式系统设计人员常常需要具备硬件和软件两个方面的知识。故本书在写作思路上兼顾硬件和软件两个方面的知识,以使不同需求的读者都能在本书中找到适合于自身开发设计的灵感和处理问题的方式方法。
本书以频率高达220MHz的ARM9微处理器为平台,详细介绍了嵌入式系统开发的各个主要环节。在讲述原理的同时,从功能需求入手,辅以代码分析,详尽地讲解了嵌入式系统开发的各种技术,内容涵盖了硬软件两个层面。每一章内容都独立成为一个主题,向读者较全面地展现了嵌入式系统开发的全部过程。本书特点
本书以“立足基本理论、系统全面、由浅入深、实例引导、贴近实用”为宗旨,基于嵌入式系统开发的基本流程,详细讲解各种指令的使用方法及相关技巧,内容翔实、实践性强。内容特点如下。
1.零点起航
本书是一本从入门到精通的开发教程,特别适合于想以ARM9进行嵌入式系统学习和设计的初学者学习和阅读。通过阅读本书使读者能够很快掌握ARM9嵌入式系统开发的一般步骤和方法。
2.结构合理,深人浅出内容编排上遵循了读者学习的一般规律,便于短时间内掌握ARM嵌入式系统开发的基本方法和一般步骤。通过深入浅出的讲解,使原本枯燥的内容变得生动有趣、易于消化吸收、便于举一反三。
插图:
(1)消费类电子应用领域
嵌入式系统在消费类电子产品领域的发展最为迅速,并且在此领域中的嵌入式处理器的需求量也最大。例如,机顶盒、DVD、喷墨打印机、数码相机、激光打印机、数字录像机和各种视频/图像处理卡等。此外,还包括可视电话,具有FM、MP3/MP4、摄像头、数据存储卡、K.JAVA、小额账户银行业务、定位等功能的手机,智能手机/PDA,具有蓝牙功能的外围设备等。也包括白色商品(如洗衣机、冰箱、冰柜、空调、电熨斗及微波炉、洗碗机等)和棕色货物(如电视、录音机、音响等外壳为棕色的电子产品)等。
(2)智能仪器、仪表应用领域
这类产品一般都有一个应用处理器和一个运算处理器,完成一定的数据采集、分析、存储、打印、显示等功能。它们主要是开发人员在实验室里的必备工具,如网络分析仪、数字示波器、热成像仪等。通过它们的使用,开发人员的工作效率得到了极大的提高。
(3)通信信息应用领域
主要包括无线通信的各种基站,第2代和第3代通信终端GSM手机和3G手机,在民用市场应用较多的网络通信设备路由器、交换机,以及车载通信系统终端全球卫星定位系统GPs等。基于网络应用的无线局域网、IP电话、VOIP、数字调制解调器和网卡等。目前,市场发展最快的就是远程监控系统中应用的嵌入式系统了。
(4)自动化领域
在汽车市场上主要包括ABS(制动放抱死系统)、:Body&Dashboard(将汽车运行时各个部分的运行状态反映在汽车表盘上的汽车表盘系统)、Infotainment(汽车信息娱乐)、Power-train(汽车引擎控制系统)和汽车发动机控制器ECU等;在工业控制领域中的工业过程控制、电力系统及其安全区、数控机床等。
喜欢零基础学ARM9嵌入式Linux系统开发 [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务