《嵌入式Linux应用开发完全手册》韦东山 主编

《嵌入式Linux应用开发完全手册》韦东山 主编
本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识 ¥54.4元 直接购买

《嵌入式Linux应用开发完全手册》

>>>淘宝购买         (>>>领券

# 简介

本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及编程(囊括了常见硬件,?热鏤ART、I*IC、LCD等),U-Boot、Linux内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展串口、网卡、硬盘、SD卡、LCD和USB等),GUI系统的移植(包含两个G UI系统:基于Qtopia和基于X),应用程序调试技术。

本书从最简单的点亮一个LED开始,由浅入深地讲解,使读者最终可以配置、移植、裁剪内核,编写驱动程序,移植GUI系统,掌握整个嵌入式Linux系统的开发方法。

本书由浅入深,循序渐进,适合刚接触嵌入式Linux的初学者学习,也可作为大、中专院校嵌入式相关专业本科生、研究生的教材。

 

# 目录

第1篇 嵌入式Linux开发环境构建篇
第1章 嵌入式Linux开发概述 2
1.1 嵌入式系统介绍 2
1.1.1 嵌入式系统的定义和特点 2
1.1.2 嵌入式技术的发展历史 3
1.2 基于ARM处理器的嵌入式Linux系统 5
1.2.1 ARM处理器介绍 5
1.2.2 在嵌入式系统中选择嵌入式Linux的理由 8
第2章 嵌入式Linux开发环境构建 10
2.1 硬件环境构建 10
2.1.1 主机与目标板结合的交叉开发模式 10
2.1.2 硬件要求 11
2.2 软件环境构建 12
2.2.1 主机Linux操作系统的安装 12
2.2.2 主机Linux操作系统上网络服务的配置与启动 18
2.2.3 在主机Linux操作系统中安装基本的开发环境 23
2.2.4 光盘的内容结构及安装 23
2.2.5 安装交叉编译工具链 25
2.2.6 书中写作风格的约定 28
第3章 嵌入式编程基础知识 29
3.1 交叉编译工具选项说明 29
3.1.1 arm-linux-gcc选项 29
3.1.2 arm-linux-ld选项 38
3.1.3 arm-linux-objcopy选项 41
3.1.4 arm-linux-objdump选项 43
3.1.5 汇编代码、机器码和存储器的关系以及数据的表示 44
3.2 Makefile介绍 45
3.2.1 Makefile规则 45
3.2.2 Makefile文件里的赋值方法 46
3.2.3 Makefile常用函数 46
3.3 常用ARM汇编指令及ATPCS规则 52
3.3.1 本书使用的所有汇编指令 52
3.3.2 ARM-THUMB子程序调用规则ATPCS 55
第4章 Windows、Linux环境下相关工具、命令的使用 58
4.1 Windows环境下的工具介绍 58
4.1.1 代码阅读、编辑工具Source Insight 58
4.1.2 文件传输工具Cuteftp 63
4.1.3 远程登录工具SecureCRT 63
4.1.4 TFTP服务器软件Tftpd32 64
4.2 Linux环境下的工具、命令介绍 65
4.2.1 代码阅读、编辑工具KScope 65
4.2.2 远程登录工具C-kermit 69
4.2.3 编辑命令vi 69
4.2.4 查找命令grep、find命令 71
4.2.5 在线手册查看命令man 72
4.2.6 其他命令:tar、diff、patch 73
第2篇 ARM9嵌入式系统基础实例篇
第5章 GPIO接口 76
5.1 GPIO硬件介绍 76
5.1.1 通过寄存器来操作GPIO引脚 76
5.1.2 怎样使用软件来访问硬件 77
5.2 GPIO操作实例:LED和按键 80
5.2.1 硬件设计 80
5.2.2 程序设计及代码详解 80
5.2.3 实例测试 86
第6章 存储器控制 87
6.1 使用存储控制器访问外设的原理 87
6.1.1 S3C2410/S3C2440的地址空间 87
6.1.2 存储控制器与外设的关系 89
6.1.3 存储控制器的寄存器使用方法 91
6.2 存储控制器操作实例:使用SDRAM 94
6.2.1 代码详解及程序的复制、跳转过程 94
6.2.2 实例测试 97
第7章 内存管理单元MMU 98
7.1 内存管理单元MMU介绍 98
7.1.1 S3C2410/S3C2440 MMU特性 98
7.1.2 S3C2410/S3C2440 MMU地址变换过程 99
7.1.3 内存的访问权限检查 107
7.1.4 TLB的作用 109
7.1.5 Cache的作用 110
7.1.6 S3C2410/S3C2440 MMU、TLB、Cache的控制指令 113
7.2 MMU使用实例:地址映射 113
7.2.1 程序设计 113
7.2.2 代码详解 114
7.2.3 实例测试 124
第8章 NAND Flash控制器 125
8.1 NAND Flash介绍和NAND Flash控制器使用 125
8.1.1 Flash介绍 125
8.1.2 NAND Flash的物理结构 127
8.1.3 NAND Flash访问方法 128
8.1.4 S3C2410/S3C2440 NAND Flash控制器介绍 134
8.2 NAND Flash控制器操作实例:读Flash 135
8.2.1 读NAND Flash的步骤 135
8.2.2 代码详解 137
第9章 中断体系结构 143
9.1 S3C2410/S3C2440中断体系结构 143
9.1.1 ARM体系CPU的7种工作模式 143
9.1.2 S3C2410/S3C2440中断控制器 146
9.1.3 中断控制器寄存器 149
9.2 中断控制器操作实例:外部中断 151
9.2.1 按键中断代码详解 151
9.2.2 实例测试 158
第10章 系统时钟和定时器 159
10.1 时钟体系及各类时钟部件 159
10.1.1 S3C2410/S3C2440时钟体系 159
10.1.2 PWM定时器 161
10.1.3 WATCHDOG定时器 164
10.2 MPLL和定时器操作实例 166
10.2.1 程序设计 166
10.2.2 代码详解 166
10.2.3 实例测试 170
第11章 通用异步收发器UART 171
11.1 UART原理及UART部件使用方法 171
11.1.1 UART原理说明 171
11.1.2 S3C2410/S3C2440 UART的特性 172
11.1.3 S3C2410/S3C2440 UART的使用 173
11.2 UART操作实例 177
11.2.1 代码详解 177
11.2.2 实例测试 180
第12章 I*IC接口 181
12.1 I*IC总线协议及硬件介绍 181
12.1.1 I*IC总线协议 181
12.1.2 S3C2410/S3C2440 I*IC总线控制器 184
12.2 I*IC总线操作实例 187
12.2.1 I*IC接口RTC芯片M41t11的操作方法 187
12.2.2 程序设计 188
12.2.3 设置/读取M41t11的源码详解 188
12.2.4 I*IC实例的连接脚本 195
12.2.5 实例测试 196
第13章 LCD控制器 197
13.1 LCD和LCD控制器 197
13.1.1 LCD显示器 197
13.1.2 S3C2410/S3C2440 LCD控制器介绍 199
13.2 TFT LCD显示实例 210
13.2.1 程序设计 210
13.2.2 代码详解 210
13.2.3 实例测试 221
第14章 ADC和触摸屏接口 222
14.1 ADC和触摸屏硬件介绍及使用 222
14.1.1 S3C2410/S3C2440 ADC和触摸屏接口概述 222
14.1.2 S3C3410/S3C2440 ADC接口的使用方法 224
14.1.3 触摸屏原理及接口 226
14.2 ADC和触摸屏操作实例 230
14.2.1 硬件设计 230
14.2.2 程序设计 230
14.2.3 测试ADC的代码详解 230
14.2.4 测试触摸屏的代码详解 232
14.2.5 实例测试 237
第3篇 嵌入式Linux系统移植篇
第15章 移植U-Boot 240
15.1 Bootloader简介 240
15.1.1 Bootloader的概念 240
15.1.2 Bootloader的结构和启动过程 241
15.1.3 常用Bootloader介绍 246
15.2 U-Boot分析与移植 246
15.2.1 U-Boot工程简介 246
15.2.2 U-Boot源码结构 247
15.2.3 U-Boot的配置、编译、连接过程 249
15.2.4 U-Boot的启动过程源码分析 257
15.2.5 U-Boot的移植 264
15.2.6 U-Boot的常用命令 288
15.2.7 使用U-Boot来执行程序 292
第16章 移植Linux内核 293
16.1 Linux版本及特点 293
16.2 Linux移植准备 294
16.2.1 获取内核源码 294
16.2.2 内核源码结构及Makefile分析 295
16.2.3 内核的Kconfig分析 304
16.2.4 Linux内核配置选项 309
16.3 Linux内核移植 313
16.3.1 Linux内核启动过程概述 313
16.3.2 修改内核以支持S3C2410/S3C2440开发板 314
16.3.3 修改MTD分区 327
16.3.4 移植YAFFS文件系统 330
16.3.5 编译、烧写、启动内核 333
第17章 构建Linux根文件系统 335
17.1 Linux文件系统概述 335
17.1.1 Linux文件系统的特点 335
17.1.2 Linux根文件系统目录结构 336
17.1.3 Linux文件属性介绍 340
17.2 移植Busybox 341
17.2.1 Busybox概述 341
17.2.2 init进程介绍及用户程序启动过程 342
17.2.3 编译/安装Busybox 346
17.3 使用glibc库 350
17.3.1 glibc库的组成 350
17.3.2 安装glibc库 351
17.4 构建根文件系统 352
17.4.1 构建etc目录 352
17.4.2 构建dev目录 354
17.4.3 构建其他目录 356
17.4.4 制作/使用yaffs文件系统映象文件 356
17.4.5 制作/使用jffs2文件系统映象文件 360
第18章 Linux内核调试技术 362
18.1 内核打印函数printk 362
18.1.1 printk的使用 362
18.1.2 串口控制台 364
18.2 内核源码级别的调试方法 366
18.2.1 内核调试工具KGDB的作用与原理 366
18.2.2 给内核添加KGDB功能支持S3C2410/S3C2440 367
18.2.3 结合可视化图形前端DDD和gdb来调试内核 372
18.3 Oops信息及栈回溯 375
18.3.1 Oops信息来源及格式 375
18.3.2 配置内核使Oops信息的栈回溯信息更直观 376
18.3.3 使用Oops信息调试内核的实例 376
18.3.4 使用Oops的栈信息手工进行栈回溯 380
第4篇 嵌入式Linux设备驱动开发篇
第19章 字符设备驱动程序 384
19.1 Linux驱动程序开发概述 384
19.1.1 应用程序、库、内核、驱动程序的关系 384
19.1.2 Linux驱动程序的分类和开发步骤 385
19.1.3 驱动程序的加载和卸载 387
19.2 字符设备驱动程序开发 387
19.2.1 字符设备驱动程序中重要的数据结构和函数 387
19.2.2 LED驱动程序源码分析 389
第20章 Linux异常处理体系结构 396
20.1 Linux异常处理体系结构概述 396
20.1.1 Linux异常处理的层次结构 396
20.1.2 常见的异常 400
20.2 Linux中断处理体系结构 401
20.2.1 中断处理体系结构的初始化 401
20.2.2 用户注册中断处理函数的过程 404
20.2.3 中断的处理过程 406
20.2.4 卸载中断处理函数 409
20.3 使用中断的驱动程序示例 410
20.3.1 按键驱动程序源码分析 410
20.3.2 测试程序情景分析 415
第21章 扩展串口驱动程序移植 419
21.1 串口驱动程序框架概述 419
21.1.1 串口驱动程序术语介绍 419
21.1.2 串口驱动程序的4层结构 420
21.2 扩展串口驱动程序移植 423
21.2.1 串口驱动程序低层代码分析 423
21.2.2 修改代码以支持扩展串口 425
21.2.3 测试扩展串口 429
第22章 网卡驱动程序移植 431
22.1 CS8900A网卡驱动程序移植 431
22.1.1 CS8900A网卡特性 431
22.1.2 CS8900A网卡驱动程序修改 432
22.2 DM9000网卡驱动程序移植 441
22.2.1 DM9000网卡特性 441
22.2.2 DM9000网卡驱动程序修改 442
第23章 IDE接口和SD卡驱动程序移植 450
23.1 IDE接口驱动程序移植 450
23.1.1 IDE接口相关概念介绍 450
23.1.2 IDE接口驱动程序移植 452
23.1.3 IDE接口驱动程序测试 461
23.2 SD卡驱动程序移植 464
23.2.1 SD卡相关概念介绍 464
23.2.2 SD卡驱动程序移植 465
23.2.3 SD卡驱动程序测试 472
23.2.4 磁盘分区表 473
第24章 LCD和USB驱动程序移植 475
24.1 LCD驱动程序移植 475
24.1.1 LCD和USB键盘驱动程序框架 475
24.1.2 S3C2410/S3C2440 LCD控制器驱动程序移植 479
24.2 USB驱动程序移植 489
24.2.1 USB驱动程序概述 489
24.2.2 配置内核支持USB键盘、USB鼠标和USB硬盘 491
24.2.3 USB设备的使用 492
第5篇 嵌入式Linux系统应用开发篇
第25章 嵌入式GUI开发 496
25.1 嵌入式GUI介绍 496
25.1.1 Linux桌面GUI系统的发展 496
25.1.2 嵌入式Linux中的几种GUI 499
25.2 Qtopia移植 501
25.2.1 主机开发环境的搭建 501
25.2.2 交叉编译、安装Qtopia 2.2.0 502
25.2.3 开发自己的Qt GUI程序 514
25.2.4 在主机上使用模拟软件开发、调试嵌入式Qt GUI程序 518
第26章 基于X的GUI开发 524
26.1 X Window概述 524
26.1.1 X协议介绍 524
26.1.2 窗口管理器(Window manager) 526
26.1.3 桌面环境(Desktop environment) 526
26.2 交叉编译工具包Scratchbox 526
26.2.1 Scratchbox介绍 527
26.2.2 安装Scratchbox及编译工具 528
26.2.3 在Scratchbox里安装交叉编译工具链 529
26.2.4 安装其他开发工具 535
26.3 移植X 536
26.3.1 编译软件的基本知识 536
26.3.2 编译X的依赖软件 539
26.3.3 编译Xorg 542
26.4 移植Matchbox 547
26.4.1 下载源代码 548
26.4.2 编译Matchbox 548
26.4.3 运行、试验Matchbox 550
26.5 移植GTK+ 553
26.5.1 GTK+介绍 553
26.5.2 GTK+移植 553
26.6 移植基于GTK+/X的GUI程序 555
26.6.1 xterm移植 556
26.6.2 gtkboard移植 557
26.6.3 裁剪文件系统 560
第27章 Linux应用程序调试技术 564
27.1 使用strace工具跟踪系统调用和信号 564
27.1.1 strace介绍及移植 564
27.1.2 使用strace来调试程序 565
27.2 内存调试工具 568
27.2.1 使用memwatch进行内存调试 568
27.2.2 其他内存工具介绍:mtrace、dmalloc、yamd 571
27.3 段错误的调试方法 573
27.3.1 使用库函数backtrace和backtrace_symbols定位段错误 573
27.3.2 段错误调试实例 574
参考文献 578

小白学理财:黄金理财一课通
小白学理财:精心推荐力哥理财入门一课通
《外贸老鸟之路》(料神)
《深入理解Linux内核第3版》Daniel P.Bovet,Marco Cesati 著
SEO基础视频教程:《跟夫唯老师学群站SEO》入门篇
《鸟哥的Linux私房菜:基础学习篇》鸟哥

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: