第1章 ARM和嵌入式Linux概述 1
1.1 ARM介绍 1
1.1.1 关于ARM 1
1.1.2 ARM里程碑浏览 2
1.1.3 ARM现状 3
1.2 嵌入式Linux介绍 3
1.2.1 Linux的发展历程 4
1.2.2 嵌入式Linux现状 4
1.2.3 嵌入式Linux的新需求 5
第2章 嵌入式Linux图形用户界面 6
2.1 MiniGUI 6
2.2 Qt/Qt嵌入式 6
2.3 TinyX 7
2.4 Nano-X Window 7
2.5 NanoGTK 8
第3章 GCC简介 10
3.1 编译 10
3.2 gcc的基本用法 11
3.2.1 提示undefined reference to'xxxxx' 11
3.2.2 -1参数和-L参数 11
3.2.3 -include和-I参数 11
3.2.4 -O参数 12
3.2.5 -shared参数 12
3.3 交叉编译 12
第4章 交叉编译环境 13
4.1 下载交叉编译环境 13
4.2 安装交叉编译环境 14
4.2.1 编译工具的安装 14
4.2.2 Linux内核的安装 14
4.2.3 NanoGTK的安装 16
4.3 ARM版本文件格式 16
4.4 运行NanoGTK 18
4.5 嵌入式编程的注意事项 18
4.5.1 良好的习惯 18
4.5.2 准确性 19
4.5.3 效率 19
4.5.4 通用性 20
第5章 初识Nano-X 22
5.1 Nano-X FAQ 22
5.1.1 Microwindows和Nano-X Window有什么不同? 22
5.1.2 什么是Nano-X Window系统? 22
5.1.3 Nano-X运行在什么上面? 22
5.1.4 支持哪些CPU? 23
5.1.5 Nano-X有多大? 23
5.1.6 Nano-X的结构是怎样的?支持哪些API? 23
5.1.7 Nano-X和NanoGUI的区别 23
5.1.8 Win32和Nano-X API的区别 24
5.1.9 什么是Nano-X API? 24
5.1.10 什么是Microwindows API? 24
5.1.11 Nano-X的图形特征有哪些? 24
5.1.12 Nano-X Window系统遵循什么许可证? 24
5.1.13 最新的源代码在哪里? 25
5.1.14 有屏幕截图和/或演示例子吗? 25
5.1.15 有邮箱列表吗? 25
5.1.16 我能搜索邮箱列表档案吗? 25
5.1.17 安装不了FrameBuffer,到哪里寻求帮助? 25
5.1.18 Nano-X服务器给出一个错误“Cannot bind to named socket”.为什么? 25
5.1.19 配置文件中SCANKBD和TTYKBD的区别 26
5.1.20 如何安装鼠标或触摸屏? 26
5.1.21 配置文件中GPMMOUSE和SERMOUSE的区别 26
5.1.22 能做些什么去帮助别人? 26
5.2 Nano-X的截图 26
第6章 Nano-X的实现机制 28
6.1 Nano-X的层次结构 28
6.2 Nano-X的消息队列 29
第7章 Nano-X的代码结构 31
7.1 目录和文件 31
7.2 各层的函数、变量命名规则 33
7.3 底层驱动 34
7.3.1 设备结构的定义 35
7.3.2 显示驱动/帧缓冲 36
7.3.3 内核的帧缓冲驱动 41
7.3.4 键盘驱动 44
7.3.5 鼠标及触摸屏驱动 47
7.4 与设备无关的图形引擎 50
7.4.1 画点、线 50
7.4.2 区域裁剪 55
7.4.3 显示文字 57
7.5 上层应用接口 58
第8章 Nano-X深入解析 62
8.1 Config文件 62
8.2 入口函数 63
8.2.1 服务器端主函数 63
8.2.2 客户端主函数 65
8.3 API函数 67
8.4 消息循环 75
8.4.1 服务器与客户端的通信协议 75
8.4.2 相关数据结构定义 75
8.4.3 按键事件处理 77
8.4.4 鼠标事件处理 79
8.4.5 小结 80
第9章 定制Nano-X 82
9.1 开机显示公司Logo 82
9.1.1 如何显示出来 82
9.1.2 制作Logo文件 83
9.2 中文的实现 85
9.2.1 基本方法 85
9.2.2 三级字库的实现 86
9.2.3 Unicode简介 91
9.2.4 BOM 92
9.2.5 UTF编码转换 92
9.3 输入法 92
9.3.1 输入法管理器 93
9.3.2 输入法 94
9.3.3 编译输入法 96
9.4 触摸屏和手写输入 97
9.4.1 服务器端的处理 97
9.4.2 客户端的处理 103
9.4.3 校正触摸屏 107
第10章 GTK+入门 109
10.1 GTK+简介 109
10.2 Nano-X window与GTK+ 111
10.3 GTK+FAQ 111
10.3.1 概况 111
10.3.2 GTK+如何得到、配置、安装和查错 114
10.3.3 GTK+的开发 116
10.3.4 用GTK+开发:开始 119
10.3.5 用GTK+开发:常规问题 121
10.3.6 用GTK+开发:控件专题 139
10.3.7 关于GDK 149
10.3.8 关于GLib 151
10.4 GTK+的数据类型 158
10.5 最简单的GTK+程序 160
10.6 如何编译 162
10.7 关于信号处理 164
10.8 hello world程序 165
第11章 GTK+的控件 168
11.1 控件概述 168
11.1.1 创建控件的步骤 168
11.1.2 类型转换 169
11.1.3 无窗口的控件 169
11.2 布局控件 170
11.3 按钮 172
11.4 文本输入框 175
11.5 标签 179
11.6 超时,输入输出,空闲函数 183
11.6.1 超时 183
11.6.2 监控输入/输出 183
11.6.3 空闲函数 184
11.7 rc文件 184
11.7.1 rc文件的函数 184
11.7.2 rc文件的格式 185
11.7.3 rc文件示例 186
第12章 嵌入式工程中的GTK+实例 189
12.1 GTK+的对话框 189
12.2 GTK+的表布局窗口 192
12.3 GTK+的报表 194
12.4 GTK+显示图片 197
12.5 GTK+的定时器和线程 200
第13章 下载与调试方法 205
13.1 下载方法 205
13.2 调试方法 205
13.2.1 串口调试 205
13.2.2 其他调试方法介绍 206
附录A Nano-X公共图形API 209
附录B GTK+-1.2常用函数 219
附录C GTK+-1.2信号 224
结束语 241
参考文献 242