当前位置:首页 > 工业控制 > 工业控制
[导读]引言  在“软件变服务”的背景下,通过网络提供服务,即网络计算,占据了越来越重要的地位。这种模式的特点是:客户端只进行显示和输入,不进行复杂计算,应用程序和数据都运行和存储在服务器端。为了在

引言

  在“软件变服务”的背景下,通过网络提供服务,即网络计算,占据了越来越重要的地位。这种模式的特点是:客户端只进行显示和输入,不进行复杂计算,应用程序和数据都运行和存储在服务器端。为了在有限的资源条件下,如手机,PDA等便携终端上实现便捷的移动桌面效果,本文提出一种基于嵌入式系统的远程桌面控制方案,其基本思想是尽可能地减少终端资源占用,最大限度地增强其适用范围,以此达到增强应用价值的目的。具体方案是通过Directvnc 的移植来实现的,由于Directvnc 与其它Unix 系统不同的是它通过轻量级图形库DirectFB 使用Linux 帧缓冲设备。DirectFB 在FrameBuffer 的基础上提供了图形加速等多种功能,显示速度快,链接库较小,可以在一定程度上节省系统资源,另外,directvnc工作在帧缓冲层,平台独立性好,摒弃了对庞大低效的X Window 等标准嵌入式系统图形化用户界面的依赖,这一功能对于资源有限的嵌入式系统和PDA 等环境下是非常有效的。

  1 网络计算模式的实现

  1.1 网络计算模式

  系统的实现基于网络计算模式(virtual network computing,VNC),该模式由VNC 服务器、RFB(远程帧缓存) 协议和VNC 客户端3 部分组成。Directvnc 作为客户端,它使用图形用户界面显示与进行输入输出控制,通过互连网远程访问与控制服务器。RealVNC 作为服务器端,它进行大量的计算并提供帧缓存变化到客户端显示设备,减轻了客户端负荷。RealVNC 功能成熟,高效实用,完全跨平台,兼容性好,可广泛应用于多种操作系统和开发系统。系统通信通过RFB 协议来完成,RFB是一个架构在TCP/IP上远程图形用户的简单协议,通过TCP/IP 协议簇连接,是基于字节流或消息的可靠传输。它是真正的瘦客户协议。

  1.2 基于RFB 的瘦客户端实现

      因为RFB 工作在帧缓存级别上,所以它可以应用于所有的窗口系统,例如:X11,Windows 和Mac 系统,重要的是对客户端硬件的需求少能支持更广范围的硬件环境。

  在协议的设计上,对客户端的任务实现也尽可能的简单,这体现在:

  (1)显示编码源语。

  显示编码源语有基于像素和基于图形两种绘图源语。RFB 的显示编码方式基于像素,其显示更新在服务器端处理,客户端仅需要显示像素数据。客户端计算简单、平台独立性好。

  (2)系统最初握手阶段对像素数据格式和编码类型协商的设计。

  像素格式涉及如何通过像素值来实现不同颜色的重现,最常用的像素格式是24 位或16 位真彩色。像素格式描述了像素数据存储所用的格式,定义了像素在内存中的编码方式。

  (3)编码方式。

  编码是根据一定的协议或格式把模拟信息转换成比特流的过程。在RFB 协议中,编码就是将每一个矩形像素点的数据转化为包含该矩形像素点的位置、宽度和高度信息以及编码类型的前缀,再加上经过此编码方式编码的数据本身。RFB 协议主要采用的编码方式是二维运动步长编码(2DRLE)的变种,如Raw、CopyRectangle、RRE(Rise-and-Run-Lengeh)、CoRRE(Compact RRE)和缺省时使用的Hextile。实际上常用的有2DRLE、Hextil 以及CopyRectangle 编码,他们为桌面提供最好的压缩方法。在RFB 中压缩编码算法比不高,但由于算法简单,故对客户端的图形显示引擎设计要求很低,客户端程序也相对简单。

  (4) 显示更新机制。

  RFB 的显示协议是基于一个简单的画图原理,即将每一个矩形像素点放在给定的位置(x,y)上。

  帧缓存的更新通过一系列块操作来完成,这种更新像素块的操作效率较低,但是通过多种像素编码压缩方式的灵活选择可以实现网络带宽、客户端计算速度和服务器处理的速度之间的效率折中,从而实现高效率的图形显示。显示更新机制包括更新时机及刷新模式。更新时机有客户端拉动和服务器端推动两种,每种更新时机又可采用懒惰更新和急切更新两种刷新模式。RFB 更新请求是客户端驱动型的懒惰更新,只有在服务器端收到客户端的请求时才会向其发送若干命令缓冲合并后的显示更新。对于一些应用,在相同区域上的更新往往非常频繁,这样如果网络非常慢或者客户端处理能力不强时,客户端驱动的更新机制使得客户端的显示质量可以得到调整。

  总之,在网络计算模式下,RFB协议尽可能地减少终端资源占用并提高网络利用率,基本提供了一个比较瘦的客户端。

  2 DirectFB 图形系统

  2.1 DirectFB 简介

  DirectFB 项目是由德国Convergence 公司推动的Opensource 计划的一部分,是面向嵌入式设备专注于Linux Frame-Buffer 开发的小巧、强大、灵活和易于使用的图形系统,提供一些基本的图形加速、输入设备处理提取、透明窗口和多重显示层的功能,以最低限度的资源使用和开销,提供最大的硬件加速度性能。

  Linux 下有多种图形子系统函数库可供选择,如Xlib、SDL、Allegro、Mesa3D 和DirectFB 等。其中DirectFB 定位于中高阶层的绘图、游戏应用、STB(Set-Top-Box)、MHP(multi-mediahome platform),支持dev/fb、osx、sdl、x11、/dev/men 等系统,它在嵌入式开发中具有很多优势:

  ①小巧且移植性好;

  ②支持硬件图形加速、输入设备的处理和抽象、无缝整合窗体系统;

  ③独立的资源管理;

  ④遵循开源许可证。

  2.2 DirectFB 图形系统实现图形加速

  DirectFB 图形系统构建在FrameBuffer 图形引擎之上,是一个完整的硬件抽象层,提供了对每个图形操作的软件回馈,由于这一功能还没有被底层硬件支持,因此需要一种能够提取图形的硬件设备的支持。DirectFB 体系结构如图1 所示,DirectFB 图形芯片驱动程序访问显存映射的图形处理器I/O端口向图形处理器提交命令,即实际的硬件加速的启动是在用户空间完成的。

  FrameBuffer是内核中的一种驱动程序接口,它将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间直接进行读写操作,而读写操作可以立即反映到屏幕上。DirectFB 作为抽象层可以直接访问FrameBuffer,对它进行显卡工作模式(分辨率,颜色深度,时序),映射显存等设置,并在其上直接输出图形。这种在内核级实现图形的方案加快了显示速度,节省了系统资源,从而提高效率。

  2.3 DirectFB 在嵌入式系统上的移植

  Directvcn 依赖DirectFB 库实现功能,需要对DirectFB 进行移植。DirectFB 的交叉编译条件是在Linux 内核2.2 以上,并运行帧缓冲(Framebuffer),以及必要的依赖库,比如zlib、libjpeg、libpng、freetype 等。完成设计的软件开发环境是:

  Ubuntu8.04 操作系统,嵌入式Linux 开发环境。使用ELDK4.1交叉编译器。步骤如下:

  (1) 从http://www.directfb.org/downloads/Core/获取源代码DirectFB-1.2.5.tar.gz 并解压。

  (2)交叉编译依赖库并安装到指定路径下:

  -prefix=/usr/local/arm/eldk-4.1/usr/bin/arm-linux

  (3)设置交叉编译环境变量,如PREFIX、LDFLAGS、CFLAGS、PKG_CONFIG_PATH 等路径,配置并交叉编译DirectFB-1.2.5。

  (4) 在rootfs/etc 下为directvnc 编辑配置文件directfbrc,内容如下:

  编译之前,去掉Makefile 中OMAP 驱动的编译,由于它是TI 的OMAP 系列CPU 专用的,在此包中缺少头文件,会引起编译错误。#make #make install 编译成功后在/usr/directfb 下会生成图形支持库的相关文件包。

  3 嵌入式远程桌面控制的实现

  3.1 Directvnc 及其功能框图

  Directvnc 应用VNC 服务器所使用的远程帧缓冲协议(RFB)。其协议消息分为3 个阶段:握手、初始化和协议交互。

  最初的握手阶段主要是对协议版本、像素数据的格式和编码类型进行协商。第二步对报文初始化,主要是本客户端和服务器端初始化消息。最后是正常的信息交互阶段,客户端发送请求,服务器端响应并送回结果。所有的消息都由一个消息类型字节和详细的消息数据组成。因此Directvnc 的运行流程大致可以分为登陆服务器,初始化连接,信息交互和退出4部分。如图2 所示。

  3.2 Directvnc 的移植

  DirectVNC系列的configure没考虑做移植的配置,所以有些依赖库的路径需要改正。比如libjpeg,它会默认使用系统/usr/lib 下的库。同理需要指定头文件:Xmd.h、keysymdef.h、jpeglib.h、jconfig.h、jmorecfg.h,或者直接从系统中复制过来。当然也可以写一个用于交叉编译的Makefile。由于版本不同数据定义更新,需要注意的是dfb.c 文件的第33 行:DFBCard-Capabilities caps 应修改成DFBGraphicsDeviceDescription caps;RFB 输入协议是基于键盘和多键鼠标设备的标准共站类型,输入事件也可以由其它非标准I/0 设备产生,由于本系统采用触摸屏输入实现控制,因此可以注释掉69-70 行:

  4 结语

  DirectFB 在嵌入式系统中的应用,充分利用了图像加速功能,减轻了CPU 的数据处理负担,提高了系统性能。随着其广泛的应用,嵌入式GUI 的性能也将得到提高。嵌入式远程桌面控制系统平台性能的优化方面有如下可行的改进方向:对硬件加速进行优化,即将加速模块从用户空间移到硬件的驱动中,GUI 中只需要用统一的接口调用硬件加速功能,同时在GUI 中添加对显卡芯片未提供的加速功能的软件实现,这样简化了GUI 维护,提高了系统的性能。对RFB 安全机制进行改进,即利用OpenSSL 密码算法函数库实现安全通信通道,或者在正常的协议交互中对输入输出数据进行算法简单高效的加密。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭