基于嵌入式系统的图形界面应用设计_第1页
基于嵌入式系统的图形界面应用设计_第2页
基于嵌入式系统的图形界面应用设计_第3页
基于嵌入式系统的图形界面应用设计_第4页
基于嵌入式系统的图形界面应用设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 基于嵌入式系统的图形界面应用设计基于嵌入式系统的图形界面应用设计 随着手机等移动设备的广泛普及以及国内 3G 推广在即 届时无线网络的速度将明显 提高 这为在移动终端上实现视频传播提供了现实可能 并且由于基于嵌入式的移动设 备在市场上的占有率不断提高并逐渐成为发展的主流趋势 有必要对基于嵌入式移动设备 网络视频播放器的实现方案进行研究 并提出一种高效的可行方案 本课题目的是在 ARM Linux 嵌入式环境下实现网络功能 系统主要由硬件层 内核层 应用层三部分构成 为了达到网路播放的功能 本文通过对基于 ARM9 的 up tech 嵌入式 开发平台硬件以及 Mplayer 解码及播放功能的研究提供了一种在嵌入式开发平台上实现网 络播放的可行方案 本方案在 ARM920T 硬件结构体系下通过移植经过裁剪的 linux 内核 根文件系统 Mplayer 以及播放器图形界面 通过整合硬件层 内核层以及应用程 在嵌 入式环境下利用 FTP 传输协议实现网络播放功能 本项目最后已在宿主机中实现网络播放功能 但在嵌入式开发平台中运行时仍有不足 之处 需要进一步完善 通过这一课题的研究了解移动设备网络视频播放器的实现主要 技术 并提供一款低成本 实用性高的无线网络视频播放器 这对嵌入式移动设备领域 的研究来说具有重要意义 1 11 1 背景背景 随着嵌入式系统应用的逐渐普及 为保证嵌入式系统的顺利运行 嵌入式软件得到了 快速发展 成为软件业的一股新生力量 嵌入式软件与嵌入式系统是密不可分的 嵌入 式系统是 控制 监视或者辅助设备 机器和车间运行的装置 就是以应用为中心 以计 算机技术为基础 并且软硬件可裁剪 适用于应用系统对功能 可靠性 成本 体积 功耗有严格要求的专用计算机系统 它一般由嵌入式微处理器 外围硬件设备 嵌入式 操作系统以及用户的应用程序等四个部分组成 用于实现对其他设备的控制 监视或管 理等功能 而嵌入式软件就是基于嵌入式系统设计的软件 它也是计算机软件的一种 同样由程序及其文档组成 可细分成系统软件 支撑软件 应用软件三类 是嵌入式系 统的重要组成部分 随着信息技术以及互联网飞速发展普及 3C 计算机 通讯 消费电子 合一的加速 嵌入式设计已经成为工业现代化 智能化的必经之路 嵌入式产品已经深入到各行各业 2 嵌入式接入设备是数字化时代的一大主流产品 嵌入式软件已经成为数字化产品的核心 嵌入式软件大量应用于家用市场 工业市场 商业市场 通讯市场和国防市场 近几年 来 信息电器迅速发展 也为嵌入式软件的发展起到推波助澜的作用 彩电 DCD 手机 MP3 MP4 掌上电脑 汽车等都是潜在的信息电器 信息电器平台与通用操作系统 数 据库不同 不存在国外软件厂商垄断市场的现象 这一领域已成为中国软件业的突破口 随着 Linux 操作系统本身的不断完善 嵌入式 Linux 已经广泛应用到手机 PDA 以及 其他移动终端产品中 嵌入式 Linux 以其开放的源码 良好的适应性 较低的成本和很好 的技术移植在手机等移动终端产品的操作系统领域 获得了越来越多的青睐 1 2 移动终端简介移动终端简介 移动终端或者叫移动通信终端是指可以在移动中使用的计算机设备 广义的讲包括手 机 笔记本 POS 机甚至包括车载电脑 但是大部分情况下是指手机或者具有多种应用 功能的智能手机 随着网络和技术朝着越来越宽带化的方向的发展 移动通信产业将走 向真正的移动信息时代 另一方面 随着集成电路技术的飞速发展 移动终端的处理能 力已经拥有了强大的处理能力 移动终端正在从简单的通话工具变为一个综合信息处理 平台 这也给移动终端增加了更加宽广的发展空间 现代的移动终端已经拥有极为强大的处理能力 CPU 主频已经接近 1 内存 固 化存储介质以及像电脑一样的操作系统 是一个完整的超小型计算机系统 可以完成复 杂的处理任务 移动终端也拥有非常丰富的通信方式 即可以通过 等无线运营网通讯 也可以通过无线局域网 蓝牙 和红外进行通信 随着移动终端硬件技术的发展以及 3G 网络建成使得通讯速率的提高 今天的移动终 端不仅可以通话 拍照 听音乐 玩游戏 而且可以在线播放电视及点播电影 上传及 下载多媒体信息 成为移动办公和移动商务的重要工具 1 31 3 嵌入式在移动终端中的应用嵌入式在移动终端中的应用 在移动终端发展史中 随着通信技术的发展 具有不同功能的应用软件可以运行在 移动终端上为人们提供各种各样的服务 但是没有统一的系统结构框架使得这些应用软 件的互动性非常差 于是移动终端产商们便开始寻求一种基于 开放 的操作系统的手机 所谓 开放 指其所有的 API 应用程序接口 应该是公开并且受到广泛支持 当时所面临 的选择有 Symbian 的 EPOC 平台 Palm OS 以及微软的 WIN CE 随着研究的深入 Linux 的嵌入式版本开始受到青睐并扩展其市场 从 2001 年至 2002 年 嵌入式 Linux 在 3 嵌入式操作系统的市场份额迅速增长了一倍左右 从而成为嵌入式 OS 中的重要一员 嵌 入式 Linux 在移动终端中有如此中大作用得益于其如下优势 1 Linux 属于开放的操作系统 它自身的技术文档甚至源代码都是开放的 因而在学 术领域受到格外青睐 使得它对新技术 新协议有良好的适应性 2 由于 Linux 和 Unix 之间的相似性 使得许多对 Unix 熟悉的开发人员能够很快 在相似的基于嵌入式 Linux 开发环境中进行开发工作 另外 由于 Linux 源码的开放性使 得代码移植和重用变得相当普遍 基于嵌入式 Linux 平台的开发产品往往只花费较低的成 本就能有很好的质量 这对于注重开发成本的公司无疑具有极大的诱惑力 3 Linux 提供了良好的安全性能和并行处理能力 Java 语言在移动领域正逐渐成 为主流的开发语言 而实验表明 在相同的硬件平台上 Java 虚拟机在 Linux 上能取得 比 Windows CE 上更好的性能值 因此 Java Linux 成为现在的时尚搭配 当然 Linux 在价格上的优势也很关键 尽管 Linux 并非全免费 但和其他商用操作系统相比 它还是 占尽价格优势 2 2 硬件硬件平台及开发流程平台及开发流程 2 12 1 开发平台介绍开发平台介绍 本课题采用的硬件开发平台为由北京博创兴业科技有限公司开发的基于 ARM 体系结构 的 UP CUP 2410 S 平台 UP CUP 2410 S 平台的 CPU 为 ARM920T 内核的三星 S3C2410 芯 片 由于有 MMU 可以运行标准的 ARM LINUX 内核 除此之外 UP CUP 2410 S 开发平台带 有丰富的外围开发部件和完善的开发手册 使得这一开发平台非常适合嵌入式教学和进 行嵌入式软件开发 4 图 2 1 UP TECH 2410 嵌入式开发板 2 1 12 1 1 开发平台硬件配置开发平台硬件配置 UP TECH S2410 P270 DVP 的硬件配置如表 2 1 2 所示 表 2 1 2 UP TECH S2410 P270 DVP 的硬件配置 4 配置名称型号说明 CPUARM920T 结构芯片三星 S3c2410X工作频率 203MHz FLASHSAMSUNG K9F120864M NAND SDRAMHY57V561620AT H32M 2 64M EtherNet 网卡DM9000AE10 100M 自适应 LCDLQ080V3DG018 寸 16bit TFT 触摸屏SX 080 W4R FBFM7843 驱动 USB 接口4 个 HOST 1 个 DEVICE由 AT43301 构成USB HUB UART IrDA2 个 RS232 1 个 RS485 1 个 IrDA AD8 路 10 位内部 AD 控制器3 个电位器控制输入 AUDIOIIS 总线 UDA1341 芯片 44 1KHz 音频 扩展卡插槽168Pin EXPORT总线直接扩展 GPS GPRS 扩展板SIMCOM SIM300 GPRS 模块 Trimble S GPS 支持双道语音通信 IDE CF 卡插座笔记本硬盘 CF 卡 5 PS2 PC 键盘和鼠标由 ATMEGA8 单片机控制 IC 卡座AT24CXX 系列由 ATMEGA8 单片机控制 LED8x8 矩阵 LED 及 2 个 LED 数码管由总线控制 VGAVga 输出 中断键1 个ENT 控制 LED由 3 个 IO 口控制 DC 电机由 PWM 控制闭环测速功能 CAN BUS由 MCP2510 和 TJA1050 构成 Double DA MAX504一个 10 位 DAC 端口 调试接口板载 JTAG 直接支持下载与仿真25 针 2 1 2 1 2 2 网络播放器硬件架构网络播放器硬件架构 本课题的硬件框架如图 2 1 3 所示 S3C2410 核心板核心板 CPUCPU SDRAMSDRAM FLASHFLASH 640 480 TFT 16bit LCD 液晶屏 VGA AV转换 总线隔离 附属电 路 USB Device 接口 DM9000AE 100M 网卡 RS232 串口 0 扬声器电源 复位逻辑 图 2 1 3 硬件架构 6 2 22 2 网络播放器开发过程简介网络播放器开发过程简介 为了在嵌入式开发平台上实现网络播放器 首先需要在宿主机的 linux 系统下用 QT 完成播放器界面程序的编写以及 Mplayer 的安装 并且利用编写好的界面程序调用 Mplayer 实现视频及音频文件的本地播放以及在 FTP 协议下得网络播放 在确认应用程序 能够正确运行后利用交叉编译工具链将应用程序交叉编译 这一部分分为用户界面程序 的交叉编译以及 Mplayer 的交叉编译 交叉编译完成后利用 NFS 文件系统将编译好的应用 程序及动态库挂载至开发板上 如此便可以利用 linux 系统下得 minicom 和开发板通讯并 运行挂载文件夹下的网络播放器 查看运行结果 Up tech2410 网卡 串口 USB 核心 CPU 2 2 12 2 1 搭建宿主机开发环境搭建宿主机开发环境 这一部分包括 linux 系统的安装 交叉编译器安装 minicom 的配置 NFS 网络文件系 统的配置 1 linux 系统的安装 linux 是采用 GPL 协议的 GNU 系统 它的源代码是公开的 基于这一优点 众多公司 或组织在 linux 内核源代码的基础上进行了一些必要的修改加工 然后再开发一些配套的 软件 并把它整合成一个自己的发布版 linux 除去非商业组织 Debian 开发的 Diebian GNU Linux 外 美国的 Red Hat 公司发行了 Red Hat linux 法国的 Mandrake 公司发行了 Mandrake linux 德国的 SUSE 公司发行了 SUSE linux 国内众多公司也发行了中文版得 linux 如著名的红旗 linux Linux 目前已经有超过 250 个发行版本 本课题采用的 linux 系统是 Red Hat9 0 详细安装过程参见 1 2 交叉编译器安装 嵌入式软件开发所采用的编译为交叉编译 所谓交叉编译就是在一个平台上生成可以 1 7 在另一个平台上执行的代码 编译的最主要工作就在将程序转化成运行该程序的 CPU 所 能识别的机器代码 由于不同的体系结构有不同的指令系统 因此 不同的 CPU 需要有 相应的编译器 而交叉编译就如同翻译一样 把相同的程序代码翻译成不同的 CPU 语言 Up tech2410 本课题采用的交叉编译器为 arm linux gcc 3 4 1 将开发板配套光盘上的 arm linux gcc 3 4 1 tar bz2 解压至根目录 opt 文件夹下 解压完毕后修改 root bashrc 文件 命令为 vi root bashrc 在文件最后加上 export PATH PATH opt arm linux gcc 3 4 1 bin 修改完毕以后在终端输入命令 source root bashrc 使修改生效 3 minicom 配置 由于在嵌入式开发过程中需要将开发板上的信息显示给开发人员 所以要有一种能够 显示开发板上信息的解决方法 最常用的就是通过串口线输出到宿主机的显示器上 这 样 开发人员就可以看到系统的运行情况了 在 windows 和 linux 中都有不少串口通信软 件 可以很方便地对串口进行配置 其中最主要的配置参数就是波特率 数据位 停止 位 奇偶校验位和数据流控制位等 但是它们一定要根据实际情况进行相应配置 Minicom 是 linux 下串口通信的软件 它的使用完全依靠键盘的操作 具有高效与便 利等优点 Minicom 详细配置参见 2 Minicom 详细命令参见 3 4 NFS 网络文件系统配置 NFS 为 Network FileSystem 的简称 最早是由 Sun 公司提出发展起来的 其目的就是 让不同的机器 不同的操作系统之间可以彼此共享文件 NFS 可以让不同的主机通过网络 将远端的 NFS 服务器共享出来的文件安装到自己达到系统中 从客户端看来 使用 NFS 的远端文件就像是使用本地文件一样 在嵌入式中使用 NFS 会使应用程序的开发变得十 22 3 8 分方便 并且不用反复地进行烧写镜像文件 NFS 的使用分为服务端和客户端 其中服务端是提供要共享的文件 而客户端则通过 挂载 mount 这一动作来实现对共享文件的访问操作 NFS 服务器端是通过读入它的配置文件 etc exports 来决定所共享的文件目录 在 这个配置文件中 每一行都代表一项要共享的文件目录以及所指定的客户端对其操作权 限 客户端可以根据相应的权限 对该目录下的所有目录文件进行访问 配置文件中每 一行的格式如下 共享的目录 主机名称或 IP 参数 1 参数 2 主机名称或 IP 是可供共享的客户端主机或 IP 若对所有的 IP 都可以访问 则可用 表示 选项参数含义 rw可读写的权限 ro只读的权限 no root squas h NFS 客户端分享目录使用者的权限 即如果客户端使用的是 root 用户 那么对于这个共享目录而言 该客户端就具有 root 权限 sync资料同步写入到内存与硬盘当中 async资料会先暂存于内存当中 而非直接写入硬盘 例 root arm2410cl rw no root squash 在设定完配置文件之后 需要启动 nfs 服务和 portmap 服务 这里的 portmap 服务时 允许 NFS 客户端查看 NFS 服务在用的端口 在它被激活之后 就会出现一个端口为 111 的 sum RPC 远端过程调用 的服务 这是 NFS 服务中必须实现的一项 因此 必须把它 开启 命令为 service portmap start 启动 nfs 服务 service nfs start 详细内容参见 4 2 2 22 2 2 建立引导加载程序 建立引导加载程序 BootLoaderBootLoader 简单地说 Bootloader 就是在操作系统内核运行之前运行的一段程序 它类似于 PC 机中的 BIOS 程序 通过这段程序 可以完成硬件设备的初始化 并建立内存空间的映射 图的功能 从而将系统的软硬件环境带到一个合适的状态 为最终调用系统内核做好准 备 一般用户可以从网络上下载一些公开源代码的 Bootloader 程序 如 U Boot BLOB VIVI LILO ARM Boot RedBoot 等 然后根据自己的芯片进行移植修改 本课题采用的 bootloader 是博创公司提供的 VIVI 因为引导程序是应该最先被烧写到 开发板上的程序 所以需要特殊的烧写工具 本课题的烧写工具由博创科技公司提供 9 烧写方法参见 5 成功烧写 bootloader 后可利用 VIVI 进行内核 根文件系统以及应用程序 的烧写 2 2 32 2 3 内核编译与移植内核编译与移植 一个完整的嵌入式操作系统必须要有与硬件匹配的内核 一般的做法是下载别人已 经一直好的 linux 操作系统 下载后根据自己的系统要求进行裁减 配置 再添加自己 的特定硬件的驱动程序进行调试修改 最终得到一个适合于自己平台的内核 将其进行 交叉编译 就可以得到符合要求的内核映像文件 最后将其下载到 flash 存储器芯片的 相应分区中运行 本课题由于未采用新的硬件电路 所以不需要重新编译 linux 内核 可以直接使用博 创公司提供编译好的内核 详细的内核编译方法亦可参考博创平台配套资料 2 2 42 2 4 建立根文件系统建立根文件系统 Linux 的一个最重要特点就是它支持许多不同的文件系统 这使 Linux 非常灵活 能 够与许多其他的操作系统共存 Linux 支持的常见的文件系统有 JFS ReiserFS ext ext2 ext3 ISO9660 XFS Minx MSDOS UMSDOS VFAT NTFS HPFS NFS SMB Sy sV PROC 等 除了内核外 要使嵌入式系统正常运行还需要建立根文件系统 在嵌入式系统中 有 一个非常重要的创建根文件系统的工具 BusyBox 它能产生一个最基本的根文件系统 有了这个最基本得根文件系统 再根据自己的需要添加其他文件 即可构成一个完整的 根文件系统 根文件系统在嵌入式系统中一般设为只读 需要使用 mkcramfs genromfs 等工具产生烧写映像文件 并将其烧写到 FLASH 芯片的相应分区中运行 本课题使用的文件系统为 cramfs 在嵌入式的环境之下 内存和外存资源都需要节 约使用 如果使用 RAMDISK 方式来使用文件系统 那么在系统运行之后 首先要把外 存 Flash 上的映像文件解压缩到内存中 构造起 RAMDISK 环境 才可以开始运行程序 但是它也有很致命的弱点 在正常情况下 同样的代码不仅在外存中占据了空间 以压缩 后的形式存在 而且还在内存中占用了更大的空间 以解压缩之后的形式存在 这违背 了嵌入式环境下尽量节省资源的要求 使用 cramfs 就是一种解决这个问题的方式 cramfs 是一个压缩式的文件系统 它并不需要一次性地将文件系统中的所有内容都解压 缩到内存之中 而只是在系统需要访问某个位置的数据的时侯 马上计算出该数据在 cramfs 中的位置 将其实时地解压缩到内存之中 然后通过对内存的访问来获取文件系 统中需要读取的数据 cramfs 中的解压缩以及解压缩之后的内存中数据存放位置都是由 10 cramfs 文件系统本身进行维护的 用户并不需要了解具体的实现过程 因此这种方式增 强了透明度 对开发人员来说 既方便 又节省了存储空间 网络协议网络协议 FTP 是 File Transfer Protocol 文件传输协议 的简称 它是目前应用最广泛的协议之 一 用于设备间的文件传送 众所周知 Internet 是一个非常复杂的计算机环境 有 PC 有工作站 有 MAC 有大型机 而且在庞大的计算机网络中连接互联网的各计算 机终端上安装着不同的计算机系统 为了解决不同机器与操作系统中的文件传输问题 必须要有一个统一的协议 FTP 文件传输协议 由此应运而生 由于 FTP 协议是工作在 TCP IP 协议体系结构上的应用层协议 所以有必要对 TCP IP 协议进行简要介绍 3 13 1 TCP IPTCP IP 体系结构体系结构 TCP IP 体系模型是计算机网络的事实标准 通过它可以实现各种异构网络或异种机 之间的互联通信 图 3 2 1 为 TCP IP 网络体系结构示意图 该体系结构有四层 其应 用层程序可直接运行于传输层之上 传输层 提供两种基本类型的服务 传输控制协议 Transfer Control Protocol TCP 为字节流提供面向连接的可靠传输 用户数据包协议 User Datagram Protocol UDP 为各个消息提供尽力而为的无连接传输 应用层 传输层 互联网层 网络接口层 图 3 2 1 1 网络接口层 网络接口层是 TCP IP 的最底层 该层得协议提供了一种数据传送的方法 是将数据 分帧来传送 因此必须知道低层网络的细节 以便准确地格式化传送的数据 该层执行 的功能还包括将 IP 地址映射为网络使用的物理地址 2 互联网层 IP 互联网层的主要功能是负责将数据报送到目的主机 包括 处理来自传输层的分组发送请求 将分组装入 IP 数据报 选择路径 然后将数据 报发送到相应数据线上 处理接收的数据报 检查目的地址若需要转发 则选择发送路径转发 若目的地 11 址为本节点地址 则除去报头 将分组交送传输层处理 处理互联网路径 流控与拥塞问题 3 传输层 传输层主要功能是负责应用程序之间的端 端通信 该层中的两个最主要协议是 TCP 协议和 UDP 协议 TCP 协议是一种可靠的面向连接的协议 它允许将一台主机的字节流无差错地传送到 目的主机 TCP 同时要完成流量控制功能 协调收发双方的发送与接收速度 达到正确传 输目的 UDP 协议提供的无连接报文传送没有差错恢复或流量控制机制 分组传输顺序检查 与排序由应用层实现 UDP 一般用于要求速度快但不一定要求可靠的传输场合 4 应用层 应用层是 TCP IP 协议族的最高层 它规定了应用程序怎样使用互联网 它包括远程 登录协议 TELecommunication NETwork TELNET 文件传输协议 File Transfer Protocol FTP 电子邮件协议 Simple Mail Transfer Protocol SMTP 域名服务协议 Domain Name System DNS 及超文本传送协议 Hypertext Transfer Protocol HTTP 等 3 23 2 传输控制协议传输控制协议 TCPTCP TCP 之所以是可靠的面向连接的协议 是因为 TCP 在 IP 的基础上提供可靠的面向连接的流服务 为了能够做到这点 TCP 使用了选择性重发 Automatic Repeat request ARQ 技术 此外 TCP 也使用 算法进行拥塞控制 这种算法可以通过分组丢失来标识拥塞 并且能通过拥塞窗口控制信息进入网络 内速度 1 TCP 的可靠流服务 在互联网上两个应用的进程之间 TCP 提供了逻辑上的全双工连接 TCP 向这些应用进程提供面 向连接的 可靠而有序的字节流服务 TCP 还提供流量控制 允许接受端控制发送端传输信息的速率 从而使得缓冲区不会溢出 TCP 还能支持同一个终端系统上的多个应用程序 在数据传送开始之前 TCP 在两个应用进程之间建立连接 也就是在协议中设置所要用到的变量 这些变量存储在一个称为传输控制数据块的连接记录中 一旦连接建立 TCP 就在连接中正确而有序 地双向传送数据 TCP 设计成在 IP 层得基础上工作 所以它并不假设低层的网络服务是可靠的 为了 能够实现可靠性 TCP 使用选择性重发 TCP 独立地结束每个方向上的传输 允许一个方向上的连接 被关闭之后另外一个方向仍然传输数据 除此之外 TCP 不保持消息的边界 它把从应用层得到的数 据当做字节流看待 也就是说 TCP 可以按照它认为最适合低层网络传输的方式随意分裂和重组应用 的信息 2 TCP 协议 TCP 数据段 TCP 数据段得格式如图 所示 其报头由一个 20 字节的固定部分和一个变长的可选字段组成 12 连接的建立 在发送数据之前 必须首先建立一个连接 TCP 使用三次握手过程来建立连接 如图 所示 握 手步骤如下 1 请求端 通常称为客户 发送一个 SYN 报文段 SYN 为 1 指明客户打算连接的服 务器的端口 以及初始顺序号 ISN 2 服务器发回包含服务器的初始顺序号的 SYN 报文段 SYN 为 1 作为应答 同时 将确认号设置为客户的 ISN 加 1 以对客户的 SYN 报文段进行确认 ACK 也为 1 3 客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认 ACK 为 1 该报文通知目的主机双方已完成连接建立 TCP 连接终止 TCP 连接建立起来后 就可以在两个方向传送数据流 当 TCP 的应用进程再没有数 据需要发送时 就发关闭命令 TCP 通过发送控制位 FIN 1 的数据片来关闭本方数 据流 但还可以继续接收数据 直到对方关闭那个方向的数据流 连接就关闭 TCP 协议使用修改的三次握手协议来关闭连接 如图 3 11 所示 即终止一个连接 要经过 4 次握手 这是因为 TCP 的半关闭 half close 造成的 由于一个 TCP 连接是全双工 即数据在两个方向上能同时传递 因此每个方向必须单独地进行关 闭 关闭的原则就是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个 方向连接 当一端收到一个 FIN 它必须通知应用层另一端已经终止了那个方向的 数据传送 13 3 33 3 文件传送协议文件传送协议 FTPFTP 文件传送协议 FTP 是目前应用最广泛的协议之一 用于在设备间的文件传送 FTP 提供交互式访问 允许客户指明文件的类型与格式 并允许文件具有存取权限 它可工 作于不同主机 甚至那些运行不同的操作系统或具有不同的文件结构的主机均可使用 为传送文件 FTP 需要两条 TCP 连接 一条是控制连接 在服务器的 21 端口上建立 另一条是数据连接 用于进行文件传送 每个文件传送均必须建立数据连接 数据连接 可用于向任何方向传送文件 或者由客户从服务器上获取文件和目录清单 图 说明了 FTP 中两条连接各自的作用 用户协议解释器 Protocol Interpreter PI 的作用是发送 FTP 命令与解释回复 服务器协议解释器 服务器 PI 用于解释 FTP 命令与发送相应信息 以及指示服务器数据传送进程 Data Transfer Process DTP 建立数据连接与进行传送 DI 协议接收器 DTP 数据传送进程 服务器 PI 服务器 DTP 用户接口 用户网 用户 DTP 服务器 FTP用户 FTP 开发环境及开发环境及 MplayerMplayer 通常嵌入式软件的开发环境为宿主机加嵌入式开发平台 参照第二章可以完成宿主机 14 得配置 这一章着重介绍用户界面设计工具 QT 集成开发环境 Qtcreator 及万能播放器 Mplayer 4 14 1 用户界面设计工具用户界面设计工具 QTQT Qt 是挪威 Trolltech 公司出品的一个跨平台的 C 用户界面库 它提供给应用程序 开发者建立艺术级的图形用户界面所需的所用功能 Qt 是完全面向对象的 很容易扩展 并且允许真正地组件编程 QT 同 X Window 上的 Motif Openwin GTK 等图形界面 库和 Windows 平台上的 MFC OWL VCL ATL 是同类型的东西 4 1 14 1 1 QTQT 优点优点 1 优良的跨平台特性 QT 支持下列操作系统 Microsoft Windows 95 98 Microsoft Windows NT Linux Solaris SunOS HP UX Digital UNIX OSF 1 Tru64 Irix FreeBSD BSD OS SCO AIX OS390 QNX 等等 Qt 可在多种体系结构的微处理器上移植 如 MIPS ARM StrongARM Motorola68000 PowerPC 和 Xscale 等支持 FrameBuffer 的嵌入 式处理器 2 面向对象 QT 的良好封装机制使得 QT 的模块化程度非常高 软件构件或元素可重用性好 支 持组件编程 对于用户开发来说是非常方便的 QT 提供了一种称为 signals slots 的安全 类型来替代 callback 这使得各个元件 之间的协同工作变得十分简单 3 丰富的 API QT 包括多达 250 个以上的 C 类 还提供基于模板的 collections serialization file I Odevice directory management date time 类 甚至还包括正则表达式的处理功 能 4 支持 2D 3D 图形渲染 支持 OpenGL Qt 支持各种用户化外观 基于 Qt 的应用程序能够在 windows 外观 Motif 外观 以 及其他一些用户化外观主题之间切换 5 大量的开发文档 Qt 提供了大量的联机参考文档 有超文本 HTML 方式 也有 UNIX 帮助页 man 手册页 以及补充说明 如 assistant 15 4 1 24 1 2QTQT 版本版本 Qt 泛指 Qt 的所有桌面版本 比如 Qt X11 Qt Windows Qt Mac 等 由于 Qt 最早是在 Linux 中随着 KDE 流行开来的 因此通常 Qt 都指用于 Linux Unix 的 Qt X11 本课题使用的除了在 linux 桌面环境下的 Qt X11 之外 为了使程序能够在嵌 入式开发板上运行起来 还使用了面向嵌入式的 QT Embedded 1 QT Embedded 开发那些运行在移动设备 如 PDA 和手机上的软件是很有挑战性的 因为与桌面系 统相比 嵌入式系统的处理器更慢 永久性储存容量更小 内存更少 并且显示器也更 少 为了解决资源利用方面的问题 Trolltech 公司开发了面向嵌入式系统的 Qt 版本 QT Embedded linux 可以在运行 linux 的任何硬件上运行 包括 Intel x86 MIPS ARM Strong ARM Motorola Freescale 68000 以及 PowerPC 体 系 不像 Qt X11 它不需要 X 窗口系统 它实现的是自己的窗口系统 即 QWS 从而 大大节省了存储和内存 为了尽可能多地减少内存占用量 QT Embedded linux 可以 被重新编译亿去掉那些不用的特性 如果可以提前知道设备需要用到哪些应用程序或者 组件 就可以将 QT Embedded linux 的那些库静态地编译到一起 4 1 34 1 3信号与槽机制信号与槽机制 信号与槽机制是 Qt 的一个主要特征 是 Qt 与其它工具包最不相同的部分 在图形 用户界面编程中 经常会出现窗口中的一个部件发生的变化被通知给另一个部件 在 Qt 中采用信号和槽来实现对象部件之间的通信 1 信号 当某个信号对其客户或所有者发生的内部状态发生改变 信号被一个对象发射 只有定义过这个信号的类及其派生类能够发射这个信号 当一个信号被发射时 与其 相关联的槽将被立刻执行 就象一个正常的函数调用一样 信号 槽机制完全独立于 任何 GUI 事件循环 只有当所有的槽返回以后发射函数 emit 才返回 如果存在多 个槽与某个信号相关联 那么 当这个信号被发射时 这些槽将会一个接一个地执行 但是它们执行的顺序将会是随机的 不确定的 我们不能人为地指定哪个先执行 哪 个后执行 2 槽 槽是普通的 C 成员函数 可以被正常调用 它们唯一的特殊性就是很多信号可 以与其相关联 当与其关联的信号被发射时 这个槽就会被调用 槽可以有参数 但 槽的参数不能有缺省值 3 信号与槽的关联 通过调用 QObject 对象的 connect 函数来将某个对象的信号与另外一个对象的 槽函数相关联 这样当发射者发射信号时 接收者的槽函数将被调用 该函数的定义 如下 bool QObject connect const QObject sender const char signal const QObject receiver const char member 16 这个函数的作用就是将发射者 sender 对象中的信号 signal 与接收 receiver 中的 member 槽函数联系起来 当指定信号 signal 时必须使用 QT 中的宏 SIGNAL 当指定槽函数时必须使用宏 SLOT 如果发射者与接收者属于同一个对象的话 那 么在 connect 调用中接收者参数可以省略 信号与槽之间通过 connect 函数可以有很多种连接方式 如一个信号连接一 个槽 同一信号连接多个槽 多个信号连接到同一个槽 也可以由一个信号连接到另 一个信号 4 24 2 集成开发环境集成开发环境 QtCreatorQtCreator Qt Creator 是全新的跨平台 Qt IDE 可单独使用 也可与 Qt 库和开发工具组成 一套完整的 SDK 其中包括 高级 C 代码编辑器 项目和生成管理工具 集成的上下 文相关的帮助系统 图形化调试器 代码管理和浏览工具 4 2 14 2 1 QtCreatorQtCreator 功能与特性功能与特性 Qt Creator 是专为满足 Qt 开发人员需求而量身定制的跨平台集成开发环境 IDE Qt Creator 可在 Windows Linux X11 和 Mac OS X 桌面操作系统上运行 供开发人员针 对多个桌面和移动设备平台创建应用程序 1 复杂代码编辑器 Qt Creator 的高级代码编辑器支持编辑 C 和 QML JavaScript 上下文相关帮 助 代码完成功能 本机代码转化及其他功能 2 版本控制 Qt Creator 汇集了最流行的版本控制系统 包括 Git Subversion Perforce CVS 和 Mercurial 3 集成用户界面设计器 Qt Creator 提供了两个集成的可视化编辑器 用于通过 Qt widget 生成用户界面 的 Qt Designer 以及用于通过 QML 语言开发动态用户界面的 Qt Quick Designer 4 项目和编译管理 无论是导入现有项目还是创建一个全新项目 Qt Creator 都能生成所有必要的文 件 包括对 cross qmake 和 Cmake 的支持 5 桌面和移动平台 Qt Creator 支持在桌面系统和移动设备中编译和运行 Qt 应用程序 通过编译设 置您可以在目标平台之间快速切换 6 Qt 模拟器 17 Qt 模拟器是诺基亚 Qt SDK 的一部分 可在与目标移动设备相似的环境中对移动 设备的 Qt 应用程序进行测试 4 34 3 播放器播放器 MplayerMplayer 由于本课题为了在嵌入式上实现网络播放功能所采取的方案是利用 QT 设计的用户界面来调用视 频播放器 这一方案的优势在于使用开源的视频播放器 免却了自己开发解码部分及与用户界面整合 的烦琐 从而使得开发流程变得简单 MPlayer 是一款开源的多媒体播放器 以 GNU 通用公共许可证发布 此款软件可在各主流作业系 统使用 例如 Linux 和其他类 Unix 作业系统 微软的视窗系统及苹果电脑的 Mac OS X 系统 由于它支 持多种视频格式 播放速度流畅及体积小等特点 使得它成为嵌入式网络播放器开发的最佳选择 4 3 14 3 1 MplayerMplayer 优点优点 1 支持多种播放格式 MPlayer 支持相当多的媒体格式 无论在音频播放还是在视频播放方面 可以说 它支持的格式是相当全面的 视频格式支持 Cinepak DV H 263 H 264 MPEG 4 AVC HuffYUV Indeo MJPEG MPEG 1 MPEG 2 MPEG 4 Part 2 RealVideo Sorenson Theora WMV 音频格式支持 AAC AC3 ALAC AMR FLAC Intel Music Coder Monkey s Audio MP3 Musepack RealAudio Shorten Speex Vorbis WMA 网络协议 RTP RTSP HTTP FTP MMS Netstream mpst 除此之外 mplayer 还支持多种字幕格式与图像格式 2 支持输出设备广 MPlayer 的另一个大的特色是支持广泛的输出设备 它可以在 X11 Xv DGA OpenGL SVGAlib fbdev AAlib DirectFB 下工作 而且 你也能使用 GGI SDL 由此可以使用它们支持的各种驱动模式 和一些低级的硬件 相关的驱动模式 比如 Matrox 3Dfx 和 RADEON Mach64 Permedia3 3 强大的播放能力 这个播放器能够稳如泰山的播放被破坏的MPEG 文件 对一些 VCD 有用 而 它能播放著名的 windowsmediaplayer 都打不开的的坏的 AVI 文件 甚至 没有 索引部分的 AVI 文件可播放 你能暂时由重建他们的索引 idx 选择 或者用 MEncoder 永久重建 使你能够在影片中搜索 除此之外 mplayer 的播放速度 和质量以及稳定度 也是惊人的 4 内置多种解码器 Mplayer 本身编译自带了多种类型的解码器 不需要再安装 18 xvid ffdshow ac3filter ogg vobsub 等等所谓看 DVDrip 必备解码器 也不会 跟你的电脑原来所安装的解码器 有任何冲突 4 3 24 3 2 MplayerMplayer 播放命令播放命令 Mplayer 可工作于界面模式 也可工作于 slave 模式 在 slave 模式下 用户可以在 linux 终端输入命令对 mplayer 进行操作 如暂停 退出 获取文件信息等 本课题主要 利用 mplayer 的 slave 模式 使得用户界面软件可以通过 linux 终端实现对 mplayer 的调用 与控制 Mplayer 本地播放命令 mplayer 选项 文件 URL 播放列表 mplayer 网络播放命令 mplayer file mms t http http proxy rt s p ftp udp unsv smb 用户名 密码 URL 端口 选项 选项参数含义 ao设置可用的音频输出驱动如 ao oss vo设置可用的视频输出驱动 slave打开 slave 模式 将 MPlayer 作为其它程序的后端 MPlayer 将从终端读取简单命令行 而不再截获键盘事 件 quiet 显示较少的输出和状态信息 wid告 诉 MPlayer 使用一个 X11 窗口 在指定窗口播放视频 网络播放器的实现网络播放器的实现 5 15 1 软件体系结构软件体系结构 嵌入式软件网络播放器工作于嵌入式操作系统 linux 与嵌入式开发平台硬件之上 其 体系结构如图 3 1 所示 19 应用层 操作系统层 硬件层 用户界面 GUI FTP 服务系统终端 LCDAudio device触摸屏 图 3 1 MP3 播放器的软件体系结构 本课题着重于用户界面 GUI 的设计及移植 接下来将会介绍用户界面的模块及用户界面工作流程 5 25 2 用户界面模块设计用户界面模块设计 本课题将用户界面分为三个模块 本地播放 网络播放及小键盘输入 本地播放模块实现视频及 音频文件的本地加载及播放 考虑这个播放器的用途主要是用于网络播放 所以在播放控制上面只实 现了 播放 暂停 停止 静音 改变音量的功能 网络播放模块利用 FTP 协议点播服务器上播放列 表上的视频及音频文件 小键盘输入的作用则是用来输入 FTP 服务器的网络地址 用户名及密码 本地播放 播放区域 播放控制 网络模块 小键盘输入 根据软件设计模块的构思 最终在宿主机上实现的用户面如图 所示 20 5 35 3 用户界面主要功能实现用户界面主要功能实现 5 3 15 3 1 播放控制功能实现播放控制功能实现 为了实现播放器的播放与暂停功能 应该要有一个变量来存储视频及音频文件的本地 路径及网络路径以便使播放器获取播放文件 在播放器的类中使用类型为 QString 的 filename 来存储文件路径 同时为了标识播放器的播放状态 设置了一个 int 类型的播放 标识 PlayState 文件路径是通过 open file 函数以及获取 ftp 播放列表后的双击事件获取的 获取 文件路径后立即赋值给 filename 同时初始化进度条及播放时间 21 播放 Filename 是否为空 获取播放文件信息 文件时间 长度 当前播放位置等 开始播放激活进度条 TimeSlider显示时间长度 当前播放位 置及文件名称 是否停 止播放 是否暂停 停止播放暂停播放 5 3 25 3 2 网络模块实现网络模块实现 网络模块的主要作用是登陆到 FTP 服务器并获取播放列表 并通过双击事件传递网络 文件的路径至 filename 下面会介绍如何登陆到 FTP 服务器并获取播放列表 22 连接 FTP 服务器 connectToHost 登陆至 FTP 服务 器 Login 通过信号 QFtp listInfo 传递信息 槽函数 getFileList 接收信息并在列表窗 口显示 为了登陆到 FTP 服务器获取服务器信息 QT 提供了 QFTP 类来实现这一操作 在定义 类为 QFTP 的对象指针 ftp 后可通过两步连接上 FTP 服务器 ftp connectToHost const QString 连接 FTP 服务器后需要登陆方可获取服务器文件列表 这一步可通过 ftp login const QString 完成上述两个步骤后应用程序就和 FTP 服务器建立了连接 为了获取 FTP 上文件列表 需要通过类 QUrlInfo 定义的对象来传递实现 QUrlInfo 可以存储网络路径 URL 上的信息 如文件名称 大小 所有者 权限等 QFTP 有一个信号 void QFtp listInfo const QUrlInfo key show connect key SIGNAL input value QString int this SLOT accept value QString int 24 用户界面及用户界面及 MplayerMplayer 的移植的移植 6 16 1 MplayerMplayer 的移植的移植 Mplayer 需要经过移植方可在嵌入式开发板上正常运行 移植流程如图 所示 本小 节主要介绍 Mplayer 的配置过程 因为这是 mplayer 移植过程的主要难点 配置 mplayer 生产 makefile 文件 交叉编译 修改 生成可执行文件 图 6 2 MPlayer 的移植流程 下面 我们简单介绍一下如何配置 MPlayer 25 cc arm linux gcc 选用系统默认交叉编译器 host cc gcc 用来编译一些需要在 host 上执行的中间文件 enable cross compile 支持交叉编译 target arm armv4 linux 支持 armv4 架构的 arm linux enable linux devfs 支持开发板上的 devfs 文件系统 disable win32dll 不支持 win32 的库 因为不适用与 ARM disable dvdread 不支持读 dvd enable fbdev 支持开发板的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论