Table Of ContentARM 嵌入式 Linux 系统开发从入门到精通
内容简介:
这是一本以实践为宗旨的嵌入式ARM Linux 开发书籍,它不同于一般的教材重点讲述
理论而缺乏实践的部分,也不同于许多类似书籍只针对特定开发板讲述,这对于没有开发板
的读者来说很难掌握书中的内容。ARM是当今最主流的嵌入式微处理器,本书以应用最广
泛的新一代ARM9处理器为讲述对象。此外,Linux是一个成熟而稳定的开放源代码操作系
统,将Linux植入嵌入式设备具有众多的优点。本书分为三部分:第一部分讲述ARM Linux
系统移植,其中包括嵌入式系统开发入门,交叉编译器的构建,BootLoader的移植与实现以
及Linux 2.6内核的编译与下载;第二部分讲述ARM Linux的驱动程序开发,其中包括最常
见的字符设备驱动的分析,块设备驱动的分析以及网络设备驱动的分析。其中每一种类型的
驱动都是利用典型的实例来讲述,使读者充分了解驱动程序的实现思想;第三部分讲述 Qt
GUI开发,其中包括Qt的具体安装,Qt的核心技术,以及最新的Qtopia Core 开发环境,
最后利用实例来讲述Qtopia Core 开发过程。总之,本书包括了嵌入式Linux系统移植,底
层驱动实例的讲解以及上层应用的实例讲述,针对那些想从事嵌入式开发或已经从事嵌入式
开发的读者来说无疑是一本难得的参考书籍。
前言:
嵌入式系统由于芯片、软件、网络和传感器等技术的不断发展,正在成为未来社会的“数
字基因”。如今,人类已经进入了后 PC 时代,嵌入式技术已被广泛应用于科学研究、工程
设计、军事技术以及文艺、商业等方方面面,成为后PC时代的主力军。与此同时,嵌入式
Linux操作系统也在嵌入式领域蓬勃发展,它不仅继承了Linux源码开放,内核稳定性强,
软件丰富等特点,而且还支持几乎所有的主流处理器和硬件平台。嵌入式硬件系统和Linux
系统的有机结合,成为后PC时代计算机最普遍的应用形式。嵌入式Linux技术在中国有巨
大的发展潜力和市场需求。有数据显示,未来两年里,在计算机、消费电子、通信、汽车电
子、工业控制和军事国防这六大主要应用领域,嵌入式Linux产品将达到 80亿美元的市场
规模,可见这个行业的前景是非常乐观的。当然,Linux嵌入式操作系统本身也有一定的局
限性,就是开发难度过高,对于企业需要很高的技术实力。这就要求Linux系统厂商们不光
要利用Linux,更要掌握Linux。此外,社会需要更多人加入到学习和使用Linux行业中来。
本书编写的目的:
嵌入式Linux属于一个交叉学科,并且也是一个高起点的学科,它涵盖了微电子技术、
电子信息技术、计算机软件和硬件等多项技术领域的应用。另外学习嵌入式Linux最好具备
相应的嵌入式开发板和软件,还需要有经验的人进行指导开发,目前国内大部分高校都很难
达到这种要求,这也造成了目前国内嵌入式Linux开发人才极其缺乏的局面。
很多希望学习嵌入式Linux的人已经具备了一定的硬件知识,并且对操作系统原理,数
据结构等都有相当的了解,但在Linux技术方面又是零起点。目前嵌入式Linux的书籍也是
非常之多,但大部分都是要求读者有一定的Linux使用基础,对于初学者来说真的非常困难。
写这本书的主要目的就是对那些没有Linux开发经验的初学者有个很好的指导参考作用,从
而让他们少走弯路。
其次,笔者希望通过写书来总结这几年在工作中的项目经验,与更多的读者分享自己的
技术,也是对自己的所做项目的一个巩固;通过写这本书,让笔者更加清楚了实践与理论之
间的联系,从而将自己的亲身经验和教训寄托在书中的每个章节。
本书的特点:
首先,本书涵盖了嵌入式Linux系统中最重要的三个部分:ARM Linux系统移植,ARM
Linux驱动程序开发以及Qt GUI开发,这在同类书籍中比较少见。
其次,本书的讲述不依赖于具体某个厂家开发板,这样读者可以使用任意一款类似的开
发板就可以进行实践学习,同时对于没有开发板的读者也可以学到更多的知识。
另外,本书提供了书中出现的所有实例的源代码,便于读者参考使用,更重要的是读者
不用手动输入这些代码,从而节省时间。
本书的主要组成:
本书分为三个部分,共12章节,每一部分由4章内容组成。
第一部分讲述ARM Linux 系统移植,首先第1章讲述嵌入式系统开发入门,主要针对
初学者,讲述嵌入式系统的概要,ARM 处理器,ADS 工具,Linux 开发环境,以及 Linux
内核源码等。接着第2章讲述交叉编译工具链的构建,主要讲述交叉工具链的作用,使用分
步法构建交叉工具链和使用 Crosstool 工具构建交叉工具链。第 3 章讲述嵌入式系统的
BootLoader,主要讲述嵌入式BootLoader的作用,基于S3C2410开发板的U-Boot分析与移
植以及自己设计 BootLoader的方法。最后第 4 章讲述嵌入式 Linux 内核移植,主要讲述移
植的基本概念,内核配置、内核编译、内核下载以及构建根文件系统。
第二部分讲述ARM Linux驱动程序开发,首先第5章讲述ARM Linux驱动程序开发入
门,主要讲述嵌入式Linux驱动介绍,简单的内核模块程序分析,以及Linux驱动开发的基
本要点。接着第6章讲述字符设备驱动程序,主要讲述字符设备驱动相关的重要数据结构,
字符设备驱动开发实例——触摸屏设备驱动开发。第7章讲述块设备驱动程序,主要讲述块
设备相关的数据结构,块设备驱动开发实例——MMC/SD 设备驱动开发。最后第 8 章讲述
网络设备驱动程序,主要讲述网络设备驱动相关的重要数据结构,网络设备驱动开发实例—
—CS8900A网卡驱动开发。
第三部分讲述 Qt GUI 开发,首先第 9 章介绍了Qt的概要知识,包括 Linux桌面 GUI
系统,Qt/X11,Qtopia Core等,使读者对Qt及其在Linux GUI系统中的作用有个大概了解。
紧接着第10章讲述了Qt/X11的安装以及非常详细的应用实例,使读者可以轻松的编写基本
的Qt程序。第11章深入讨论了一些Qt的核心技术,重点是以Qt对象模型为基础的信号和
槽等机制,我们通过剖析Qt的源代码来深入的学习Qt的这些核心技术,同时也为读者今后
对Qt源代码的自行研习打下基础。最后第12章重点讲述Qtopia Core和Qt/X11的一些不同
之处,包括轻量级的窗口系统,QCOP 进程间通信机制及调试工具 qvfb 等,使读者在熟悉
了Qt/X11的基础上能够很快过渡到Qtopia Core开发。
本书的读者对象:
本书通俗易懂,可作为高等院校电子类、电气类、控制类、计算机类等专业本科生、研
究生学习嵌入式Linux的参考书目或自学教材,也可供广大希望转入嵌入式领域的科研和工
程技术人员参考使用,还可作为广大嵌入式培训班的教材和教辅材料。
致谢:
首先要感谢这本书的另外一位作者欧文盛,书中Qt GUI部分(第9章到第12章)主要
由他来完成,由于他这几年一直在国际知名的通信公司从事Qt方面的开发工作,所以这部
分由他来完成,出版社和我都很放心。其次,我要感谢我的妻子,很特殊的是我写这本书的
时间正是我妻子怀孕的期间,其实在写这本书之前已经得知妻子怀孕,所以本想放弃编写这
本书,但是妻子却很坚定的支持我写这本书。所以,我认为这本书的完成离不开她对我的默
默支持。其次,要感谢我的岳父、岳母,是他们对我妻子这段时间的精心照顾,才使得我有
更多的时间投入到写书中。
最后,要感谢威盛电子的李松,易宏宇,周志勇,张磊等,他们为本书的完成也提供了
很多的帮助。
鉴于作者水平有限,加之时间仓促,本书一定有不少错误与不清楚之处,希望得到广大
读者批评与指正。有兴趣的读者可以发送E-mail到[email protected]或登录笔者的个
人Blog来做技术上的交流:http://mike2linus.blog.com.cn/。
作者
2007年3月28日
第一部分 ARM LINUX系统移植...............................................................................................12
第1章 嵌入式系统开发入门.........................................................................................................13
1.1嵌入式系统介绍....................................................................................................................13
1.1.1 嵌入式系统概述............................................................................................................13
1.1.2 嵌入式系统组成............................................................................................................15
1.2 ARM介绍..............................................................................................................................16
1.2.1 ARM处理器介绍............................................................................................................17
1.2.2 ARM处理器的选型........................................................................................................18
1.2.3 S3C2410微处理器介绍..................................................................................................18
1.3 ADS集成开发环境介绍........................................................................................................20
1.3.1 ADS软件组成.................................................................................................................21
1.3.1.1命令行开发工具......................................................................................................................21
1.3.1.2 GUI开发环境..........................................................................................................................23
1.3.1.3实用程序.................................................................................................................................23
1.3.1.4支持的软件.............................................................................................................................24
1.3.2使用Code Warrior IDE...................................................................................................24
1.3.2.1创建项目工程..........................................................................................................................24
1.3.2.2 编译和链接项目工程..............................................................................................................27
1.3.3使用AXD IDE.................................................................................................................29
1.3.3.1打开调试文件..........................................................................................................................29
1.3.3.2设置断点.................................................................................................................................30
1.3.3.3查看寄存器内容......................................................................................................................30
1.3.3.4查看变量值.............................................................................................................................31
1.4嵌入式LINUX开发介绍........................................................................................................32
1.4.1 Linux历史.......................................................................................................................32
1.4.2 Linux开发环境...............................................................................................................33
1.4.2.1 GCC介绍................................................................................................................................35
1.4.2.2 GNU Make介绍......................................................................................................................36
1.4.2.3 GDB介绍................................................................................................................................38
1.4.3 ARM Linux系统开发流程...............................................................................................41
1.5 LINUX内核介绍.....................................................................................................................43
1.5.1 Linux内核目录结构.......................................................................................................44
1.5.2 如何阅读Linux内核源代码..........................................................................................45
1.6 本章小节...............................................................................................................................47
1.7常见问题...............................................................................................................................48
第2章 交叉编译工具链的构建.....................................................................................................49
2.1 交叉编译工具链介绍............................................................................................................49
2.2 ARM LINUX交叉编译工具链的构建.....................................................................................49
2.2.1分步构建交叉编译链......................................................................................................50
2.2.1.1建立工作目录..........................................................................................................................50
2.2.1.2建立环境变量..........................................................................................................................51
2.2.1.3编译、安装Binutils.................................................................................................................51
2.2.1.4获得内核头文件......................................................................................................................52
2.2.1.5编译安装boot-trap gcc............................................................................................................53
2.2.1.6建立glibc库............................................................................................................................54
2.2.1.7编译安装完整的gcc................................................................................................................55
2.2.1.8测试交叉编译工具链..............................................................................................................55
2.2.2用Crosstool工具构建交叉工具链.................................................................................55
2.2.2.1准备资源文件..........................................................................................................................56
2.2.2.2建立脚本文件..........................................................................................................................56
2.2.2.3 建立配置文件.........................................................................................................................57
2.2.2.4 执行脚本................................................................................................................................57
2.2.2.5 添加环境变量.........................................................................................................................57
2.3本章小节...............................................................................................................................58
2.4常见问题...............................................................................................................................58
第3章 嵌入式系统的BOOTLOADER........................................................................................60
3.1 BOOTLOADER概述.................................................................................................................60
3.2常用的嵌入式LINUX BOOTLOADER.......................................................................................61
3.2.1 U-Boot.............................................................................................................................61
3.2.2 VIVI.................................................................................................................................61
3.2.3 Blob.................................................................................................................................62
3.2.4 RedBoot...........................................................................................................................62
3.2.5 ARMboot.........................................................................................................................63
3.2.6 DIY..................................................................................................................................63
3.3基于S3C2410开发板的BOOTLOADER实现.........................................................................63
3.3.1 S3C2410开发板介绍......................................................................................................63
3.3.2 U-Boot分析与移植.........................................................................................................66
3.3.2.1 U-Boot Stage1分析.................................................................................................................66
3.3.2.2 U-Boot Stage2分析.................................................................................................................71
3.3.2.3 U-Boot的移植过程.................................................................................................................72
3.4基于S3C2410开发板自己编写BOOTLOADER......................................................................88
3.4.1 设计系统的启动流程.....................................................................................................88
3.4.2 BootLoader的具体实现..................................................................................................90
3.4.2.1 设置异常向量表.....................................................................................................................91
3.4.2.2初始化看门狗和外围电路.......................................................................................................92
3.4.2.3初始化存储器..........................................................................................................................92
3.4.2.4初始化堆栈.............................................................................................................................93
3.4.2.5初始化数据区..........................................................................................................................94
3.4.2.6跳转到C程序Main函数........................................................................................................96
3.4.2.7 Main函数的具体实现.............................................................................................................96
3.5本章小节...............................................................................................................................97
3.6常见问题...............................................................................................................................97
第4章 嵌入式LINUX内核移植..................................................................................................98
4.1移植的基本概念....................................................................................................................98
4.2内核移植的准备....................................................................................................................99
4.3内核移植.............................................................................................................................100
4.3.1 内核配置......................................................................................................................100
4.3.1.1修改Makefile........................................................................................................................100
4.3.1.2设置NAND Flash分区.........................................................................................................101
4.3.1.3配置内核选项........................................................................................................................104
4.3.2 内核编译......................................................................................................................108
4.3.2.1清除冗余文件........................................................................................................................108
4.3.2.2编译内核映像和模块............................................................................................................108
4.3.2.3安装模块...............................................................................................................................109
4.3.3内核下载.......................................................................................................................109
4.4 建立LINUX根文件系统......................................................................................................110
4.4.1根文件系统的基本介绍................................................................................................110
4.4.1.1根文件系统的基本目录结构.................................................................................................110
4.4.1.2常见的根文件系统................................................................................................................111
4.4.1.3选择根文件系统....................................................................................................................112
4.4.2建立根文件系统...........................................................................................................113
4.4.2.1Cramfs工具包的使用.............................................................................................................113
4.2.2.2构建Cramfs根文件系统.......................................................................................................114
4.5本章小节.............................................................................................................................117
4.6常见问题.............................................................................................................................117
第二部分 ARM LINUX 设备驱动程序开发...............................................................................119
第5章 ARM LINUX 驱动程序开发入门...................................................................................120
5.1嵌入式LINUX驱动程序介绍...............................................................................................120
5.1.1驱动程序的作用...........................................................................................................120
5.1.2 Linux设备驱动程序分类..............................................................................................121
5.2最简单的内核模块举例.......................................................................................................122
5.2.1 编写Hello World模块.................................................................................................122
5.2.2编写Hello World模块的Makefile................................................................................124
5.2.3加载和卸载Hello World模块.......................................................................................125
5.3 LINUX驱动程序开发要点....................................................................................................125
5.3.1 内存与I/O端口...........................................................................................................125
5.3.1.1内存.......................................................................................................................................126
5.3.1.2 I/O端口.................................................................................................................................129
5.3.2并发控制.......................................................................................................................130
5.3.2.1自旋锁(Spinlocks).............................................................................................................131
5.3.2.2信号量(Semaphores).........................................................................................................133
5.3.3阻塞(Blocking)与非阻塞(Nonblocking)...............................................................135
5.3.3.1阻塞(Blocking)与非阻塞(Nonblocking)操作................................................................135
5.3.3.2异步通知(Asynchronous Notification)...............................................................................135
5.3.4中断处理.......................................................................................................................136
5.3.4.1 Linux中断及其相关函数......................................................................................................136
5.3.4.2 ARM中断处理......................................................................................................................137
5.3.4.3一个Linux中断相关的实例..................................................................................................139
5.3.5 内核调试......................................................................................................................143
5.3.5.1准备内核调试环境................................................................................................................143
5.3.5.2 KDB的基本用法...................................................................................................................144
5.4本章小结.............................................................................................................................146
5.5常见问题.............................................................................................................................147
第6章 字符设备驱动程序...........................................................................................................148
6.1 字符设备驱动介绍..............................................................................................................148
6.1.1字符设备驱动相关的重要结构.....................................................................................148
6.1.1.1 file_operations(文件操作)结构..........................................................................................148
6.1.1.2 file(文件)结构...................................................................................................................151
6.1.1.3 inode(节点)结构...............................................................................................................152
6.1.2主、次设备号...............................................................................................................154
6.1.2.1主、次设备号的内部表示.....................................................................................................155
6.1.2.2静态分配和释放主设备号.....................................................................................................155
6.1.2.3 动态分配主设备号...............................................................................................................156
6.2 字符设备驱动开发实例......................................................................................................157
6.2.1四线电阻式触摸屏原理................................................................................................157
6.2.2 S3C2410触摸屏工作原理............................................................................................158
6.2.3 S3C2410的ADC和触摸屏接口特殊寄存器................................................................159
6.2.3.1 ADC控制(ADCCON)寄存器...........................................................................................159
6.2.3.2 ADC 触摸屏控制(ADCTSC)寄存器................................................................................160
6.2.3.3 ADC开始延迟(ADCDLY)寄存器....................................................................................161
6.2.3.4 ADC 转化数据 (ADCDAT0) 寄存器...................................................................................161
6.2.3.5 ADC转化数据(ADCDAT1)寄存器........................................................................................162
6.2.4 触摸屏驱动概要设计...................................................................................................162
6.2.4.1触摸屏硬件接口....................................................................................................................162
6.2.4.2触摸屏驱动程序流程设计.....................................................................................................163
6.2.5触摸屏驱动程序分析....................................................................................................164
6.2.5.1触摸屏设备初始化................................................................................................................165
6.2.5.2触摸屏设备文件操作............................................................................................................168
6.2.5.3 open和release方法..............................................................................................................168
6.2.5.4 read和poll方法....................................................................................................................169
6.2.5.5 触摸屏中断和ADC中断的实现..........................................................................................170
6.2.6配置和编译驱动程序....................................................................................................172
6.2.7测试触摸屏驱动程序....................................................................................................173
6.2.8触摸屏的校准...............................................................................................................174
6.3本章小节.............................................................................................................................175
6.4常见问题.............................................................................................................................176
第7章 块设备驱动程序..............................................................................................................177
7.1块设备驱动介绍..................................................................................................................177
7.1.1块设备驱动相关的重要结构........................................................................................177
7.1.1.1block_device_operations(块设备操作)结构........................................................................177
7.1.1.2 gendisk结构..........................................................................................................................178
7.1.1.3 request结构...........................................................................................................................180
7.1.2请求处理.......................................................................................................................182
7.1.2.1 request函数...........................................................................................................................182
7.1.2.2 request函数实例...................................................................................................................182
7.2块设备驱动开发实例...........................................................................................................183
7.2.1 MMC/SD介绍...............................................................................................................184
7.2.2 S3C2410提供的SDI接口............................................................................................186
7.2.3 SDI相关的寄存器........................................................................................................187
7.2.3.1 SDI控制(SDICON)寄存器...............................................................................................188
7.2.3.2 SDI波特率预定标(SDIPRE)寄存器.................................................................................188
7.2.3.3 SDI命令参数(SDICARG)寄存器..........................................................................................188
7.2.3.4 SDI命令控制(SDICCON)寄存器..........................................................................................189
7.2.3.5 SDI命令状态(SDICSTA)寄存器...........................................................................................189
7.2.3.6 SDI响应(SDIRSP)寄存器.....................................................................................................189
7.2.3.7 SDI数据/占用定时器(SDIDTIMER)寄存器..........................................................................190
7.2.3.8 SDI块大小(SDIBSIZE)寄存器..............................................................................................190
7.2.4 MMC/SD驱动概要设计................................................................................................191
7.2.4.1 MMC/SD与主机的接口连接................................................................................................191
7.2.4.2 MMC/SD驱动框架...............................................................................................................191
7.2.4.3 MMC驱动的核心设计..........................................................................................................193
7.2.5 MMC驱动程序分析.....................................................................................................193
7.2.5.1 MMC初始化.........................................................................................................................193
7.2.5.2 open和release方法..............................................................................................................195
7.2.5.3 ioctl方法...............................................................................................................................196
7.2.5.4 MMC驱动的request方法.....................................................................................................196
7.2.6 S3C2410 SDI接口驱动分析.........................................................................................198
7.2.6.1 SDI初始化............................................................................................................................199
7.2.6.2 SDI接口驱动方法.................................................................................................................199
7.2.7配置和编译驱动程序....................................................................................................200
7.3本章小结.............................................................................................................................200
7.4常见问题.............................................................................................................................200
第8章 网络设备驱动程序...........................................................................................................202
8.1网络设备驱动介绍..............................................................................................................202
8.1.1 网络设备驱动相关的重要结构....................................................................................202
8.1.1.1 net_device结构......................................................................................................................202
8.1.1.2 sk_buff结构..........................................................................................................................204
8.1.2常见的网络术语...........................................................................................................205
8.1.2.1常见的网络协议....................................................................................................................205
8.1.2.2以太网介绍...........................................................................................................................206
8.2网络设备驱动开发实例.......................................................................................................207
8.2.1CS8900A介绍................................................................................................................207
8.2.1.1CS8900A的组成部分介绍.....................................................................................................207
8.2.1.2 CS8900A的系统应用............................................................................................................208
8.2.2CS8900A网卡驱动概要设计.........................................................................................209
8.2.2.1 CS8900A网卡接口...............................................................................................................209
8.2.2.2网络驱动程序的体系结构.....................................................................................................209
8.2.2.3网络驱动程序的主要功能.....................................................................................................210
8.2.3 CS8900A适配器驱动程序分析....................................................................................211
8.2.3.1初始化...................................................................................................................................211
8.2.3.2 open和stop方法...................................................................................................................214
8.2.3.3数据发送...............................................................................................................................216
8.2.3.4数据接收...............................................................................................................................217
8.3本章小结.............................................................................................................................220
8.4常见问题.............................................................................................................................220
第三部分 QT GUI 开发...............................................................................................................221
第9章 QT 概述...........................................................................................................................222
9.1 LINUX下GUI介绍..............................................................................................................222
9.1.1 Linux桌面GUI系统....................................................................................................222
9.1.1.1 X Window系统.....................................................................................................................223
9.1.1.2 GNOME/Gtk+和KDE/Qt......................................................................................................224
9.1.2 嵌入式Linux下的GUI系统.......................................................................................226
9.2 QT/X11介绍........................................................................................................................227
9.2.1 Qt的历史和Qt/X11的由来..........................................................................................227
9.2.2 Qt/X11的版权问题.......................................................................................................228
9.2.3 Qt/X11及Qt/Windows的系统架构图对比....................................................................228
9.2.4 Qt的特性简介..............................................................................................................228
9.3 QTOPIA CORE 介绍...............................................................................................................229
9.3.1 Qtopia Core与Qt/Embedded........................................................................................229
9.3.2 Qtopia Core的体系结构...............................................................................................230
9.3.2.1 Frame Buffer(帧缓存)简介.....................................................................................................230
9.3.2.2 Qtopia Core的窗口系统........................................................................................................231
9.4 本章小结.............................................................................................................................231
9.5常见问题.............................................................................................................................231
第10章 QT/X11 初步..................................................................................................................233
10.1 QT/X11的安装...................................................................................................................233
10.1.1 Qt/X11的下载及双重授权问题的说明.......................................................................233
10.1.2 Qt/X11的安装详解.....................................................................................................234
10.2 QT下的HELLO WORLD......................................................................................................235
10.3 温度转换的小例子............................................................................................................237
10.3.1 背景知识....................................................................................................................237
10.3.2 Quit按钮.....................................................................................................................237
10.3.3摄氏温度的显示.........................................................................................................241
10.3.4 华氏温度的显示........................................................................................................243
10.3.5 华氏温度和摄氏温度之间的转换..............................................................................247
10.3.6 保存当前的数值........................................................................................................251
10.4 本章小结...........................................................................................................................256
10.5 常见问题...........................................................................................................................257
第11章 QT 核心技术..................................................................................................................258
11.1信号(SIGNALS)和槽(SLOTS)................................................................................................258
11.1.1 常见的GUI组件通信方式........................................................................................258
11.1.1.1 回调函数.............................................................................................................................258
11.1.1.2 面向对象的回调.................................................................................................................260
11.1.2 Qt中的信号和槽(Signals and Slots)............................................................................261
11.1.2.1 信号和槽历史和所带来的优点...........................................................................................261
11.1.2.2 信号....................................................................................................................................261
11.1.2.3 槽........................................................................................................................................262
11.1.2.4 信号和槽的效率.................................................................................................................262
11.1.3 自定义信号和槽的小例子..........................................................................................263
11.2 QT对象模型.......................................................................................................................266
11.2.1 元对象系统(Meta-Object System)..........................................................................266
11.2.2 信号和槽机制的实现.................................................................................................272
11.2.2.1 用connection()建立连接.....................................................................................................272
11.2.2.2 信号的发射和槽的执行......................................................................................................278
11.2.3 元对象编译器moc.....................................................................................................282
11.2.3.1 在Makefile中使用moc......................................................................................................282
11.2.3.2 moc用法详解......................................................................................................................282
11.2.3.3 moc及信号和槽机制的局限性............................................................................................283
11.3 QT的窗口系统...................................................................................................................285
11.3.1 窗口部件之间的树型结构..........................................................................................285
11.3.2 窗口部件的布局管理(Layout)...............................................................................288
11.4 国际化...............................................................................................................................291
11.4.1 Qt国际化的基本步骤.................................................................................................291
11.4.1.1 程序员的工作.....................................................................................................................291
11.4.1.2 语言资源管理者和翻译工作者的工作................................................................................292
11.4.2 动态改变语言的小例子.............................................................................................292
11.4.3 一些注意事项............................................................................................................298
11.5 本章小结...........................................................................................................................299
11.6 常见问题...........................................................................................................................299
第12章QTOPIA CORE.............................................................................................................301
12.1 QTOPIA CORE的安装..........................................................................................................301
12.2 FRAME BUFFER和QVFB......................................................................................................302
12.2.1 Frame Buffer...............................................................................................................302
12.2.2 编译qvfb....................................................................................................................304
12.2.3 在qvfb上运行Qtopia Core程序...............................................................................305
# ./ DIGITALCLOCK –QWS –DISPLAY QVFB:0.....................................................................306
12.3 移植QT/X11程序到QTOPIA CORE中...............................................................................307
12.4轻量级的窗口系统............................................................................................................309
Description:序和超过半数的自由软件使用此许可证。Qt 所遵循的GPL 版本是1991 年发布的“版本2”,. 其详细内容请参见http://www.gnu.org/licenses/gpl.html 或者非