保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式Linux系统中的GUI系统的研究与移植


Qt/Embedded的底层图形引擎完全依赖于framebuffer,因此在移植时需考虑目标平台的Linux内核版本和framebuffer驱动程序的实现情况,包括分辨率和颜色深度等在内的信息。当前嵌入式CPU大多内部集成LCD控制器,并支持多种配置方式。除少数CPU低色彩配置时的endian问题外,Qt/Embedded能够较好地根据系统已有的framebuffer驱动接口构建上层的图形引擎。

Qt/Embedded图形发生引擎中的图形绘制操作函数都是由源泉码目录src/kernel/中的src/kernel/qgfxreaster_qws.cpp中所定义的QgfxRasterBase类发起声明的。对于设备更加底层的抽象描述,则在src/kernel目录中的qgfx_qws.cpp中的Qscreen类中给予相应定义。这些是对framebuffer设备直接操作的基础,包括点、线、区域填充、alpha混合、屏幕绘制等函数均在其中定义实现。在framebuffer驱动程序调试通过后,配置Qt/Embedded的编译选项,可以保证Qt/Embedded的图形引擎正常工作。

Qt/Embedded中的输入设备,同样分为鼠标类与键盘类。其中鼠标设备在源泉码目录中的src/kernel/qwsmouse_qws.cpp中实现,从该类又重新派生出一些特殊鼠标类设备的实现类,其派生结构如图5所示。

根据具体的硬件驱动程序实现的接口,可以实现类似的接口函数。

Qt/Embedded中对于键盘响应的实际函数位于src/kernel/qkeyboard_qws.cpp中,在qkeyboard_qws.h中,定义了键盘类设备接口的基类QWSKeyboardHandler。具体的键盘硬件接口依然要建立在键盘驱动程序基础上,移植时需要根据键盘驱动程序从该类派生出实现类,实现键盘事件处理函数processKeyEvent()即可。

Qt/Embedded内部对于字符集的处理采用了UNICODE编码标准。Qt/Embedded内部对于字符集的处理采用了UNICODE编码标准。Qt/Embedded同时支持两种对于其它编码标准(如GB2312和GBK)的支持方式:静态编译和动态

插件装载。通过配置config.h文件添加相应的编码支持宏定义,可以获得其它编码标准向UNICODE的转换支持,从而在Qfont类中得以转换与显示。由于UNICODE涵盖了中文部分,Qt/Embedded对中文支持也非常好。

Qt/Embedded能够支持TTF、PFA/PFB、BDF 和QPF字体格式。由于自身采用UNICODE编码方式对字符进行处理,在一定程序上导致了能够使用的字体文件体积的增大。为了解决这一问题,Qt/Embedded采用了QPF格式,使用makeqpf等工具可以将TTF等格式的字体转换至QPF格式。图6为笔者在自行设计的MC9328系统上移植Qt/Embedded和Qtopia套件后,增加中文支持后的显示截图。Qt/Embedded版本为2.3.7,Qtopia版本为1.7.0。

4 结论

综上所述,一个具备良好移植性的嵌入式GUI系统,其底层接口应该在很大程度上隐藏具体硬件的实现细节,抽象出GAL与IAL层。对于字符集的支持,也可以从MiniGUI的字符集支持方式和Qt/Embedded的UNICODE支持方式上获得启发。

《嵌入式Linux系统中的GUI系统的研究与移植(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/156511.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。