《基于ARM9嵌入式Linux系统开发原理与实践》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:马小陆主编
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2011
  • ISBN:9787560625003
  • 页数:358 页
图书介绍:本书从嵌入式Linux系统入门必备知识点、嵌入式Linux系统的构建、驱动程序开发和应用程序设计几方面介绍了嵌入式Linux的基本知识、相关原理和时间,怎样构建嵌入式Linux系统相关原理和实践,驱动程序开发和应用程序设计的原理和实践。

第一篇 基础篇 3

第1章 嵌入式系统概述 3

1.1 嵌入式系统 3

1.1.1 嵌入式系统的定义 3

1.1.2 嵌入式系统组成 3

1.1.3 嵌入式系统的特点 5

1.1.4 嵌入式系统的应用 6

1.2 嵌入式操作系统 7

1.2.1 嵌入式操作系统分类 8

1.2.2 当前主流的嵌入式操作系统 9

1.3 嵌入式Linux操作系统 9

1.3.1 Linux简介 9

1.3.2 嵌入式Linux操作系统 11

1.3.3 嵌入式Linux操作系统的优势 11

1.4 嵌入式Linux开发环境 12

1.5 嵌入式Linux系统开发要点 13

本章小结 14

第2章 初识Linux 15

2.1 安装发行版Linux操作系统 15

2.1.1 安装虚拟机VMware 15

2.1.2 在虚拟机VMware中安装RedHat Linux 9.0操作系统 16

2.1.3 安装VMware Tools 20

2.2 Linux的目录结构 22

2.3 Linux的文件属性 23

2.4 Linux的文件类型 23

2.5 Shell 25

2.5.1 Shell简介 25

2.5.2 常用Shell命令 26

2.6 Shell编程基础 32

2.6.1 建立和运行Shell程序 32

2.6.2 Shell中的变量 32

2.6.3 Shell中引号的使用方法 36

2.6.4 Shell中的test命令 37

2.6.5 条件语句 39

2.6.6 循环语句 40

2.6.7 Shell中的函数 44

本章小结 45

第3章 Linux编程环境 46

3.1 编辑器vi 46

3.1.1 vi简介 46

3.1.2 vi用法 47

3.1.3 vi使用实例分析 48

3.2 编译器gcc 50

3.2.1 gcc简介 50

3.2.2 gcc的执行过程 50

3.2.3 gcc的基本用法和选项 53

3.2.4 gcc编译实例 54

3.3 调试器GDB 55

3.3.1 GDB简介 55

3.3.2 GDB常用命令 55

3.3.3 GDB使用实例 58

3.4 make工具和Makefile规则 62

3.4.1 make和Makefile概述 62

3.4.2 Makefile文件内容 62

3.4.3 Makefile规则 63

3.4.4 make工作原理 64

3.4.5 Makefile中的变量 64

3.4.6 clean命令的应用 65

3.4.7 Makefile文件示例 65

3.5 glibc 67

3.5.1 Linux编程库简介 67

3.5.2 Linux线程库 68

本章小结 70

第4章 交叉开发环境 71

4.1 交叉编译 71

4.2 交叉开发环境 71

4.3 交叉开发工具组成 72

4.4 宿主机与目标机之间的通信方式 74

4.4.1 互联通信方式 74

4.4.2 可拔插通信方式 75

4.5 交叉开发环境建立 75

4.5.1 创建交叉开发工具链 75

4.5.2 宿主机开发环境配置 75

4.6 基于UP-NETARM2410-S开发平台交叉开发环境建立 83

4.6.1 安装PC机RedHatLinux虚拟机 83

4.6.2 开发工具软件的安装 83

4.6.3 宿主机网络配置 84

4.6.4 宿主机串口配置 85

4.6.5 基于UP-NETARM2410-S开发平台交叉开发环境建立的总结 85

4.7 交叉编译和交叉调试实例 86

本章小结 88

第5章 ARM处理器 89

5.1 ARM处理器概述 89

5.1.1 ARM 89

5.1.2 ARM微处理器的应用领域及特点 90

5.1.3 ARM微处理器版本及系列 90

5.2 ARM微处理器结构 94

5.2.1 RISC体系结构 94

5.2.2 ARM微处理器的寄存器结构 95

5.2.3 ARM微处理器的指令结构 95

5.3 ARM编程模型 95

5.3.1 处理器的工作状态 95

5.3.2 流水线技术 96

5.3.3 存储器模式 98

5.3.4 数据和指令类型 98

5.3.5 处理器工作模式 98

5.3.6 寄存器组织 98

5.3.7 异常 104

5.4 ARM指令集 108

5.4.1 ARM处理器寻址方式 108

5.4.2 常见ARM指令集 110

5.5 ARM汇编程序设计 124

5.5.1 ARM汇编程序一些规范 124

5.5.2 ARM汇编程序设计举例 125

本章小结 126

第二篇 提高篇 129

第6章 创建嵌入式Linux交叉开发工具链 129

6.1 下载源文件 129

6.2 建立工作目录 130

6.3 输出环境变量 131

6.4 建立内核头文件 132

6.5 建立二进制工具 134

6.6 建立初始编译器 136

6.7 建立c库 138

6.8 建立全套编译器 140

6.9 完成工具链的设置 141

6.10 测试和验证交叉编译工具 141

本章小结 142

第7章 嵌入式Linux引导程序 143

7.1 引导程序(Bootloader)概述 143

7.2 ARM Bootloader的作用 143

7.3 Bootloader通用的概念 144

7.4 Bootloader的主要任务与框架结构 146

7.5 vivi 148

7.5.1 vivi简介 148

7.5.2 vivi的软件结构分析 150

7.5.3 vivi启动原理 160

7.6 vivi移植实例(移植vivi到博创2410) 178

7.6.1 对vivi进行移植修改 179

7.6.2 对vivi进行配置与编译 181

7.6.3 烧写vivi 183

7.6.4 测试vivi 185

本章小结 190

第8章 嵌入式Linux内核 191

8.1 Linux内核简介 191

8.2 Linux内核软件结构分析 191

8.2.1 Linux内核配置系统原理 191

8.2.2 配置Linux内核 203

8.2.3 Linux内核启动原理 205

8.3 Linux内核移植实例(移植Linux2.6.14.1到博创2410) 207

8.3.1 下载Linux内核并解压 207

8.3.2 修改Makefile 207

8.3.3 设置Flash分区 207

8.3.4 配置内核 211

8.3.5 测试2.6.14.1内核 215

8.3.6 内核编译过程中产生的部分错误及其解决方法 218

本章小结 219

第9章 嵌入式Linux根文件系统 221

9.1 文件系统 221

9.1.1 文件系统简介 221

9.1.2 文件和目录 221

9.1.3 文件权限 223

9.1.4 文件链接 225

9.1.5 文件系统 226

9.2 Linux文件系统 226

9.2.1 Linux文件系统概述 226

9.2.2 Linux文件系统组成 227

9.2.3 Linux文件系统管理 227

9.2.4 虚拟文件系统(VFS) 227

9.2.5 安装和卸载文件系统 228

9.3 嵌入式闪存文件系统 230

9.3.1 嵌入式系统存储设备及其管理机制分析 230

9.3.2 基于Flash的文件系统 232

9.3.3 基于RAM的文件系统 233

9.3.4 网络文件系统NFS(Network File System) 234

9.4 构建嵌入式Linux根文件系统原理 234

9.4.1 根文件系统关键目录 235

9.4.2 根文件系统关键文件 236

9.4.3 BusyBox 240

9.5 构建嵌入式Linux根文件系统实例——CramFS根文件系统构建(博创2410) 241

9.5.1 创建根文件系统目录 242

9.5.2 创建设备文件 242

9.5.3 编译BusyBox 242

9.5.4 系统配置文件的建立 244

9.5.5 添加应用程序 245

9.5.6 创建lib库文件 245

9.5.7 cramfs文件系统映像的制作 246

9.5.8 下载cramfs根文件系统映像到开发板 246

9.5.9 测试cramfs根文件系统 246

9.5.10 cramfs根文件系统制作中的常见错误及解决办法 247

本章小结 250

第10章 嵌入式Linux设备驱动 251

10.1 Linux设备驱动基本原理 251

10.1.1 概述 251

10.1.2 设备文件 252

10.1.3 使用/proc目录中的文件监视驱动程序的状态 254

10.2 Linux设备驱动程序模块 254

10.3 Linux设备驱动程序接口 256

10.4 Linux设备驱动程序实现过程 258

10.4.1 驱动程序的注册与注销 258

10.4.2 设备的打开与释放 259

10.4.3 设备的控制操作(ioctl) 260

10.4.4 中断处理 262

10.5 怎样编写设备驱动程序 263

10.6 Linux2.6内核驱动原理 270

本章小结 274

第三篇 实践篇 277

第11章 TFT-LCD驱动程序开发 277

11.1 TFT-LCD工作原理 277

11.1.1 LCD概述 277

11.1.2 LCD显示原理 278

11.1.3 LCD驱动原理 279

11.1.4 LCD的分类 281

11.2 LQ080V3DG01液晶屏 282

11.3 SC2410内部LCD控制器 282

11.3.1 管脚 282

11.3.2 寄存器介绍 283

11.3.3 控制流程 284

11.3.4 TFT控制器操作 285

11.4 Linux驱动程序接口——FrameBuffer 285

11.4.1 FrameBuffer 285

11.4.2 数据结构 286

11.5 LCD驱动程序主要代码结构以及关键代码分析 290

11.5.1 FrameBuffer驱动的统一管理 290

11.5.2 实现消息的分派 291

11.5.3 开发板S3C2410 LCD驱动的流程 292

11.6 LCD驱动程序开发实例 294

11.6.1 S3C2410与LCD模块的连接电路 294

11.6.2 修改代码(一)——LCD显示企鹅图像 295

11.6.3 修改代码(二)——LCD显示小车图像 300

本章小结 301

第12章 USB驱动程序开发 302

12.1 USB简介 302

12.1.1 USB 302

12.1.2 USB的结构及传输方式 303

12.1.3 USB设备的使用 303

12.1.4 USB的优势 304

12.2 Linux USB子系统 306

12.2.1 文件系统 306

12.2.2 USB驱动程序(USBD) 307

12.2.3 主机控制器驱动程序(hcd) 307

12.2.4 客户端驱动程序 307

12.3 USB客户端驱动程序架构和开发 307

12.3.1 USB的协议规范初识 307

12.3.2 Linux的USB驱动框架 309

12.4 在Linux内核中加入USB模块 317

12.4.1 配置文件 317

12.4.2 调试 318

12.5 USB驱动程序开发实例 319

12.5.1 S3C2410与USB模块的连接电路 319

12.5.2 制作新的根文件系统 319

12.5.3 修改代码 320

本章小结 326

第13章 Qt图形应用程序设计 327

13.1 图形用户界面系统(GUI) 327

13.2 Qt和Qt/Embedded简介 327

13.3 Qt/Embedded体系结构 328

13.3.1 交叉开发平台 328

13.3.2 Qt/E的窗口系统 329

13.3.3 Qt/E图形引擎的实现 330

13.4 Qt编程入门 331

13.4.1 Qt编程实例 331

13.4.2 代码解释 338

13.5 Qt和Qt/E开发环境的建立和移植 341

13.5.1 Qt2和Qt2/E开发环境的建立 341

13.5.2 Qt2/E程序在博创2410开发板上的移植 347

13.5.3 Qtopia开发环境的建立 354

本章小结 356

参考文献 357