网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > GUI > 文章  
嵌入式Linux系统的MiniGUI研究和移植
文章来源: 单片机及嵌入式系统应用 文章作者: 闫玉忠 发布时间: 2006-09-28   字体: [ ]  
 

  2.2 MiniGUI的体系结构

  从整体结构上看,MiniGUI是分层设计的,层次结构如图1所示。在最底层,GAL和IAL提供底层图形接口以及鼠标和键盘的驱动;中间层是MiniGUI 的核心层,包括窗口系统必不可少的各个模块;最顶层是API,即编程接口。GAL和IAL为 MiniGUI提供了底层的Linux控制台或者X Window 上的图形接口以及输入接口,而Pthread用于提供内核级线程支持的C函数库。

  利用GAL和IAL,大大提高了MiniGUI的可移植性,并且使程序的开发和调试变得更加容易。可以在X Window上开发和调试自己的MiniGUI程序,通过重新编译就可以让MiniGUI应用程序运行在特殊的嵌入式硬件平台上。

  3 MiniGUI的移植

  笔者的项目DVD720工作在μC/OS嵌入式操作系统下,核心CPU为MIPS芯片。该平台是SUNPLUS公司提供的一个多媒体平台,不仅仅实现DVD的播放,还包含一些附加功能,例如游戏、卡拉OK、VOD及上网等功能,并为用户提供了编程接口,使用户可以在DVD上对Lego公司的机器人进行控制。为了给用户提供一个友好的界面,以及从易用性和通用性方面考虑,将MiniGUI移植到我们的DVD720平台。DVD720平台的体系结构如图2[6]所示。由于MiniGUI的分层实现,需要考虑的只是HAL接口下的各驱动程序:鼠标驱动程序、键盘驱动程序及图形驱动程序。

  3.1 鼠标和键盘驱动程序

  鼠标驱动程序非常简单。抽象意义上讲,初始化鼠标后,每次用户移动鼠标,就可以得到一个X 和 Y 方向上的位移值。驱动程序内部维护鼠标的当前位置,用户移动鼠标后,当前位置被加上位移值,并通过上层Cursor支持,反映到屏幕上,用户就会认为鼠标被正确地“移动”了。现在有各种各样的鼠标,例如MS鼠标、PS/2鼠标、总线鼠标及GPM鼠标等,其主要差别在于初始化和数据包格式上。键盘驱动程序的实现也比较简单,在此不作详细的介绍。

  3.2 图形驱动程序

  HAL提供的接口函数大多与图形相关,主要就是通过调用图形驱动程序来完成任务的。图形驱动程序屏蔽了底层驱动的细节,实现底层驱动相关的功能,而不是硬件相关的一些功能,如一些画圆和画线的GDI函数、普通的剪切,可直接在HAL接口层实现。

  DVD720的显示驱动是基于Frame buffer的驱动程序的。通过对SDRAM中的frame buffer和video bitstream buffer写入,就可以实现对TV和显示器的刷新。像素的写入方式和顺序如图3所示[6]。

  下面介绍各接口函数:

  Open,Close

  基本的初始化和关闭函数。在Open函数里要选择子图形驱动程序,将其实现的函数赋给本PSD 结构的函数指针。这里只考虑基于Frame buffer的图形引擎的初始化。

  SetPalette,GetPalette

  当使用8位或以下的图形模式时,要使用系统调色板。这里是调色板处理函数,它们和Windows API中的概念类似。Linux系统利用ioctl 提供了处理调色板的接口。

  AllocateMemGC,MapMemGC,FreeMemGC

  内存屏幕是一个伪屏幕。在对屏幕图形操作过程中,比如移动窗口,先生成一个内存屏幕,将物理屏幕的一个区域拷贝到内存屏幕,再拷贝到物理屏幕的新位置,这样就减少了屏幕直接拷贝的延时。AllocateMemGC用于给内存屏幕分配空间,MapMemGC做一些初始化工作,而FreeMemGC则释放内存屏幕。

 
推荐文章
·恰当选择嵌入式Linux环境下的GUI
·基于 GTK+ 和 X-window 的 GUI
·基于Qt/Embedded和Qtopia的GUI设
·恰当选择嵌入式Linux环境下的GUI
·嵌入式Linux系统中的GUI系统的研
·QTE/Qtopia在Liod-270上的移植
·基于Qt/Embedded的GUI移植及应用
 

 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·基于Qt/Embedded的GUI移
·基于Qt/Embedded和Qtopi
·嵌入式Linux系统中的GUI
·QTE/Qtopia在Liod-270上
·Qt/Embedded在嵌入式Lin
·基于 GTK+ 和 X-window
·恰当选择嵌入式Linux环
·恰当选择嵌入式Linux环
相关文章
·恰当选择嵌入式Linux环
·基于嵌入式Linux的智能
·基于Linux的嵌入式网络
·嵌入式Linux操作系统CGI
·嵌入式Linux平台的多协
·Linux下ARM/DSP双核系统
·制作基于软盘的Linux系
·嵌入式uClinux的内核结
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统