第一篇 基础篇 3
第1章 嵌入式系统基础 3
1.1 嵌入式系统 3
1.1.1 嵌入式系统的概念 3
1.1.2 嵌入式系统的组成 3
1.1.3 嵌入式系统的特点 4
1.1.4 嵌入式系统的应用 5
1.1.5 实时操作系统 5
1.2 嵌入式处理器 6
1.2.1 嵌入式处理器简介 6
1.2.2 嵌入式处理器分类 6
1.3 嵌入式操作系统 8
1.3.1 操作系统简介 8
1.3.2 嵌入式操作系统基本概念 10
1.3.3 使用实时操作系统的必要性 11
1.3.4 实时操作系统的优缺点 11
1.4 ARM9实验系统 12
1.4.1 ARM9教学实验系统简介 12
1.4.2 ARM9教学实验系统操作步骤 13
第2章 嵌入式系统开发过程2.1 嵌入式软件开发的特点 17
2.2 嵌入式软件的开发流程 18
2.3 嵌入式系统调试方法 19
2.3.1 ARM仿真器 19
2.3.2 GDB调试 20
2.4 嵌入式系统集成开发环境 23
第3章 ARM体系结构 24
3.1 ARM介绍 24
3.1.1 ARM微处理器系列 25
3.1.2 ARM体系结构 28
3.2 ARM编程模型 32
3.2.1 工作状态及切换 32
3.2.2 存储器格式 32
3.2.3 存储器访问 33
3.2.4 体系结构直接支持的指令和数据类型 34
3.2.5 处理器模式 34
3.2.6 内部寄存器 35
3.2.7 异常 40
第4章 BootLoader 45
4.1 嵌入式系统的引导代码 45
4.2 vivi 45
4.3 U-Boot 58
4.4 PPCBoot 62
4.5 RJARM2410平台BootLoad代码 65
4.5.1 启动分析 65
4.5.2 片选 69
4.6 ARMLinux启动分析 72
4.6.1 概述 72
4.6.2 head.S和head-s3c2410.S分析 73
4.6.3 head-armv.S分析 86
第二篇 实验篇 99
第5章 创建嵌入式系统开发环境5.1 嵌入式Linux的开发环境 99
5.2 Cygwin 100
5.3 交叉编译的预备知识 101
5.4 交叉编译 101
5.4.1 安装Linux的头文件 102
5.4.2 编译安装binutils 105
5.4.3 编译安装gcc的C编译器 105
5.4.4 编译安装glibc 106
5.4.5 编译安装gcc的C,C++编译器 107
5.5 Makefile解析 108
5.6 实验1:一个简单的应用程序——Helloworld 110
第6章 Linux系统在ARM平台的移植6.1 移植的概念 115
6.2 Linux内核结构 115
6.2.1 Linux内核组成 115
6.2.2 子系统相互间的关系 116
6.2.3 系统数据结构 116
6.2.4 Linux系统实现结构 117
6.2.5 Linux内核源代码 117
6.3 Linux操作系统移植 118
6.3.1 Linux系统移植的两大部分 119
6.3.2 系统移植所必需的环境 119
6.4 编译Linux内核 122
6.5 文件系统简介 123
6.6 实验2:RAMDISK文件系统制作 126
6.7 实验3:Linux2.6内核移植 131
第7章 Linux设备驱动程序开发 131
7.1 设备驱动概述 144
7.2 设备驱动基础 151
7.3 设备驱动模块化编程 155
7.4 实验4:框架型驱动 161
7.5 实验5:小键盘+LED驱动 171
7.6 实验6:LCD驱动 182
7.7 实验7:IDE硬盘接口 205
7.8 实验8:音频输入/输出 227
第8章 USB设备驱动程序开发8.1 USB协议简介 259
8.2 USB体系结构 261
8.3 USB通信协议 263
8.4 USB设备驱动程序设计 265
8.4.1 USB系统编程框架 266
8.4.2 编写USB设备驱动程序 271
8.5 实验9:USB接口 277
第9章 嵌入式Linux网络编程9.1 嵌入式Linux网络体系结构 280
9.2 嵌入式Linux环境下的socket编程 284
9.3 实验10:以太网socket通信 290
第10章 图形用户接口开发10.1 嵌入式系统中的GUI简介 303
10.1.1 基于嵌入式Linux的GUI系统底层实现基础 303
10.1.2 3种嵌入式GUI系统的分析与比较 304
10.2 MiniGUI编程 305
10.2.1 概述 305
10.2.2 窗口 308
10.2.3 对话框、窗片和控件 313
10.2.4 消息及消息队列 313
10.2.5 图形设备接口 314
10.2.6 菜单 321
10.2.7 定时器 322
10.2.8 鼠标光标 323
10.2.9 插入符 323
10.2.10 键盘和鼠标输入 324
10.2.11 键盘快捷键 324
10.3 初识Qt/Embedded 324
10.4 Qt/Embedded嵌入式图形开发基础 339
10.4.1 Qt的资源 340
10.4.2 系统要求 341
10.4.3 架构 342
10.4.4 窗口系统 342
10.4.5 字体 343
10.4.6 输入设备 343
10.4.7 输入方法 343
10.4.8 屏幕加速 344
10.5 Qt/Embedded实战演练 344
10.6 实验11:图形界面GUI实验 353
附录A Linux下常用命令 373
参考文献 385