0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过Directvnc移植来实现远程桌面控制系统的设计方案

电子设计 来源:计算机工程与设计 作者:杨霄雪;王力虎; 2020-03-09 08:00 次阅读

在“软件变服务”的背景下,通过网络提供服务,即网络计算,占据了越来越重要的地位。这种模式的特点是:客户端只进行显示和输入,不进行复杂计算,应用程序和数据都运行和存储在服务器端。为了在有限的资源条件下,如手机,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,内容如下:

通过Directvnc移植来实现远程桌面控制系统的设计方案

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

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

3.1 Directvnc 及其功能框图

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

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

通过Directvnc移植来实现远程桌面控制系统的设计方案

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 密码算法函数库实现安全通信通道,或者在正常的协议交互中对输入输出数据进行算法简单高效的加密。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19020

    浏览量

    303316
  • 控制系统
    +关注

    关注

    41

    文章

    6546

    浏览量

    110485
  • 服务器
    +关注

    关注

    12

    文章

    9021

    浏览量

    85185
收藏 人收藏

    评论

    相关推荐

    windows xp/2003强行远程桌面

    :221.221.221.221:34567远程桌面mstsc参数的了解,可通过mstsc /?学习一下。远程桌面连接MSTSC [<Connection File>] [/v:<sever[:port
    发表于 01-09 23:01

    【LeMaker Guitar试用体验】之远程桌面管理

    远程桌面管理避免这一问题,具体方法如下:一.VNC远程桌面管理 VNC是虚拟网络计算机的缩写,基于 UNIX 和 Linux 操作系统的免费的开源软件,
    发表于 02-03 20:31

    【NanoPi NEO Plus2开发板试用体验】实现VNC远程桌面

    之前写了安装VNC,并实现远程控制,不过是基于类似SSH控制的,那么下面就实现基于VNC的远程桌面显示、
    发表于 09-17 18:17

    Giveda远程桌面的相关资料分享

    转载自giveda.com 用于物联网的远程桌面规范–智能硬件的远程桌面–单片机远程桌面–MCU远程桌面–嵌入式远程桌面-IoT
    发表于 12-24 06:47

    远程桌面导致的程序卡死

    使用C#写的TCP服务器接收软件,放在阿里云服务器上面(系统为:Windows Server 2012 R2)运行,连接远程桌面打开软件,运行正常(试过十几个小时也没问题)。关闭远程桌面也可以正常
    发表于 08-03 15:32

    WINDOWS远程桌面技术在INTOUCH9.5控制系统中的

    本文旨在介绍WINDOWS远程桌面技术在INTOUCH 9.5控制系统中的应用。  本例中的WINDOWS版本为WINDOWS Server 2003 R2 Standard Edition Service Pack2。
    发表于 04-10 10:03 30次下载

    远程桌面控制中DirectFB的应用

    本文提出一种基于嵌入式系统远程桌面控制方案,其基本思想是尽可能地减少终端资源占用,最大限度地增强其适用范围,以此达到增强应用价值的目的。具体方案
    发表于 07-04 15:14 1806次阅读
    <b class='flag-5'>远程桌面</b><b class='flag-5'>控制</b>中DirectFB的应用

    远程桌面软件代码—lookmypc远程桌面软件代码

    远程桌面软件代码—lookmypc远程桌面软件代码,主要提供给程序员进行二次开发使用,因此只提供了基本的演示功能,不能实现自启动,连接时需要人工点击确认,不能实现隐蔽监控等, 程序员可
    发表于 05-11 11:30 10次下载

    3389远程桌面连接工具下载

    远程桌面连接工具
    发表于 03-27 14:19 2次下载

    如何确保远程桌面的安全性

    如何确保远程桌面的安全性?首先,挑选一款合适的远程桌面解决方案,替换掉RDP 和VPN;其次,检查是否已采用下文列出的几个安全性最佳实践。
    的头像 发表于 05-16 15:44 1642次阅读

    如何在远程桌面中使用USB 设备

    使用本地计算机上的USB设备,如打印机、扫描仪、摄像头等。 数据传输:在远程桌面或虚拟桌面环境中,需要使用本地计算机上的USB存储设备,如闪存盘、移动硬盘等传输数据。 软件许可证:一些软件需要通过USB设备
    的头像 发表于 05-29 14:44 2667次阅读
    如何在<b class='flag-5'>远程桌面</b>中使用USB 设备

    远程桌面在PLC远程控制中的应用

    电子发烧友网站提供《远程桌面在PLC远程控制中的应用.pdf》资料免费下载
    发表于 11-16 15:52 1次下载
    <b class='flag-5'>远程桌面</b>在PLC<b class='flag-5'>远程控制</b>中的应用

    速度最快的远程桌面软件推荐

    在当今快节奏、远程驱动的工作环境中,拥有一个可靠、快速的远程桌面解决方案至关重要。连接速度慢会严重影响工作效率,导致挫败感和效率低下。选择合适的远程桌面软件可以改变你的
    的头像 发表于 08-13 08:37 323次阅读
    速度最快的<b class='flag-5'>远程桌面</b>软件推荐

    Mac 上好用的远程桌面软件推荐

    远程控制Mac电脑已经成为现代办公和远程支持的常见需求。无论是Mac远程控制Mac,还是在Mac和Windows电脑之间进行远程操作,你通常有两种
    的头像 发表于 08-30 13:20 292次阅读
    Mac 上好用的<b class='flag-5'>远程桌面</b>软件推荐

    P2Link—远程桌面—网页端控制电脑

    P2Link内置了远程桌面功能,可在后台添加远程桌面配置,即可实现通过网页端或者远程桌面工具连接远程
    的头像 发表于 11-04 13:46 183次阅读
    P2Link—<b class='flag-5'>远程桌面</b>—网页端<b class='flag-5'>控制</b>电脑