《GUI的移植和开发.docx》由会员分享,可在线阅读,更多相关《GUI的移植和开发.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式图形系统c/GUI的移植和开发ronggang导语:本文首先概述嵌入式系统及其嵌入式图形系统gui的现状,然后详细描绘c/GUI图形系统和其移植重点、程序开发以及和其他图形系统比拟优缺点嵌入式系统的开发已成为新的行业热门,而嵌入式图形系统的开发近年来随着嵌入式系统的深化而不断推陈出新。本文首先概述嵌入式系统及其嵌入式图形系统gui的现状,然后详细描绘c/GUI图形系统和其移植重点、程序开发以及和其他图形系统比拟优缺点。gui在嵌入式系统或者实时系统中的地位越来越多的市场需求数据显示,包括pda、娱乐消费电子、机顶盒、dvd等影音设备、wap手机等高端电子产品得到广泛应用,原先仅在军工、工
2、业控制等领域中使用的gui图形系统,受到越来越多的关注。对于轻量级gui的系统而言,对gui的要求相对较低,如传统51类型单片机这类系统一般不希望建立在庞大负担的、非常消耗系统资源的操纵系统和gui之上,如windows或者xwindow。目前此类系统都直接使用原有编程手段,采用比拟简单的手法实现gui。对于太过庞大和臃肿的gui系统而言,c/gui这类可运用于此类资源较紧张的轻型gui的需求更加突出。c/gui简介及其配制c/gui是美国mICrium公司出品的一款针对嵌入式系统的优秀图形软件。它是为任何使用lcd图形显示的应用提供高效的独立于处理器及lcd控制器而设计的图形用户接口,它适用
3、单任务或者是多任务系统环境。架构基于模块化设计,由不同的模块中的不同层组成。包括液晶驱动模块,内存设备模块,窗口系统模块,窗口控件模块,反锯齿模块和触摸屏及外围模块。其主要特性包括丰富图形库,多窗口、多任务机制,窗口治理及丰富窗口控件类按钮、检验框、单/多行编辑框、列表框、进度条、菜单等,多字符集和多字体支持,多种常见图像文件支持,鼠标、触摸屏支持,灵敏自由配制等特性。图1c/gui模块及开发套件在开发套件上,c/gui提供诸多工具辅助开发,包括位图转换器,字体转换器,c/guiviewer和非常完善的基于pc平台的模拟器,如图1所示,其中c/gui核心模块和lcd驱动模块是必须的,其他均是可
4、配置可选择模块。由于c/gui并非针对某一平台而设计,它可以运行于所有支持ansic的平台上,所以在pc上调试成功的应用程序可以原封不动的移植到平台上,防止繁琐的片上调试经过。c/gui可以在任何的cpu上运行,可以适应绝大多数的使用黑白或者彩色lcd的应用,它提供非常好的允许处理灰度的颜色治理。还提供一个可扩展的2d图形库及占用极少ram的窗口治理体系。在c/gui的最初典型配制可包括是否需要操纵系统支持,是否需要内存设备支持,是否需要窗口支持,是否需要抗锯齿支持等诸多选项,这对于gui的定制和gui的体积是非常重要的。小型系统需求ram100bytes,堆栈500bytes,rom10kb
5、ytes,完全知足资源非常紧张的系统之中。c/gui移植重点和应用程序开发1首先定义guiconf.h和lcdconf.h这两个文件,前者是c/gui功能模块和动态存储空间用于内存设备和窗口对象大小,默认字体设置等根本gui预定义控制的定义。后者lcdconf.h为lcd大小,控制器种别,总线宽度,颜色选取等lcd参数控制文件。gui/core/lcd_confdefaults.h文件内可以找到所有囊括lcd配制默认选项,包括lcd屏个数,控制器个数,调色板,屏幕反向设置等诸多配制选项。假如装备触摸屏可以通过guitouchconf.h进展配制,根据触摸屏及其控制芯片编制以下几个函数voidt
6、ouch_x_activatexvoid;/预备y轴数据测量voidtouch_x_activateyvoid;/预备x轴数据测量inttouch_x_measurexvoid;/根据ad转换结果返回x的值inttouch_x_measureyvoid;/根据ad转换结果返回y的值以上几个函数在gui_touch_exec会被调用。2对于lcd自带控制器种别的液晶屏,通过lcdconf.h中的总线接口和存放器接口进展硬件接口的配制和定义。对于片上集成lcd控制器平台而言,通过对片内lcd控制器存放器的设置来配制lcd接口信号。在一般的lcd中需要配制的lcd接口信号包括vframe帧同步信号,
7、vline线同步脉冲信号,vclk象素时钟信号,vm信号和数据位不等的象素点数据输出信号。3lcd驱动编程的本质是液晶屏上的点对应的显存编程,最底层调用函数为画点函数,用户可根据自身平台情况根据总线接口和存放器接口或lcd控制器存放器进展操纵。_setpixel,_getpixel,xorpixel为最底层直接对显存操纵函数。mc/gui提供局部控制器驱动,文件为gui/lcddriver/lcdslin.c,如sed1335,t6963等简单lcd控制器。核心函数为lcd_write._setpixel调用lcd_write写显存。4在samplegui_x文件夹内包括有与硬件联络严密的文件
8、,包括gui_x.c,gui_x_embos.c,gui_x_ucos.c等文件,gui_x.c包括大局部与硬件的关联函数,如定时器的初始化和触摸屏相关函数。mc/gui与操纵系统挂接的核心是定时器的设置和挂接。c/GUI是通过延时函数gui_delay调用gui_x_delay,再调用gui_exec处理窗口部件中的回调函数进展重绘。在任何一款嵌入式操纵系统中都需要定时器的心脏跳动作用,支持os的c/gui可以通过定时器的设置到达嵌入式操纵系统和图形系统的实时和同步操纵。在gui_x_ucos.c中通过c/os中的延时程序同c/gui挂接实现整合。图2c/gui软件构造图5经过移植之后,gu
9、i应用程序开发通过c/gui而变得非常轻易,在调用gui_init后,用户可以根据需要正确配制c/gui后,可使用其强大的库函数和丰富的gui资源进展编程。在gui编程经过中,可以翻开抗锯齿功能减小图形失真,得到高质量的图形和字体效果。采用内存设备能有效克制闪烁现象,获得更快的显示速度,但它和抗锯齿功能一样需要额外的内存开销。c/gui和其他图形系统的比拟1c/gui上风在于其体积小,配制性强,运用领域非常之广泛。相对于诸多嵌入式图形系统,如mICrowindows/nanox,opengui,qt/embedded,minigui等,只要知足ram100bytes,堆栈500bytes,ro
10、m10kbytes的小型系统中都可以运行c/gui,而这个需求是其他图形系统所不及的,可以广泛运用到国内已经运用非常成熟的单片机系统内,增强系统性能。在资源丰富的大型系统中,也只需要ram2-6kb,堆栈1200bytes,rom30-60kb就可以知足mc/gui的各种功能。比照于其他图形系统最少几百k,动辄上m的系统而言是非常有上风的。其诸多的配制,知足不同需求用户需要,方便灵敏小巧,实用性大大增强。2平台的广泛性,移植方便。由于c/gui是100%c编写,适应绝大多数软硬平台,其适应性非常强,相对于诸多具有软硬件针对性的图形系统而言,构造划分和模块划分非常明晰,分设专门的lcd驱动模块,移植简单方便。代码量相对较小,易操纵可扩展性强,方便用户定制和自主更新完善知足个性需求。本文着重介绍了c/gui和其移植方法,作为一个面向嵌入式系统的图形用户界面支持系统,c/gui系统需求、执行效率、可定制方面非常出色,体积小,移植方便,程序适应平台广泛,在嵌入式系统研发经过中大大简化了图形系统开发的周期和难度,具有很高的实用价值。