轻量级嵌入式Linux图形驱动程序与图形用户接口

更新时间:2023-08-05 17:36:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第28卷第3期

2008年3月

北京理工大学学报

Transactionsof

V01.Z8

NO.3

BeijingInstituteofTechnology

Mar.2008

轻量级嵌入式Linux图形驱动程序与图形用户接口

金锋,

武志辉

(北京理工大学信息科学技术学院自动控制系,北京100081)

要:旨在研究轻量级嵌入式Linux图形驱动程序与图形用户接口的设计方法.在ARM9平台下,通过对显示

模块sedl335的Linux图形驱动程序及图形用户接口的描述,介绍了基于Linux图形驱动程序及轻量级图形用户接口的编写方法,实现了一套轻量级的图形用户接口.应用结果表明,该系统具有良好的扩展性、稳定性和较快的响应速度,能便捷地应用于类似的系统.

关键词:轻量级;嵌入式Linux;图形驱动程序;图形用户接口中图分类号:TN

79

文献标识码:A文章编号:1001-0645(2008)03-0233-04

LightweightGraphicsDeviceDriverandGraphicalUser

InterfaceBasedon

JINFeng.

Embedded

Zhi—hui

Linux

WU

(DepartmentofAutomaticContol,SchoolofInformationScienceandTechnology,

BeijingInstituteofTechnology,Beijing100081,China)

Abstract:A

newlightweight

on

graphics

user

interface(GUI)andsystem,sedl335

graphics

devicedriver

as

were

introducedbasedthe

platformbe

ofARM9

to

wasincludedthe

graphics

modular.Thesystem

can

applied

similarsystemswithmoreconvenienceandprovide

comprehensiveapplicationvalueforitsadvantagesinexcellentexpansibility,highstabilityand

fastresponsespeed.

Keywords:lightweightsystem;embeddedLinux;graphicsdevicedriver;graphical

user

interface

废气监测系统已逐渐向小型化、智能化、环保化靠拢,作者研究的某废气监测系统即是这一大趋势的产物.该系统采用ARM9为核心,操作系统采用Linux,系统主要包括数据采集、数据分析和显示3部分,作者研究主要显示部分的设计.传统单片机显示部分代码可重用度不高,而Linux自带的Framebuff在某些系统中显得过于臃肿,所以采用自行设计的图形用户接口.

驱动程序在Linux内核里扮演着特殊的角色,它们是截然不同的“黑盒子”,能使一部分硬件响应定义好的编程接口.驱动程序完全隐藏了设备工作的细节,用户的活动通过一套标准化的调用程序进行,这些调用与驱动是相互独立的.设备驱动的作

收稿日期:2007一07—26

用是将这些调用映射到和实际硬件设备相关的操作上[1].图形用户接口位于用户应用程序和图形驱动程序之间,是能快速部署的中间层软件.作者设计了基于sedl335的图形驱动程序和独立的图形用户接口,该驱动程序及图形用户接口已应用于某废气监测系统.1

图形驱动程序与图形用户接口

拥有图形用户界面的计算机通过窗口系统管理

应用程序在屏幕上的显示.图形用户界面系统的组成结构如图1所示[2].其中Application为用户应用程序,Toolkit和WindowingSystem可以理解为图形用户接口,OperatingSystem包含图形驱动.

作者简介:金锋(1970一),女,博士后,教授,E-mail:jinfen9226@163.com.

万方数据 

234

北京理工大学学报

第28卷

作者进行了ToolKit,WindowingSystem以及操作系统中图形驱动部分的研究工作,并已经应用于某废气监测系统用户应用程序中.

[至Ap巫plica丑tion

[]画互]

匝垂亟至习

匝三亘困

图1

图形用户界面系统的组成

Fiu.1

ComDonentsof垡raDhics

user

interface

2图形驱动程序设计

2.1

Linux设备驱动程序的概念

系统调用是通过操作系统内核和应用程序之间

的接口,设备驱动程序是操作系统内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样对应用程序来说,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作.设备驱动程序是内核的一部分,它完成以下工作:

①对设备初始化和释放;

②将数据从内核传送到硬件和从硬件读取数据;

③读取应用程序传送给设备文件的数据和回送应用程序请求的数据;

④检测和处理设备出现的错误.

在Linux操作系统下有两类主要的设备文件类型,一种是字符设备,另一种是块设备[3].

以下对本驱动程序中的重要部分予以说明.

2.2

i/o内存的二次映射及释放

使用I/o内存时最普遍的硬件和软件处理方

式如下:设备对应于某些约定的物理地址,但是CPU并没有预先定义访问它们的虚拟地址.这些约定的物理地址可以是硬件连接到设备上的,也可以是在启动时由系统固件(如BIoS)指定的.不管哪种方式,为了让软件可以访问I/0内存,必须有一种把虚拟地址赋予设备的方法.这个任务由iore—map函数完成Hj.

#include<asm/io.h>

void*ioremap(unsignedlongphys_addr.un—

signedlongsize);

万 

方数据voidiounmap(void*addr)l

ioremap的作用是把一个物理内存地址点映射为一个内核指针,被映射数据的长度由size参数设定.本模块的功能是把一块SRAM区域二次映射到一个可以从驱动程序里访问的虚拟地址上去.

必须在卸载模块时解除映射关系和释放二次映射的区域.把ioremap函数返回的那个指针传递到iounmap函数可以解除映射关系,即

voidiounmap(void*address);

一旦有了ioremap和iounmap,设备驱动程序就能访问任何I/o内存地址,而不管它是否直接映射到虚拟地址空间.

本驱动中使用:

m—psedl335一(psedl335一dev)ioremap—no—

cache

(sedl335一sys—addr,ebi—sedl335一size);iounmap(m—psedl335);

其中ioremap—nocache将在一init方法中被调用,实现二次映射;iounmap将在模块卸载时调用,解除映射关系和释放二次映射的区域.

2.3

填充file_operations结构

由于用户进程是通过设备文件同硬件打交道

的,所以对设备文件的操作方式是一些系统调用,如open,read,write,close,……,而不是fopen,fread,……,但是要把系统调用和驱动程序关联起来,需要填充file_operations数据结构:

struct

file_operationssedl335—.fops=

owner:this—module,

open:

sedl335一open,release:sedl335一release,ioctl:sedl335一ioctl,write:

sedl335一write,

};

该结构的每一个成员名字都对应着一个系统调用.用户进程利用系统调用对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,然后把控制权交给该函数.

2.4

图形驱动程序中设备操作的重要函数sedl335将64kB显示RAM分成文本显示特

性区和图形显示特性区,在文本显示特性区RAM中每个字节的数据都认为是字符代码,在图形显示

第3期金锋等:轻量级嵌入式Linux图形驱动程序与图形用户接口

235

特性区RAM中每个字节的数据直接被送到液晶显示模块上,这为绘图和输出字符以及汉字提供了方便.sedl335提供了丰富的指令集,选择其中一部分即可满足系统的需要.此外,sedl335分为4个显示区,可满足单屏和双屏的需要,在驱动程序中采用了单屏显示,第一显示区用作文本显示,第三显示区用作图形显示.sedl335一ioctl函数是驱动程序中重要函数之一,完成开/背光、设置显示层以及坐标、画图等功能.sedl335一ioctl结构如图2所示,sedl335一ioctl函数定义如下:

staticintsedl335一ioctl(structinode*inode,

struct

file*file,unsignedintcmd,unsignedlong

arg){};

cage

LCD_CLEAR:清屏将设备从设备数

组中读取出来

Pa马e

BACKLIGHT_OFF:关背光

pflko,e,BACKLIGHT_ON:开背光

case

COL_j'ARA_GET:读当前显示层和坐标

判断ioctl命令

c∞eswitch(cmd)

COL_PARA_SET:设置显示层和坐标c∞e

CUESOR—DIR—SET:设置光标自动移动case

SET_LINE_DRAW:画直线case

INVERT.-DIS_ON:反显指定区域

case

INVERT_DIS_OFF:取消反显指定区域

图2

sedl335一ioctl方法

Fig.2

sedl335..ioctlmethod

图形用户接口

图形用户接口(graphical

user

intedace,GUI),

通常人机交互图形化用户界面设计经常读作“goo-ee”,准确来说GUI就是屏幕产品的视觉体验和互动操作部分.

现在面向嵌入式Linux系统的图形用户界面包括:MicoroWindows/NanoX,OpenGUI,MiniGUI,ucGUI,LGUI,swGUI等.嵌入式GUI具备以下特点:

①体积小;

②运行时耗用系统资源小;

③上层接口与硬件无关,高度可移植;④高可靠性;

⑤在某些应用场合应具备实时性.3.1嵌入式Linux的GUI系统底层实现基础

一个能够移植到多种硬件平台上的嵌入式GUI系统,应用方面至少抽象出两类设备:基于图

万 

方数据形显示设备(如VGA卡)的图形抽象层GAL

(graphicabstract

layer)和基于输入设备(如键盘,

触摸层等)的输入抽象层IAL(input

abstractlay—

er).GAL层完成系统对具体的显示硬件设备的操作,尽量隐蔽各种不同硬件的技术实现细节,为程序开发人员提供统一的图形编程接口.IAL层则需要实现对于各类不同输入设备的控制操作,提供统一的调用接口.GAL层与IAL层的设计概念如图3所示.它们可以极大地提高嵌入式GUI程序的可移植性.

API编程接口嵌入式GUI

图3可移植嵌入式GUI的结构

Fig.3

Structureof

portable

embeddedGUI

3.2图形用户接口的特点

①对嵌入式系统,采用C语言编程以提高程序运行速度.

②对IAL层简化,去掉对鼠标设备的支持以适应某些自动设备的需要..

③支持点阵字库.

④对屏幕显示用structwindow进行封装.⑤对每个按钮、输入框、静态框等用structcontroller进行封装.

⑥整个系统采用多线程,void*read—key—

thread()线程读取用户输入;void*screen—thread()线程进行屏幕刷新等操作;void*back—compute_thread()线程对数据进行处理操作.3.3输入及用户指令

对于用户指令及用户输入(对于读取函数来说都只表现为单个字符),使用单一线程void*read—key_thread()进行读取,采用无阻塞方式.并把读到的指令或者用户输入存入缓存,使用堆栈式数据结构,为防止void*read—key—thread()和void*back_compute_thread()对输入缓存读取时发生竞争,使用pthread—mutex—lock(&m—mutex)函数对输入缓存进行控制.

3.4用户设定输入处理函数

采用类似于WindowsTM的窗口回调函数,便于用户设定自己的消息处理函数.每一个控件(按钮、输入框、静态框等)也可以定义各自的消息处理函

236

北京理工大学学报

第28卷

数,更方便用户针对各种不同应用编写特定的消息处理函数.各种回调函数的调用级别如图4所示.

口具有以下特点:

①具有良好的扩展性、较高的稳定性和较快的响应速度;

②适用于工业领域;

③对窗口以及控件有良好的封装.

但是,本系统在对字符集的支持、窗口间的协调等方面还需进一步改进.

参考文献:

E13

Corbet

J,RubiniA,Kroah-hartmanG.Linuxdevice

drivers[M].Cambridge:O’ReillyMedia,2005:1—2.[23Feynman.MiniGui

programming

guide[M].Beijing:

FeynmanSoftwareTechnologyCo.,Ltd,2006:31—32.

图4回调函数

Fig.4

Callbackfunctions

[33

Corbet

J,Rubini

A,Kroah-hartmanG.Linuxdevice

drivers[M].Cambridge:O’ReillyMedia,2005:5—7.[4]Matthew

N,Stone

R.Linux程序设计[M].杨晓云,王

建桥,杨涛,等译.北京:机械工业出版社,2002.

MatthewN,StoneR.DesignofLinuxprogramming

[M].YangXiaoyun,WangJianqiao,Yang

Tao,etal

结论

transl.Beijing:ChinaMachinePress,2002.(inChi—

nese)

本驱动程序及图形用户接口已应用于某废气监测系统用户应用程序中,作者所开发的图形用户接

(责任编辑:康晓伟)

(上接第210面)

社,2005.

YuFan,LinYi.Vehicle

dynamics[M].Beijing:China

结论

MachinePress。2005.(inChinese)

针对传统的转向系统转向性能的不足即“转向特性随车速以及转向盘转角的变化,传动比不变,给驾驶员带来较大的体力和精神负担”的问题,提出了3种线控转向变传动比控制规律,有效改善了车辆的转向特性.并对各种变传动比控制方案对整车操纵稳定性能的影响进行了分析,比较了各种变传动比控制规律的优缺点.仿真结果表明:基于方案3设置的变传动比控制规律整体性能最好.

参考文献:

[3]ChenJS.Control

[C]//SAE

ofelectric

powersteeringsystems

Automo—

Paper.Detroit,USA:Societyof

tiveEngineering,1998:981116.

[43

FarhadS.Acontrolwire

systemmethodologyfor

steer

by

systems[C]//SAE

paper.Detroit,USA:Society

ofAutomotiveEngineering,2004:2004一Ol一1106.

[5]Motoaki

Hosaka,ToshiyukiMurakami.Yaw

ratecon—

trolofelectricvehicleusingsteer-by-wireThe8thIEEEInternationaltion

systemiC]//

Workshop,AdvancedMo—

Press,2004:

Contr01.Kawasaki,Japan:IEEE

31-34.

[1]余志生.汽车理论[M].3版.北京:机械工业出版

社,2000.

Yu

[6]TanakaT,DaikokuA,ImagiA,eta1.Anadvanced

e—

lectricalpowersteeringmotor[C]//SAE

Paper.De—

Zhisheng.Automobiletheory[M].3rded.Beijing:MachinePress,2000.(inChinese)

troit,USA:Society

2000一01一0824.

of

AutomotiveEngineering,2000:

China

[2]喻凡,林逸.汽车系统动力学[M].北京:机械工业出版

(责任编辑:匡梅)

万方数据 

轻量级嵌入式Linux图形驱动程序与图形用户接口

作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:

金锋, 武志辉, JIN Feng, WU Zhi-hui

北京理工大学信息科学技术学院自动控制系,北京,100081北京理工大学学报

TRANSACTIONS OF BEIJING INSTITUTE OF TECHNOLOGY2008,28(3)2次

参考文献(4条)

1.Corbet J;Rubini A;Kroah-hartman G Linux device drivers 20052.Feynman MiniGui programming guide 2006

3.Corbet J;Rubini A;Kroah-hartman G Linux device drivers 20054.Matthew N;Stone R;杨晓云;王建桥,杨涛 Linux程序设计 2002

本文读者也读过(1条)

1. 靳京.桑楠.刘一.JIN Jing.SANG Nan.LIU Yi 基于XML的嵌入式Linux系统用户界面定制[期刊论文]-电子科技大学学报2007,36(3)

引证文献(3条)

1.代鑫.张承宁.王志福.李军求 基于CAN总线通讯混合动力挖掘机显示终端开发[期刊论文]-现代科学仪器 2010(2)2.赵小欢.夏靖波.李明辉 基于ARM和FPGA的视频监控系统设计[期刊论文]-液晶与显示 2010(1)3.苏锦.王震.陈嘉丰 基于arm的虚拟直流电测量仪器[期刊论文]-现代电子技术 2013(8)

本文链接:http://www.77cn.com.cn/Periodical_bjlgdxxb200803012.aspx

本文来源:https://www.bwwdw.com/article/ht3m.html

Top