在嵌入式Linux系统中应用的GTK 和X分析
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-04
gtk_widget_set_font_enlarge (widget, 1); 这是通过在 GtkWidget 结构中加入一个 GdkFont * font 来实现的,GtkWidget 是所有窗口类的父类.如果设置widget->font 那么就使用它,否则就使用widget->style->font. 窗口管理 在嵌入系统GUI中,还需要建立一个窗口管理器.我们可以选择一个开放代码的,轻量级的X管理器,Aewm.在嵌入系统中,我们会将最上层的窗口设置为获得焦点,并且只有对话框能移动,能显示其标题栏. 窗口管理器是一个交互端,它可以管理内部与外部的应用程序的窗口.每一个应用程序的窗口,都会建立一个 socket 连接,并取一个名字.一个应用可以把请求将自己放在窗口堆栈的最下面,或者将一个命名的应用往上移.如果一个对话框要在最上层的窗口上打开,那么窗口管理器就将告诉这个最上层的窗口它将不再获得焦点,而新对话框将获得焦点. 整体尺寸大小 经过一系列的改进后,我们就得到了一个稳定的,功能和性能都能满足嵌入系统要求的GUI了.在arm系统下,得到的尺寸大小为: 其中 GTK 里面仍然还有不需要的代码,可以将其再去除.如果再简化一下的话,GTK 可以做到850KB,总体大小可以到 2.8M. 拥有帝国一切,皆有可能。欢迎访问phome.net 运行性能 将修改过的 GUI 运行在一个 arm7 的系统上,CPU 为 100MHZ,运行时的效果还不错,窗口响应用户操作的速度很迅速,新的画面创建与显示的速度都能接受. 但是,启动时的时间却有些问题,比较慢.在这个 CPU 上,应用程序画面加载与显示的时间需要 2.4秒,其中 1.5 秒是花在了建立与显示 UI 上. 在较慢的 CPU 上,这样的启动速度是 GTK 运行在 X,X 再写到 framebuffer 上导致的.我们需要分析具体的瓶颈在什么地方.在深入的调试中,当使用PC机来运行我们的应用,而在ARM设备上显示时,初始化和显示的时间几乎可以忽略不计.同样,将应用运行在arm设备上,而在PC机上显示时,性能也很好.数据包的传输,framebuffer上的显示及GTK 的运算速度都不是问题所在.速度慢的原因可能是这几个因素的先后顺序引起的.内存的占用上也存在问题.在初始阶段,GTK 构造了大量的对象,GTK 和X是使用共享内存来通讯的,X写到framebuffer,framebuffer也是不变地写到显存上.这些都是发生在一个较窄总线上相同的内存空间里,这个就会引起速度慢. 现在知道了X在启动时比较花费时间.在客户模式下的GTK 的应用,需要连接到X server,通过了认证,得到位深及其他资源.当然,使用X系统的好处要远大于它的不足.X系统提供了一个灵活的client/server模型,这样更有利于应用的灵活加入.你可以在同一时间显示不用的应用窗口,而像GTK /Fb等其他的GUI方式无法做到这一点,当然QPE是个例外. 2.4秒的延时,也并不能完全否定一切.在一个700MHZ的windows系统的PC上,Microsoft Word, Excel and IE几乎都需要2秒的时间来启动.KEdit, 一个KDE的应用程序,在500MHZ的PIII上,加载的时间也需要1.37秒. 对于启动时间,需要采用其他的办法来加以改善.一个策略就是在用户等待的时候,显示一些东西来表示系统正在工作,这样会使用户忽略掉启动时间的缓慢.另一个策略就是可以预先在背后启动一些通用的程序,来有效减少集中启动的时间.这也是通常嵌入系统所惯用的做法. 在arm7的系统上,没有浮点运算FPU,GTK 中的浮点运算部分最好是去掉,否则会大大影响性能.GTK 使用到的浮点变量只分布在少数的几个窗口中,并且去掉它们会带来3%到12%的性能提高. 拥有帝国一切,皆有可能。欢迎访问phome.net 高像素的应用会导致速度较慢,这大多是GTK 与X中对高像素的效率低下的处理有关.如涉及到的XPM,XPM (X pixmap)格式是被设计来做到较好的兼容性,而不是更加快速.X系统是一个像素一个像素地画到 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于在嵌入式Linux系统中应用的GTK 和X分析的所有评论