250 likes | 532 Views
第 11 章 充分利用开源软件. 本章介绍了嵌入式 Linux 系统常用的开源软件,包括系统工具、图形库、网络和串口应用程序等。通过学习本章介绍的开源软件,可以熟悉 Linux 系统所需要的各种软件,学会使用开源软件实现嵌入式 Linux 系统功能。. 本章目标. Busybox 使用 Linux 图形系统 Linux 的网络应用 Linux 的串口通讯. 11.1 开放源代码工程介绍. 以下简单地回顾一下开源工程的发展历史。 1968 年, Internet 的先驱, ARPANET 建立。
E N D
本章介绍了嵌入式Linux系统常用的开源软件,包括系统工具、图形库、网络和串口应用程序等。通过学习本章介绍的开源软件,可以熟悉Linux系统所需要的各种软件,学会使用开源软件实现嵌入式Linux系统功能。本章介绍了嵌入式Linux系统常用的开源软件,包括系统工具、图形库、网络和串口应用程序等。通过学习本章介绍的开源软件,可以熟悉Linux系统所需要的各种软件,学会使用开源软件实现嵌入式Linux系统功能。 www.farsight.com.cn
本章目标 • Busybox使用 • Linux图形系统 • Linux的网络应用 • Linux的串口通讯
11.1 开放源代码工程介绍 • 以下简单地回顾一下开源工程的发展历史。 • 1968年,Internet的先驱,ARPANET建立。 • 1969年,贝尔实验室的Ken Thompson研究员设计了Unix的第一个版本,这是一个多用户,多任务的操作系统。 • 1971年,作为开放源码的先驱,Richard Stallman加入了麻省理工学院的一个专门研究免费软件的组织。作 • 1997年,开放源码促进会(Open Source Initiative,www.opensource.org)正式成立,它给予了开放源码一个官方的、正式的定义。 • 开放源代码软件是在开放源代码许可证下发布的软件,以保障软件用户自由使用及接触源代码的权利。
11.1.1 Linux系统和开源软件 • 1981年IBM公司推出享誉全球的微型计算机IBM PC。 • 当时的另一个计算机软件技术的阵营是Unix世界。 • 1987年,开发者Andrew Tanenbaum发布了Minix • 1991年初,GNU计划已经开发出了许多工具软件 • 1991年的10月5日,Linus在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核系统的诞生 • 1994年3月14日,正式的Linux内核1.0版本发布,约有17万行代码。 • 1996年2月9日,Linux内核2.0版本发布 • 1999年1月,Linux内核2.2测试版发布 • 2001年1月4日,Linux内核2.4正式发布。
11.1.2 开源软件的特点 • 用户可以自行修改软件代码。 • 免费修改、免费重新发布,就是参与的人员可以直接了解各种开发和应用的方式,并且可以参与讨论,参与开发。 • 避免了传统模式需要花费大量成本的弊端,也降低了用户的应用成本,开源软件所使用的软件开发和应用都充分体现了“开放”和“共享”的思想。
11.2 Busybox使用 • Busybox工程于1996年发起,本身就是一个很成功的开源软件,其目的在于帮助Debian发行套件来建立磁盘安装。 • 1.拷贝Busybox源码压缩文件到指定目录,并解压 • 2.对Busybox进行配置,运行make menuconfig命令 • 3.编译 • 4.安装
11.3 X11图形系统 • 11.3.1 X Windows介绍 • X Windows系统也是一个基于客户/服务器(Client/Server)结构的窗口系统。X Windows系统是目前最常用的免费图形系统,配置在大多数的Unix系统、DEC的VAX/VMS操作系统以及Linux系统中。
11.3.2 Tiny-X介绍 • Tiny-X是标准X-windows系统的简化版,去掉了许多对设备的检测过程,无需设置显示卡Driver,很容易对各种不同硬件进行移植。Tiny-X专为嵌入式开发,适合用作嵌入式Linux的GUI系统。Tiny-X图形系统是由SuSE赞助的,开发人员是XFree86的核心成员Keith Packard。目前Tiny-X是XFree86自带的编译模式之一,只要通过修改编译选项,就能编译生成Tiny-X。
11.3.3 GTK图形库 • GTK(GIMP工具箱,GIMP ToolKit)是一个功能强大而且快捷的开放源码图形库,用于Unix/Linux上的X-Window系统,程序员可以用来创建按钮、菜单及其他图形对象,GTK最初是GIMP的专用开发库,后来发展为Linux下开发基于X-Window图形界面应用程序的主流开发工具之一,其本身就是自由软件,是GNU工程的一部分,因此可以用GTK+开发开放源码软件、自由软件,甚至商业的、非自由的软件。 • GTK具有以下的一些特性。 • 动态类型系统。 • 用C语言编写的对象系统,可实现继承、类型检验,以及信号/回调函数的基础结构。 • 类型和对象系统不是特别针对GUI的。 • GTKWidget对象使用对象系统,它定义了GTK+的图形组件的使用接口。 • 大量的GTK Widget子类(构件)。 • 一般来讲,编写GTK程序主要有以下几个过程。 • ① 初始化 • ② 创建主窗口 • ③ 创建并加入子窗口 • ④ 设置组件回调 • ⑤ 显示窗口 • ⑥ 进入事件循环
11.4 Qt图形库 • 11.4.1 Qt介绍 • Qt是由挪威TrollTech公司开发的跨平台C++图形用户界面开发工具,也是该公司的一个标志性产品,有商业版和免费的版本两种。程序开发员利用Qt可以编写单一代码的应用程序,并可在Windows、Linux、Unix及Mac OS X和嵌入式Linux等不同平台上进行本地化运行。目前,Qt已被成功地应用于全球数以千计的商业应用程序。此外,Qt还是开放源代码KDE桌面环境的基础。TrollTech公司在1995年推出了Qt的第一个商业版本,直到现在Qt已经被世界各地跨平台的开发人员所使用,而Qt的功能也得到了不断的完善和提高。Qt以工具开发包的形式提供给开发者,这些开发包包括了图形设计器、Makefile制作工具、字体化国际工具和Qt的C++类库等,Qt的一个显著特点是跨平台特性,目前Qt支持的操作系统平台包括以下几种。 • Windows系列 • Unix/Linux/Solaris • 包含有FramBuffer(帧缓冲)的嵌入式Linux平台 • Macintoshi Mac OSX
11.4.2 Qt/Embedded介绍 • Qt/Embedded是一个专为访问嵌入式设备的API,Qt/Embedded同样采用的是Server/Client结构,Qt/Embedded类库完全采用C++封装。 • 1.Qt/Embedded采用framebuffer作为其底层图形引擎 • 2.Qt/Embedded的事件驱动基础
11.4.3 Qt/Embedded架构 • 1.窗口系统 • 一个Qt/Embedded窗口系统包含了一个或多个进程,其中的一个进程可作为服务器。这个服务进程会分配客户显示区域,以及产生鼠标和键盘事件。 • 2.字体 • Qt/Embedded支持4种不同的字体格式:True Type(TTF)、Postscript Type1、位图发布字体(BDF)和Qt的预呈现(Pre-rendered)字体(QPF)。 • 3.输入设备 • Qt/Embedded 3.0支持以下几种鼠标协议。 • BusMouse • IntelliMouse • Microsoft • MouseMan • 4.输入方法 • 需要注意的是:对于非拉丁语系字符(例如阿拉伯文、中文、希伯来文和日文)的输入法,需要把它写成过滤器的方式,并改变键盘的输入。 • 5.信号与插槽机制 • 11.4.4 Qt/Embedded软件包与安装 • 在Linux下安装Qt/Embedded开发环境主要需要3个软件:tmake工具安装包;Qt/Embedded安装包和Qt的X11版的软件安装包。以下列举了上述几个软件包及其版本号。 • Tmake 1.11(或更高版本)软件包(主要用来生成Qt/Embedded应用工程的Makefile文件) • Qt/Embedded 2.3.7(Qt/Embedded的安装包) • Qt 2.3.2 for X11(Qt的X11版的安装包,它将产生X11开发环境所需的2个工具) • 以上这些软件可以从trolltech的Web或FTP服务器上免费下载。
11.5 MiniGUI图形系统 • 11.5.1 MiniGUI图形系统概述 • MiniGUI是一个面向实时嵌入式系统或者实时系统的轻量级图形用户界面支持系统,是我国为数不多的在国际比较知名自由软件之一。MiniGUI遵循GPL条款发布,其目标是为嵌入式Linux系统建立一个快速、稳定和轻量级的用户界面支持系统。经过几年的发展,MiniGui已经成为一个非常成熟和稳定的图形系统,并且在许多实际产品或项目中得到了广泛应用,诸如手持信息终端、机顶盒、工业控制系统及工业仪表、金融终端等产品和领域。 • MiniGui稳定版本的主要特征如下。 • 是遵循GPL条款的自由软件; • 提供完备的多窗口机制和消息传递机制; • 提供丰富的控件,如静态文本框、按钮、列表框、组合框、进度条、属性页、工具栏、拖动条树形控件等; • 对话框和消息框; • 其他GUI元素,包括菜单、加速键、插入符、定时器等; • 界面皮肤支持; • Windows资源文件支持,如位图、图标、光标等; • 各种流行图像文件的支持,包括JPEG、GIF、PNG、BMP等; • 多字符集和多字体支持,目前支持ISO-1~ISO8859-15、GB2312、GBK、GB18030等字符集; • 多种键盘布局支持; • 支持汉字(GB2132)输入法支持,包括内码、全拼、智能拼音; • 增强的新的GDI函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形及区域填充函数。
11.5.2 MiniGUI移植 • 1.搭建开发环境 • 2.编译MiniGUI • 3.安装资源文件 • 4.编译MDE
11.6 MicroWindows图形系统 • MicroWindows也是目前嵌入式系统开发图形系统采用较多的一种方案,对于大多数嵌入式设计,尤其是在运行专用图形程序的场合,X Window不失一种恰当的选择。Microwindows起源于NanoGUI项目,它提供2种接口。 • Microsoft Windows Win32/WinCE图形显示接口(GDI) • Xlib-like接口
11.7 Linux下的网络应用 • 11.7.1 嵌入式设备的网络化 • 在网络应用日益普遍的今天,Internet现已成为国际社会重要的基础信息设施,也是信息流通的重要渠道。将嵌入式系统能连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。嵌入式设备网络化的技术核心是在嵌入式系统中部分或完整地实现TCP/IP协议。
11.7.2 TCP/IP协议概述 • 在当今的网络世界中,正在使用的网络协议主要有2种。 • OSI(Open System Interconnection Reference Model,由国际标准化组织ISO制定) • TCP/IP(Translation Control Protocal/Intenet Protocal)图11.23 OSI 7层协议示意图 • OSI模型各层功能简单介绍如下。 • ① 应用层:即最接近用户的一层。一般是构筑在各种通讯协议上的网络应用软件,与用户直接交互。 • ② 表示层:表示层的功能是用标准的编码方式来统一数据格式,因为不同的计算机系统可能使用不同的数据编码方式,在这一层中要向应用层屏蔽这样的差异。另外,这一层还会完成对一些数据的处理加工。 • ③ 会话层:会话层用来控制传输连接时的数据交换,如传输方向、中断处理等。 • ④ 传输层:传输层使数据能正确无误地传输,控制数据流,TCP、UDP协议属于该层。 • ⑤ 网络层:网络层在发送和接收之间建立一个虚拟的路径,即数据包从发送端到接收端的路由,IP协议属于该层。 • ⑥ 数据链路层:数据链路层对下层传来的数据进行打包,将上层的数据分割成数据帧。 • ⑦ OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等
11.7.3 Linux下的Socket编程 • Linux的套接口通信模式与日常生活中的电话通信非常类似,套接口代表通信线路中的端点,端点之间通过通信网络来相互联系。 • 按其应用,套接口主要有以下两种分类。 • 流式套接字(Stream Socket) • 数据报套接字(Datagram Socket)
11.8 嵌入式Linux的串行通信 • 11.8.1 Linux下的串口操作 • Linux对所有设备的访问是通过设备文件来进行的,串口也是这样。为了访问串口,只需打开其设备文件即可操作串口设备。在Linux系统下,每一个串口设备都有设备文件与其关联,设备文件位于系统的/dev目录下面。如Linux下的/ttyS0,/ttyS1分别表示的是串口1和串口2。
1.串口操作需要用到的头文件 • 2.串口通信波特率设置 • 3.串口属性配置 • 4.打开串口 • 5.串口读操作(接收端) • 6.串口写操作(发送端) • 7.关闭串口
Q&A www.farsight.com.cn
谢谢! www.farsight.com.cn