首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   嵌入式Linux的MiniGUI研究和移植      ★★★ 【字体: 】  
嵌入式Linux的MiniGUI研究和移植
收集整理:佚名    来源:本站整理  时间:2009-01-10 23:54:48   点击数:[]    

结构如图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则释放内存屏幕。

  DrawPixel、ReadPixel、DrawHLine、DrawVLine及FillRect

  这些是底层图形函数。分别是画点、读点、画水平线、画竖直线及画一个实心矩形。之所以在底层实现这么多函数,是为了提高效率。图形函数支持多种画图模式,常用的有直接设置或Alpha混合模式,从而可以支持各种图形效果。

  PutHLine、GetHLine、PutVLine、GetVLine、PutBox、GetBox及PutBoxMask

  Get* 函数用于从屏幕拷贝像素到一块内存区,而Put*函数用于将存放于内存区的像素画到屏幕上。PutBoxMask 与PutBox的唯一区别是,如果要画的像素是白色,就不会被画到屏幕上,从而达到一种透明的效果。

4 总结与展望

  到目前为止,我们的移植工作已经顺利完成。MiniGUI已经能成功运行在我们的DVD720平台上。作为底层支持的GUI系统,MiniGUI也应该像操作系统一样是开放源码的自由软件,并应该得到开发商的共同推动。到目前为止,已经有多家嵌入式系统开发商采用MiniGUI开发嵌入式系统,并且已经开发出了许多重要的应用程序。我们期望能够有更多的人加入MiniGUI的开发,共同促成MiniGUI成为嵌入式 Linux系统上的标准GUI。尽管MiniGUI目前的功能已经非常强大,并且已经成功应用于许多嵌入式系统,但还需要在如下领域进行开发:

  ◇ 建立一个 C++ 类库来封装MiniGUI的API;

  ◇ 建立基于传统进程级客户/服务器体系结构的 MiniGUI,以便能够让MiniGUI适合于一些较大的嵌入式系统,比如支持全功能浏览器的机顶盒。

随着MiniGUI不断推广和功能的加强,它也将在实际应用中不断走向成熟。实时嵌入式系统上的GUI开发正处于开始阶段。在这个领域,有许多技术难题等待自由软件程序员去解决。




上一页  [1] [2] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:嵌入式系统面向低功耗的协同设计

  • 下一篇文章:uC/OS-II任务栈处理的一种改进方法
  • 返回上一页】【打 印】【关闭窗口
    中查找“嵌入式Linux的MiniGUI研究和移植”更多相关内容 5VAR论文频道
    中查找“嵌入式Linux的MiniGUI研究和移植”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››嵌入式Linux的MiniGUI研究和移植
  • ››嵌入式Linux系统下Microwindows的应...
  • ››嵌入式Linux下基于MiniGUI的信息终...
  • ››嵌入式Linux系统及其应用前景
  • ››嵌入式Linux系统中的GUI系统的研究...
  • ››嵌入式Linux系统CGI程序设计技术
  • ››嵌入式linux在工业控制领域中的应用...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .