火龙果·整理 大大子天大uml.org.cn ARM嵌入式Linux系统开发从入门到精通 内容简介: 这是一本以实践为宗旨的嵌入式ARM Linux开发书籍,它不同于一般的教材重点讲述 理论而缺乏实践的部分,也不同于许多类似书籍只针对特定开发板讲述,这对于没有开发板 的读者来说很难掌握书中的内容。ARM是当今最主流的嵌入式微处理器,本书以应用最广 泛的新一代ARM9处理器为讲述对象。此外,Liⅸ是一个成熟而稳定的开放源代码操作系 统,将Lix植入嵌入式设备具有众多的优点。本书分为三部分:第一部分讲述ARM Linux 系统移植,其中包括嵌入式系统开发入门,交叉编译器的构建,BootLoader的移植与实现以 及Liⅸ2.6内核的编译与下载:第二部分讲述ARM Liⅸ的驱动程序开发,其中包括最常 见的字符设备驱动的分析,块设备驱动的分析以及网络设备驱动的分析。其中每一种类型的 驱动都是利用典型的实例来讲述,使读者充分了解驱动程序的实现思想:第三部分讲述Q GUI开发,其中包括Qt的具体安装,Qt的核心技术,以及最新的Qtopia Core开发环境, 最后利用实例来讲述Qtopia Core开发过程。总之,本书包括了嵌入式Linux系统移植,底 层驱动实例的讲解以及上层应用的实例讲述,针对那些想从事嵌入式开发或已经从事嵌入式 开发的读者来说无疑是一本难得的参考书籍。 前言: 嵌入式系统由于芯片、软件、网络和传感器等技术的不断发展,正在成为未来社会的“数 字基因”。如今,人类己经进入了后P℃时代,嵌入式技术已被广泛应用于科学研究、工程 设计、军事技术以及文艺、商业等方方面面,成为后PC时代的主力军。与此同时,嵌入式 Liuⅸ操作系统也在嵌入式领域蓬勃发展,它不仅继承了Linux源码开放,内核稳定性强, 软件丰富等特点,而且还支持几乎所有的主流处理器和硬件平台。嵌入式硬件系统和Liuⅸ 系统的有机结合,成为后PC时代计算机最普遍的应用形式。嵌入式Liux技术在中国有巨 大的发展潜力和市场需求。有数据显示,未来两年里,在计算机、消费电子、通信、汽车电 子、工业控制和军事国防这六大主要应用领域,嵌入式Liⅸ产品将达到80亿美元的市场 规模,可见这个行业的前景是非常乐观的。当然,Lⅸ嵌入式操作系统本身也有一定的局 限性,就是开发难度过高,对于企业需要很高的技术实力。这就要求Liuⅸ系统厂商们不光 要利用Linux,更要掌握Linux。.此外,社会需要更多人加入到学习和使用Linx行业中来。 本书编写的目的: 嵌入式Liu属于一个交叉学科,并且也是一个高起点的学科,它涵盖了微电子技术、 电子信息技术、计算机软件和硬件等多项技术领域的应用。另外学习嵌入式Liuⅸ最好具备 相应的嵌入式开发板和软件,还需要有经验的人进行指导开发,目前国内大部分高校都很难 达到这种要求,这也造成了目前国内嵌入式Liⅸ开发人才极其缺乏的局面。 很多希望学习嵌入式Liuⅸ的人己经具备了一定的硬件知识,并且对操作系统原理,数 据结构等都有相当的了解,但在Linux技术方面又是零起点。目前嵌入式Liux的书籍也是 非常之多,但大部分都是要求读者有一定的Liuⅸ使用基础,对于初学者来说真的非常困难。 写这本书的主要目的就是对那些没有Liⅸ开发经验的初学者有个很好的指导参考作用,从 而让他们少走弯路。 其次,笔者希望通过写书来总结这几年在工作中的项目经验,与更多的读者分享自己的 技术,也是对自己的所做项目的一个巩固:通过写这本书,让笔者更加清楚了实践与理论之
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 Liur驱动程序开发以及Qt GUI开发,这在同类书籍中比较少见。 其次,本书的讲述不依赖于具体某个厂家开发板,这样读者可以使用任意一款类似的开 发板就可以进行实践学习,同时对于没有开发板的读者也可以学到更多的知识。 另外,本书提供了书中出现的所有实例的源代码,便于读者参考使用,更重要的是读者 不用手动输入这些代码,从而节省时间。 本书的主要组成: 本书分为三个部分,共12章节,每一部分由4章内容组成。 第一部分讲述ARM Linux系统移植,首先第1章讲述嵌入式系统开发入门,主要针对 初学者,讲述嵌入式系统的概要,ARM处理器,ADS工具,Linux开发环境,以及Linux 内核源码等。接着第2章讲述交叉编译工具链的构建,主要讲述交叉工具链的作用,使用分 步法构建交叉工具链和使用Crosstool工具构建交叉工具链。第3章讲述嵌入式系统的 BootLoader,主要讲述嵌入式BootLoader的作用,基于S3C2410开发板的U-Boot分析与移 植以及自己设计BootLoader的方法。最后第4章讲述嵌入式Linux内核移植,主要讲述移 植的基本概念,内核配置、内核编译、内核下载以及构建根文件系统。 第二部分讲述ARM Linuⅸ驱动程序开发,首先第5章讲述ARM Liⅸ驱动程序开发入 门,主要讲述嵌入式Linⅸ驱动介绍,简单的内核模块程序分析,以及Linux驱动开发的基 本要点。接着第6章讲述字符设备驱动程序,主要讲述字符设备驱动相关的重要数据结构, 字符设备驱动开发实例一触摸屏设备驱动开发。第7章讲述块设备驱动程序,主要讲述块 设备相关的数据结构,块设备驱动开发实例一MMC/SD设备驱动开发。最后第8章讲述 网络设备驱动程序,主要讲述网络设备驱动相关的重要数据结构,网络设备驱动开发实例一 CS8900A网卡驱动开发。 第三部分讲述Qt GUI开发,首先第9章介绍了Qt的概要知识,包括Linux桌面GUI 系统,Qt/X1l,Qtopia Core等,使读者对Qt及其在Linux GUI系统中的作用有个大概了解。 紧接着第10章讲述了Q/X11的安装以及非常详细的应用实例,使读者可以轻松的编写基本 的Qt程序。第11章深入讨论了一些Qt的核心技术,重点是以Qt对象模型为基础的信号和 槽等机制,我们通过剖析Qt的源代码来深入的学习Q的这些核心技术,同时也为读者今后 对Qt源代码的自行研习打下基础。最后第12章重点讲述Qtopia Core和Qt/X11的一些不同 之处,包括轻量级的窗口系统,QCOP进程间通信机制及调试工具qVb等,使读者在熟悉 了QtX1l的基础上能够很快过渡到Qtopia Core开发。 本书的读者对象: 本书通俗易懂,可作为高等院校电子类、电气类、控制类、计算机类等专业本科生、研 究生学习嵌入式Liux的参考书目或自学教材,也可供广大希望转入嵌入式领域的科研和工 程技术人员参考使用,还可作为广大嵌入式培训班的教材和教辅材料。 致谢:
间的联系,从而将自己的亲身经验和教训寄托在书中的每个章节。 本书的特点: 首先,本书涵盖了嵌入式 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 的参考书目或自学教材,也可供广大希望转入嵌入式领域的科研和工 程技术人员参考使用,还可作为广大嵌入式培训班的教材和教辅材料。 致谢:
-99火爆:理 首先要感谢这本书的另外一位作者欧文盛,书中Qt GUI部分(第9章到第12章)主要 由他来完成,由于他这几年一直在国际知名的通信公司从事Qt方面的开发工作,所以这部 分由他来完成,出版社和我都很放心。其次,我要感谢我的妻子,很特殊的是我写这本书的 时间正是我妻子怀孕的期间,其实在写这本书之前己经得知妻子怀孕,所以本想放弃编写这 本书,但是妻子却很坚定的支持我写这本书。所以,我认为这本书的完成离不开她对我的默 默支持。其次,要感谢我的岳父、岳母,是他们对我妻子这段时间的精心照顾,才使得我有 更多的时间投入到写书中。 作者 2007年3月28日
首先要感谢这本书的另外一位作者欧文盛,书中 Qt GUI 部分(第 9 章到第 12 章)主要 由他来完成,由于他这几年一直在国际知名的通信公司从事 Qt 方面的开发工作,所以这部 分由他来完成,出版社和我都很放心。其次,我要感谢我的妻子,很特殊的是我写这本书的 时间正是我妻子怀孕的期间,其实在写这本书之前已经得知妻子怀孕,所以本想放弃编写这 本书,但是妻子却很坚定的支持我写这本书。所以,我认为这本书的完成离不开她对我的默 默支持。其次,要感谢我的岳父、岳母,是他们对我妻子这段时间的精心照顾,才使得我有 更多的时间投入到写书中。 最后,要感谢威盛电子的李松,易宏宇,周志勇,张磊等,他们为本书的完成也提供了 很多的帮助。 鉴于作者水平有限,加之时间仓促,本书一定有不少错误与不清楚之处,希望得到广大 读者批评与指正。有兴趣的读者可以发送 E-mail 到 lyf99526@yahoo.com.cn 或登录笔者的个 人 Blog 来做技术上的交流:http://mike2linus.blog.com.cn/。 作者 2007 年 3 月 28 日
第一部分 ARM LINUX系统移植 .12 第1章嵌入式系统开发入门. .13 1.1嵌入式系统介绍.… …13 1.1.1嵌入式系统概述.… 13 1.1.2嵌入式系统组成 心 1.2ARM介绍. 16 1.2.1ARM处理器介绍 17 1.2.2ARM处理器的选型 18 1.2.3S3C2410微处理器介绍 18 1.3ADS集成开发环境介绍. .20 1.3.1ADS软件组成 …21 1.3.1.1命令行开发工具 21 1.3.1.2GUI开发环境 23 13.1.3实用程序… 23 1.3.1.4支持的软件… 24 L.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.1Limc历史. 32 1.4.2Limr开发环境, 33 1.4.2.1GCC介绍...... 35 1.4.2.2 GNU Make介绍.. .36 1.4.2.3GDB介绍. 38 1.4.3 ARM Limx系统开发流程 41 L.5LNUX内核介绍. 43 1.5.1 Linux内核目录结构 4 1.5.2如何阅读Limr内核源代码 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建立环境变量
第一部分 ARM LINUX 系统移植............................................................................................... 12 第 1 章 嵌入式系统开发入门......................................................................................................... 13 1.1 嵌入式系统介绍.................................................................................................................... 13 1.1.1 嵌入式系统概述............................................................................................................ 13 1.1.2 嵌入式系统组成............................................................................................................ 15 1.2ARM 介绍.............................................................................................................................. 16 1.2.1 ARM 处理器介绍............................................................................................................ 17 1.2.2 ARM 处理器的选型 ........................................................................................................ 18 1.2.3 S3C2410 微处理器介绍.................................................................................................. 18 1.3ADS 集成开发环境介绍........................................................................................................ 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.2ARM LINUX 交叉编译工具链的构建..................................................................................... 49 2.2.1 分步构建交叉编译链...................................................................................................... 50 2.2.1.1 建立工作目录..........................................................................................................................50 2.2.1.2 建立环境变量..........................................................................................................................51
..cn 火龙果·整理 2.2.L.3编译、安装Binutils. .51 2.2.1.4获得内核头文件」 .52 2.2.1.5编译安装b00t-tra即gcc 59 2.2.1.6建立gibc库… .54 2.2.17编译安装完整的gcc 55 2.2.1.8测试交叉编译工具链 55 2.2.2用Crosstool工具构建交叉工具链 5 2.2.2.1准备资源文件.… 56 2.2.2.2建立脚本文件 56 2.22.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........ 3.2.27WI. 3.2.3Blob. 62 3.2.4RedBool 62 3.25 ARMboot 63 3.2.6DY… 63 3.3基于S3C2410开发板的BOOTLOADER实现 63 3.3.1S3C2410开发板介绍. 3 3.3.2U-Boot分析与移植 66 3.3.2.1U-Boot Stagel分析 .66 3.3.2.2U-Boot Stage2分析 71 3.3.2.3U-Boot的移植过程 .72 3.4基于S3C2410开发板自己编写BO0TL0ADER 88 3.4.1设计系统的启动流程. 88 3.4.2 BootLoader的具体实现. 90 3.4.2.1设置异常向量表 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.7Main函数的具体实现 96 3.5本章小节 97 3.6常见问题 97 第4章嵌入式LNUX内核移植 .98 4.1移植的基本概念 .98
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
火龙果·整理 子大⊙uml.org.cn 4.2内核移植的准备 .99 4.3内核移植 100 4.3.1内核配置 .100 4.3.l.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.13选择根文件系统 112 4.4.2建立根文件系统…。 …13 4.4.2.1 Cramfs工具包的使用. 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.2Limr设备驱动程序分类 121 5.2最简单的内核模块举例. .122 5.2.1编写Hello World模块. .122 5.2.2编写Hello World模块的Makefile 124 5.2.3加载和卸载Hello World模块 .125 5.3LNUX驱动程序开发要点. .125 5.3.1内存与1/0端口. 125 5.3.1.1内存… .126 5.3.1.2/0端口. 129 5.3.2并发控捌… 130 5.3.2.1自旋锁(Spinlocks) 5.3.2.2信号量(Semaphores) .133 5.3.3阻塞(B1 ocking.)与非阻塞(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.2ARM中断处理 137
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
火龙果·整理 uml.org.cn 5.3.4.3一个Linux中断相关的实例. .139 5.3.5内核调试… 143 5.3.5.1准备内核调试环境 143 5.3.5.2KDB的基本用法. 144 5.4本章小结 146 5.5常见问题 .147 第6章字符设备驱动程序… .148 6.1字符设备驱动介绍. .148 6.1.1字符设备驱动相关的重要结构 .148 6.l.L.1file_operations(文件操作)结构 148 6.1.1.2le(文件)结构. .151 6.1.L.3 inode(节点)结构 l52 61.2主、次设备号. .154 6.12.1主、次设备号的内部表示 .155 6.1.2.2静态分配和释放主设备号 155 6.12.3动态分配主设备号. .156 6.2字符设备驱动开发实例 .157 6.2.1四线电阻式触摸屏原理 157 6.2.2S3C2410触摸屏工作原理 158 6.2.3S3C2410的ADC和触摸屏接口特殊寄存器 159 6.23.1ADC控制(ADCCON)寄存器 159 6.2.3.2ADC触摸屏控制(ADCTSC)寄存器 .160 6.2.3.3ADC开始延迟(ADCDLY)寄存器 .161 6.2.3.4ADC转化数据(ADCDAT0)寄存器 16l 6.2.3.5ADC转化数据(ADCDATI)寄存器.. .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.30pen和release方法 .168 6.2.5.4read和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.11块设备驱动相关的重要结构 .177 7.L.L.1block_device_operations(块设备操作)结构. 177
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
火龙果·整理 大子天大euml.org.cn 7.1.L.2 gendisk结构 .178 7.1.l.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.2S3C2410提供的SD1接口 …186 7.2.3SD1相关的寄存器 444 187 7.2.3.1SDI控制(SDICON)寄存器 188 7.2.3.2SDI波特率预定标(SDIPRE)寄存器。 188 7.2.3.3SDI命令参数(SDICARG)寄存器 188 7.2.3.4SDI命令控制(SDICCON)寄存器. .189 7.2.3.5SDI命令状态(SDICSTA)寄存器... 189 7.2.3.6SDI响应(SDIRSP)寄存器 189 7.2.3.7SDI数据/占用定时器(SDIDTIMER)寄存器 190 7.2.3.8SDI块大小(SDIBSIZE)寄存器. ..190 7.2.4 MMC/SD驱动概要设计 7.2.4.1MMC/SD与主机的接口连接 191 7.2.4.2MMC/SD驱动框架 191 7.2.4.3MMC驱动的核心设计 193 7.2.5MMC驱动程序分析 193 7.2.5.1MMC初始化. 193 7.2.5.2open和release方法… .195 7.2.5.3i0ctl方法. .196 7.2.5.4MMC驱动的request方法. 196 7.2.6S3C2410SD1接口驱动分析. 198 7.2.6.1SDI初始化.... 199 7.2.6.2SDI接口驱动方法 199 7.2.7配置和编译驱动程序 200 7.3本章小结 200 7.4常见问题 200 第8章网络设备驱动程序 …202 8.1网络设备驱动介绍 .202 8.1.1网络设备驱动相关的重要结构 202 8.l.l.lnet_device结构. .202 8.1.L.2 sk buff结构 .204 8.12常见的网络术语 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.2CS8900A的系统应用. .208
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
火龙果·整理 大子大euml.org.cn 8.2.2CS8900A网卡驱动概要设计 209 8.2.2.1CS8900A网卡接口 209 8.22.2网络驱动程序的体系结构.… .209 8.2.2.3网络驱动程序的主要功能 210 8.2.3CS89004适配器驱动程序分析 .21 8.2.3.1初始化. 211 8.2.3.2open和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.1LINUX下GUI介绍 222 9.l1.1Limx桌面GUI系统 222 9.1.L.1 X Window系统. 223 9.1.1.2 GNOME/Gtk+KDE/Qt... .224 9.1.2嵌入式Lir下的GUI系统 ,226 9.2QT/X11介绍 227 9.2.1Qt的历史和Qt/X11的由来.… 227 9.2.2QX11的版权问题 228 9.2.3QtX11及Qt/Windows的系统架构图对比. 228 9.2.4Q1的特性简介 228 9.3 OTOPIA CORE介绍 229 9.3.1 Otopia CoreO/Embedded 229 9.3.2 Otopia 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.1QT/X11的安装 233 10.1.1QX11的下载及双重授权问题的说明 ,233 10.12QX1的安装详解 .234 10.2QT下的HELL0 WORLD.… .235 10.3温度转换的小例子。 237 10.3.1背景知识. 237 10.3.2Qit按钮 237 10.3.3摄氏温度的显示 ,241 10.3.4华氏温度的显示, 243 10.3.5华氏温度和摄氏温度之间的转换 ,247 10.3.6保存当前的数值 251
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
.orgi.cn 火龙果·整理 10.4本章小结 256 10.5常见问题 257 第11章QT核心技术… .258 11.1信号(SIGNALS)和槽(SLOTS) .258 1L.1.1常见的GUⅢ组件通信方式 258 11.1.1.1回调函数 258 11.1.1.2面向对象的回调 .260 11.1.2Q1中的信号和槽Signals and Slots) .261 11.12.1信号和槽历史和所带来的优点 .261 11.1.2.2信号. 261 11.12.3槽 262 11.1.2.4信号和槽的效率… 262 11.1.3自定义信号和槽的小例子 .263 11.2QT对象模型 .266 1l.2.1元对象系统(Meta-Object System) …266 11.2.2信号和槽机制的实现. …272 1l.2.2.1用connection(0建立连接 272 11.2.2.2信号的发射和槽的执行 278 11.2.3元对象编译器m0c. 282 1l.2.3.1在Makefile中使用moc. 282 11.2.3.2m0c用法详解 282 11.2.3.3moc及信号和槽机制的局限性 283 11.3QT的窗口系统. 285 113.1窗口部件之间的树型结构… .285 1l.3.2窗口部件的布局管理(Lot) .288 11.4国际化。 291 11.4.1Q1国际化的基本步骤 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编译qyb .304 12.2.3在gyfb上运行Otopia Core程序.. .305 #.DIGITALCLOCK-QWS-DISPLAY QVFB:0.. .306 12.3移植QT/X11程序到QTOPIA CORE中 307 12.4轻量级的窗口系统. .309
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