ARM 嵌入式 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: