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 所示。