基于ARM和嵌入式Linux的图形编程——NanoGTK

基于ARM和嵌入式Linux的图形编程——NanoGTK"

作者:赵克坤
ISBN:9787302203124
定价:¥39
字数:千字
页数:
出版时间:2009.09.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书讨论了基于ARM和嵌入式Linux平台的图形软件开发技术——NanoGTK。全书共分13章,阐述了中文Nano-X Window和GTK+在嵌入式中的原理和应用。介绍了ARM、嵌入式Linux和相关的图形引擎;GCC编译器的使用方法和交叉编译环境的安装;Nano-X的特性和工作机制。给出了实际开发中一些系统定制Nano-X的实现方法;解析了GTK+在实际开发中的常用方法和控件并介绍了很多实例程序。本书第12章分析了实际的嵌入式工程中GTK+的5个例子程序,第13章介绍了嵌入式Linux的下载和调试方法。附录提供了Nano-X的API、GTK+函数和信号的细节。

本书适用于嵌入式Linux平台项目开发人员,也可以作为高校计算机相关专业师生的参考读物。

前言

一直想写一些关于NanoGTK的东西和同行交流,现在终于付诸实施了!

NanoGTK包含Nano-X Window和GTK+两部分内容,Nano-X Window即Microwindows,是为嵌入式设备定制的一个轻量级的图形引擎,GTK+是一套创建图形用户界面的开发工具包。NanoGTK是Microwindows和GTK+在嵌入式应用的联合体的简称,书中是分开来讲述这两部分的,这是因为它们可以各自比较独立地开发和使用。而由于Microwindows跟微软的注册商标Windows冲突,2005年改名为Nano-X Window,因此书中大量提到的是Nano-X Window,而不是Microwindows。

Nano-X Window是一个开放源代码的嵌入式GUI软件,目的是把现代图形视窗环境引入到运行Linux的小型设备和平台上,写图形用户界面需要工具包,GTK+是一套工具包,它可以创建图形用户界面。选择Nano-X Window和GTK+主要有以下几个原因:

? Linux、Nano-X Window和GTK+用于商业用途时不需要支付任何版税;

? 源代码公开、简练灵活,移植方便;

? Nano-X Window可以支持从单色到32位色的显示屏;

? 可以支持目前市场上大多数的32位嵌入式CPU;

? 可以快速开发出有不同功能和风格的产品。

嵌入式技术随着市场竞争的加剧而日趋成熟,当前32位嵌入式设备的可靠性跟以前相比已经大大提高,功能也越来越完善,而芯片价格却越来越低,因此现在的许多控制系统和电子消费品等都会优先考虑32位嵌入式方案,企业的很多开发也转向32位嵌入式产品,作者隐隐感觉到,这将是一个巨大的市场。基于图形的嵌入式开发,速度将大大提高,为公司产品推向市场节约了时间和成本,为赢得市场提供了保障。

由于Nano-X Window源自国外,一开始没有实现对中文的支持,当前市场上应用的Nano-X Window大多不是中文版,因此使它在国内的推广受到抑制。幸运的是,Nano-X Window是支持Unicode的,增加中文的支持并不需要费很大力气,本书第9章讲述了中文的实现方法。

作者通过讲述对基于ARM和嵌入式Linux 的中文Nano-X和GTK+开发的切身实践,引导您不仅仅是熟悉NanoGTK,而且会修改它来适应自己的产品。如果您正在从事或即将从事嵌入式软件开发,并且有Linux的基础知识,熟悉C语言,那么本书将非常适合

您阅读。如果您把这本书作为开发时的参考资料,那我将感到非常荣幸,因为Nano-X和GTK+得到了您的支持和推广,这也是我写这本书的初衷。

书中作者认为比较重要的部分用黑体作了标记。

本书附带一个光盘,里面包括以下内容。

? NanoGTK源代码的压缩包  NanoGTK-1.0-src.tgz;

? linux-2.4.18内核源代码  linux-2.4.18.tar.gz;

? linux-2.6.28内核源代码  linux-2.6.28.tar.gz;

? 交叉编译工具V2.95.3  cross-2.95.3.tar.bz2;

? 交叉编译工具V3.2  cross-3.2.tar.gz;

? Nano-X API说明  nano-X-docs.pdf;

? microwindows-fonts-chinese-0.88pre9.tar.gz  Nano-X的中文字库;

? 示例代码  书中各章的示例代码源程序;

? UTF编码转换  ConvertUTF.h,ConvertUTF.c;

? libc-5.4.22库源代码  libc-5.4.22.tar.gz。

由于作者水平有限,书中出现错误或疏漏在所难免,敬请各位读者批评指正。

赵克坤

2009年1月20日于深圳

目录

第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  -l参数和-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

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个