




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于嵌入式系统的图形界面应用设计随着手机等移动设备的广泛普及以及国内3G推广在即,届时无线网络的速度将明显提高,这为在移动终端上实现视频传播提供了现实可能,并且由于基于嵌入式的移动设备在市场上的占有率不断提高并逐渐成为发展的主流趋势,有必要对基于嵌入式移动设备网络视频播放器的实现方案进行研究,并提出一种高效的可行方案。本课题目的是在ARM-Linux嵌入式环境下实现网络功能,系统主要由硬件层、内核层、应用层三部分构成。为了达到网路播放的功能,本文通过对基于ARM9的up-tech嵌入式开发平台硬件以及Mplayer解码及播放功能的研究提供了一种在嵌入式开发平台上实现网络播放的可行方案。本方案在ARM920T硬件结构体系下通过移植经过裁剪的linux内核、根文件系统、Mplayer以及播放器图形界面。通过整合硬件层、内核层以及应用程,在嵌入式环境下利用FTP传输协议实现网络播放功能。本项目最后已在宿主机中实现网络播放功能,但在嵌入式开发平台中运行时仍有不足之处,需要进一步完善。通过这一课题的研究了解移动设备网络视频播放器的实现主要技术,并提供一款低成本、实用性高的无线网络视频播放器,这对嵌入式移动设备领域的研究来说具有重要意义。1.1背景随着嵌入式系统应用的逐渐普及,为保证嵌入式系统的顺利运行,嵌入式软件得到了快速发展,成为软件业的一股新生力量。嵌入式软件与嵌入式系统是密不可分的,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”,就是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。而嵌入式软件就是基于嵌入式系统设计的软件,它也是计算机软件的一种,同样由程序及其文档组成,可细分成系统软件、支撑软件、应用软件三类,是嵌入式系统的重要组成部分。随着信息技术以及互联网飞速发展普及,3C(计算机、通讯、消费电子)合一的加速,嵌入式设计已经成为工业现代化、智能化的必经之路,嵌入式产品已经深入到各行各业。嵌入式接入设备是数字化时代的一大主流产品,嵌入式软件已经成为数字化产品的核心。嵌入式软件大量应用于家用市场、工业市场、商业市场、通讯市场和国防市场。近几年来,信息电器迅速发展,也为嵌入式软件的发展起到推波助澜的作用。彩电、DCD、手机、MP3/MP4、掌上电脑、汽车等都是潜在的信息电器。信息电器平台与通用操作系统、数据库不同,不存在国外软件厂商垄断市场的现象,这一领域已成为中国软件业的突破口。随着Linux操作系统本身的不断完善,嵌入式Linux已经广泛应用到手机、PDA以及其他移动终端产品中。嵌入式Linux以其开放的源码,良好的适应性,较低的成本和很好的技术移植在手机等移动终端产品的操作系统领域,获得了越来越多的青睐。1.2移动终端简介移动终端或者叫移动通信终端是指可以在移动中使用的计算机设备,广义的讲包括手机、笔记本、POS机甚至包括车载电脑。但是大部分情况下是指手机或者具有多种应用功能的智能手机。随着网络和技术朝着越来越宽带化的方向的发展,移动通信产业将走向真正的移动信息时代。另一方面,随着集成电路技术的飞速发展,移动终端的处理能力已经拥有了强大的处理能力,移动终端正在从简单的通话工具变为一个综合信息处理平台。这也给移动终端增加了更加宽广的发展空间。现代的移动终端已经拥有极为强大的处理能力(CPU主频已经接近1)、内存、固化存储介质以及像电脑一样的操作系统。是一个完整的超小型计算机系统。可以完成复杂的处理任务。移动终端也拥有非常丰富的通信方式,即可以通过,等无线运营网通讯,也可以通过无线局域网,蓝牙和红外进行通信。随着移动终端硬件技术的发展以及3G网络建成使得通讯速率的提高。今天的移动终端不仅可以通话,拍照、听音乐、玩游戏,而且可以在线播放电视及点播电影、上传及下载多媒体信息,成为移动办公和移动商务的重要工具。1.3嵌入式在移动终端中的应用在移动终端发展史中,随着通信技术的发展,具有不同功能的应用软件可以运行在移动终端上为人们提供各种各样的服务,但是没有统一的系统结构框架使得这些应用软件的互动性非常差。于是移动终端产商们便开始寻求一种基于“开放”的操作系统的手机,所谓“开放”指其所有的API(应用程序接口)应该是公开并且受到广泛支持。当时所面临的选择有Symbian的EPOC平台,Palm/OS以及微软的WIN CE。随着研究的深入,Linux的嵌入式版本开始受到青睐并扩展其市场。从2001年至2002年,嵌入式Linux在嵌入式操作系统的市场份额迅速增长了一倍左右,从而成为嵌入式OS中的重要一员。嵌入式Linux在移动终端中有如此中大作用得益于其如下优势:(1)Linux属于开放的操作系统,它自身的技术文档甚至源代码都是开放的,因而在学术领域受到格外青睐,使得它对新技术,新协议有良好的适应性.(2)由于Linux和Unix之间的相似性,使得许多对Unix熟悉的开发人员能够很快在相似的基于嵌入式Linux开发环境中进行开发工作。另外, 由于Linux源码的开放性使得代码移植和重用变得相当普遍,基于嵌入式Linux平台的开发产品往往只花费较低的成本就能有很好的质量。这对于注重开发成本的公司无疑具有极大的诱惑力。(3)Linux提供了良好的安全性能和并行处理能力。Java语言在移动领域正逐渐成为主流的开发语言,而实验表明,在相同的硬件平台上,Java虚拟机在Linux上能取得比Windows CE上更好的性能值。因此Java+Linux成为现在的时尚搭配。当然,Linux在价格上的优势也很关键。尽管Linux并非全免费,但和其他商用操作系统相比,它还是占尽价格优势。2 硬件平台及开发流程2.1开发平台介绍本课题采用的硬件开发平台为由北京博创兴业科技有限公司开发的基于ARM体系结构的UP-CUP 2410-S 平台。UP-CUP 2410-S 平台的CPU为ARM920T内核的三星S3C2410 芯片,由于有MMU可以运行标准的ARM-LINUX内核。 除此之外UP-CUP 2410-S开发平台带有丰富的外围开发部件和完善的开发手册,使得这一开发平台非常适合嵌入式教学和进行嵌入式软件开发。图2-1 UP-TECH 2410嵌入式开发板2.1.1开发平台硬件配置UP-TECH S2410/P270 DVP的硬件配置如表2-1-2所示表 2-1-2 UP-TECH S2410/P270 DVP的硬件配置4配置名称型号说明CPUARM920T结构芯片三星S3c2410X工作频率203MHzFLASHSAMSUNG K9F120864M NANDSDRAMHY57V561620ATH32M2=64MEtherNet网卡DM9000AE10/100M自适应LCDLQ080V3DG018寸16bit TFT触摸屏SX-080-W4R-FBFM7843驱动USB 接口4个HOST /1个DEVICE由AT43301构成USB HUBUART/IrDA2个RS232,1个RS485,1个IrDA AD8路10位内部AD控制器3个电位器控制输入AUDIOIIS总线,UDA1341芯片 44.1KHz音频扩展卡插槽168Pin EXPORT总线直接扩展GPS_GPRS扩展板SIMCOM SIM300 GPRS模块,TrimbleS GPS 支持双道语音通信IDE/CF卡插座笔记本硬盘,CF卡 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网络播放器硬件架构本课题的硬件框架如图2-1-3所示。S3C2410核心板CPUSDRAMFLASH640*480 TFT 16bit LCD 液晶屏VGA/AV转换总线隔离、附属电路USB Device接口DM9000AE100M 网卡RS232串口0扬声器电源、复位逻辑图2-1-3硬件架构2.2网络播放器开发过程简介为了在嵌入式开发平台上实现网络播放器,首先需要在宿主机的linux系统下用QT完成播放器界面程序的编写以及Mplayer的安装,并且利用编写好的界面程序调用Mplayer实现视频及音频文件的本地播放以及在FTP协议下得网络播放。在确认应用程序能够正确运行后利用交叉编译工具链将应用程序交叉编译,这一部分分为用户界面程序的交叉编译以及Mplayer的交叉编译。交叉编译完成后利用NFS文件系统将编译好的应用程序及动态库挂载至开发板上,如此便可以利用linux系统下得minicom和开发板通讯并运行挂载文件夹下的网络播放器,查看运行结果。Up-tech2410网卡串口USBNFS核心CPU2.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,详细安装过程参见2. 交叉编译器安装:嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要工作就在将程序转化成运行该程序的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详细配置参见 Minicom详细命令参见 4. NFS网络文件系统配置:NFS为Network FileSystem的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。NFS可以让不同的主机通过网络将远端的NFS服务器共享出来的文件安装到自己达到系统中,从客户端看来,使用NFS的远端文件就像是使用本地文件一样。在嵌入式中使用NFS会使应用程序的开发变得十分方便,并且不用反复地进行烧写镜像文件。NFS的使用分为服务端和客户端,其中服务端是提供要共享的文件,而客户端则通过挂载“mount”这一动作来实现对共享文件的访问操作。NFS服务器端是通过读入它的配置文件“/etc/exports”来决定所共享的文件目录。在这个配置文件中,每一行都代表一项要共享的文件目录以及所指定的客户端对其操作权限。客户端可以根据相应的权限,对该目录下的所有目录文件进行访问。配置文件中每一行的格式如下:共享的目录 主机名称或IP 参数1,参数2,主机名称或IP是可供共享的客户端主机或IP,若对所有的IP都可以访问,则可用“*”表示。选项参数含义rw可读写的权限ro只读的权限no_root_squashNFS客户端分享目录使用者的权限,即如果客户端使用的是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详细内容参见2.2.2 建立引导加载程序(BootLoader)简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射图的功能,从而将系统的软硬件环境带到一个合适的状态,为最终调用系统内核做好准备。一般用户可以从网络上下载一些公开源代码的Bootloader程序,如U-Boot、BLOB、VIVI、LILO、ARM-Boot、RedBoot等,然后根据自己的芯片进行移植修改。本课题采用的bootloader是博创公司提供的VIVI,因为引导程序是应该最先被烧写到开发板上的程序,所以需要特殊的烧写工具,本课题的烧写工具由博创科技公司提供,烧写方法参见。成功烧写bootloader后可利用VIVI进行内核、根文件系统以及应用程序的烧写。2.2.3 内核编译与移植一个完整的嵌入式操作系统必须要有与硬件匹配的内核,一般的做法是下载别人已经一直好的linux操作系统。下载后根据自己的系统要求进行裁减、配置,再添加自己的特定硬件的驱动程序进行调试修改,最终得到一个适合于自己平台的内核,将其进行交叉编译,就可以得到符合要求的内核映像文件,最后将其下载到flash存储器芯片的相应分区中运行。本课题由于未采用新的硬件电路,所以不需要重新编译linux内核,可以直接使用博创公司提供编译好的内核,详细的内核编译方法亦可参考博创平台配套资料。2.2.4 建立根文件系统Linux的一个最重要特点就是它支持许多不同的文件系统。这使Linux非常灵活,能够与许多其他的操作系统共存。 Linux支持的常见的文件系统有:JFS、 ReiserFS、 ext、 ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。除了内核外,要使嵌入式系统正常运行还需要建立根文件系统。在嵌入式系统中,有一个非常重要的创建根文件系统的工具BusyBox,它能产生一个最基本的根文件系统。有了这个最基本得根文件系统,再根据自己的需要添加其他文件,即可构成一个完整的根文件系统。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映像文件,并将其烧写到FLASH芯片的相应分区中运行。本课题使用的文件系统为cramfs。在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把外存(Flash)上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在外存中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。使用cramfs就是一种解决这个问题的方式。cramfs是一个压缩式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。网络协议FTP 是File Transfer Protocol(文件传输协议)的简称,它是目前应用最广泛的协议之一,用于设备间的文件传送。众所周知,Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,而且在庞大的计算机网络中连接互联网的各计算机终端上安装着不同的计算机系统。为了解决不同机器与操作系统中的文件传输问题,必须要有一个统一的协议,FTP(文件传输协议)由此应运而生。由于FTP协议是工作在TCP/IP协议体系结构上的应用层协议,所以有必要对TCP/IP协议进行简要介绍。3.1 TCP/IP体系结构TCP/IP体系模型是计算机网络的事实标准。通过它可以实现各种异构网络或异种机之间的互联通信。图3-2-1为TCP/IP网络体系结构示意图,该体系结构有四层。其应用层程序可直接运行于传输层之上,传输层提供两种基本类型的服务:传输控制协议(Transfer Control Protocol, TCP),为字节流提供面向连接的可靠传输;用户数据包协议(User Datagram Protocol, UDP),为各个消息提供尽力而为的无连接传输。应用层传输层互联网层网络接口层图3-2-11. 网络接口层网络接口层是TCP/IP的最底层,该层得协议提供了一种数据传送的方法,是将数据分帧来传送,因此必须知道低层网络的细节,以便准确地格式化传送的数据,该层执行的功能还包括将IP地址映射为网络使用的物理地址。2. 互联网层(IP)互联网层的主要功能是负责将数据报送到目的主机,包括:l 处理来自传输层的分组发送请求,将分组装入IP数据报,选择路径,然后将数据报发送到相应数据线上。l 处理接收的数据报,检查目的地址若需要转发,则选择发送路径转发,若目的地址为本节点地址,则除去报头,将分组交送传输层处理。l 处理互联网路径、流控与拥塞问题。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.2传输控制协议TCPTCP之所以是可靠的面向连接的协议,是因为TCP在IP的基础上提供可靠的面向连接的流服务。为了能够做到这点,TCP使用了选择性重发(Automatic Repeat request, ARQ)技术。此外,TCP也使用算法进行拥塞控制,这种算法可以通过分组丢失来标识拥塞,并且能通过拥塞窗口控制信息进入网络内速度。1. TCP的可靠流服务在互联网上两个应用的进程之间,TCP提供了逻辑上的全双工连接。TCP向这些应用进程提供面向连接的、可靠而有序的字节流服务。TCP还提供流量控制,允许接受端控制发送端传输信息的速率,从而使得缓冲区不会溢出。TCP还能支持同一个终端系统上的多个应用程序。在数据传送开始之前,TCP在两个应用进程之间建立连接,也就是在协议中设置所要用到的变量。这些变量存储在一个称为传输控制数据块的连接记录中。一旦连接建立,TCP就在连接中正确而有序地双向传送数据。TCP设计成在IP层得基础上工作,所以它并不假设低层的网络服务是可靠的。为了能够实现可靠性,TCP使用选择性重发。TCP独立地结束每个方向上的传输,允许一个方向上的连接被关闭之后另外一个方向仍然传输数据。除此之外,TCP不保持消息的边界,它把从应用层得到的数据当做字节流看待。也就是说,TCP可以按照它认为最适合低层网络传输的方式随意分裂和重组应用的信息。2. TCP协议l TCP数据段TCP数据段得格式如图-所示,其报头由一个20字节的固定部分和一个变长的可选字段组成。l 连接的建立在发送数据之前,必须首先建立一个连接。TCP使用三次握手过程来建立连接,如图所示,握手步骤如下:1) 请求端(通常称为客户)发送一个 SYN 报文段( SYN 为 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN )。2) 服务器发回包含服务器的初始顺序号的 SYN 报文段( SYN 为 1 )作为应答。同时,将确认号设置为客户的 ISN 加 1 以对客户的 SYN 报文段进行确认( ACK 也为 1 )。3) 客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认( ACK 为 1 ),该报文通知目的主机双方已完成连接建立。l TCP连接终止TCP 连接建立起来后,就可以在两个方向传送数据流。当 TCP 的应用进程再没有数据需要发送时,就发关闭命令。 TCP 通过发送控制位 FIN=1 的数据片来关闭本方数据流,但还可以继续接收数据,直到对方关闭那个方向的数据流,连接就关闭。TCP 协议使用修改的三次握手协议来关闭连接, 如图 3-11 所示,即终止一个连接要经过 4 次握手。这是因为 TCP 的半关闭( half-close )造成的。由于一个 TCP 连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。关闭的原则就是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向连接。当一端收到一个 FIN ,它必须通知应用层另一端已经终止了那个方向的数据传送。3.3 文件传送协议FTP文件传送协议(FTP)是目前应用最广泛的协议之一,用于在设备间的文件传送。FTP提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它可工作于不同主机,甚至那些运行不同的操作系统或具有不同的文件结构的主机均可使用。为传送文件,FTP需要两条TCP连接,一条是控制连接,在服务器的21端口上建立;另一条是数据连接,用于进行文件传送。每个文件传送均必须建立数据连接,数据连接可用于向任何方向传送文件,或者由客户从服务器上获取文件和目录清单。图-说明了FTP中两条连接各自的作用。用户协议解释器(Protocol Interpreter, PI)的作用是发送FTP命令与解释回复。服务器协议解释器(服务器PI)用于解释FTP命令与发送相应信息,以及指示服务器数据传送进程(Data Transfer Process, DTP)建立数据连接与进行传送。DI:协议接收器DTP:数据传送进程服务器PI服务器DTP用户接口用户网用户DTP服务器FTP用户FTP开发环境及Mplayer通常嵌入式软件的开发环境为宿主机加嵌入式开发平台,参照第二章可以完成宿主机得配置,这一章着重介绍用户界面设计工具QT、集成开发环境Qtcreator及万能播放器Mplayer。4.1 用户界面设计工具QT Qt是挪威Trolltech公司出品的一个跨平台的C+用户界面库。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。QT同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,4.1.1 QT优点(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)丰富的 APIQT包括多达 250 个以上的 C+ 类,还提供基于模板的 collections, serialization, file, I/Odevice, directory management, date/time 类。甚至还包括正则表达式的处理功能。(4)支持 2D/3D 图形渲染,支持 OpenGLQt支持各种用户化外观,基于Qt的应用程序能够在windows外观、Motif外观、以及其他一些用户化外观主题之间切换。(5)大量的开发文档;Qt提供了大量的联机参考文档,有超文本HTML方式,也有UNIX帮助页、man手册页,以及补充说明,如assistant。4.1.2 QT版本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.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 )这个函数的作用就是将发射者 sender 对象中的信号 signal 与接收receiver 中的 member 槽函数联系起来。当指定信号 signal 时必须使用 QT中的宏SIGNAL(),当指定槽函数时必须使用宏 SLOT()。如果发射者与接收者属于同一个对象的话,那么在 connect 调用中接收者参数可以省略。信号与槽之间通过connect()函数可以有很多种连接方式。如一个信号连接一个槽、同一信号连接多个槽、多个信号连接到同一个槽、也可以由一个信号连接到另一个信号。4.2 集成开发环境QtCreatorQt Creator是全新的跨平台 Qt IDE,可单独使用,也可与 Qt 库和开发工具组成一套完整的SDK. 其中包括:高级 C+ 代码编辑器,项目和生成管理工具,集成的上下文相关的帮助系统,图形化调试器,代码管理和浏览工具。4.2.1 QtCreator功能与特性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 模拟器Qt模拟器是诺基亚 Qt SDK 的一部分,可在与目标移动设备相似的环境中对移动设备的 Qt 应用程序进行测试。4.3 播放器Mplayer由于本课题为了在嵌入式上实现网络播放功能所采取的方案是利用QT设计的用户界面来调用视频播放器,这一方案的优势在于使用开源的视频播放器,免却了自己开发解码部分及与用户界面整合的烦琐,从而使得开发流程变得简单。MPlayer是一款开源的多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix作业系统、微软的视窗系统及苹果电脑的Mac OS X系统。由于它支持多种视频格式、播放速度流畅及体积小等特点,使得它成为嵌入式网络播放器开发的最佳选择。4.3.1 Mplayer优点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, Monkeys 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本身编译自带了多种类型的解码器,不需要再安装xvid、ffdshow、ac3filter、ogg、vobsub等等所谓看DVDrip必备解码器,也不会跟你的电脑原来所安装的解码器 有任何冲突。4.3.2 Mplayer播放命令Mplayer可工作于界面模式,也可工作于slave模式。在slave模式下,用户可以在linux终端输入命令对mplayer进行操作,如暂停、退出、获取文件信息等。本课题主要利用mplayer的slave模式,使得用户界面软件可以通过linux终端实现对mplayer的调用与控制。Mplayer本地播放命令:mplayer 选项 文件|URL|播放列表|mplayer网络播放命令:mplayer file|mmst|http|http_proxy|rtsp|ftp|udp|unsv|smb:/ 用户名:密码URL:端口 选项选项参数含义-ao设置可用的音频输出驱动如:ao oss-vo设置可用的视频输出驱动-slave打开slave模式,将MPlayer作为其它程序的后端. MPlayer将从终端读取简单命令行, 而不再截获键盘事件.-quiet显示较少的输出和状态信息-wid告 诉MPlayer使用一个X11窗口,在指定窗口播放视频.网络播放器的实现5.1软件体系结构嵌入式软件网络播放器工作于嵌入式操作系统linux与嵌入式开发平台硬件之上,其体系结构如图3-1所示。应用层操作系统层硬件层用户界面GUIFTP服务系统终端LCDAudio device触摸屏图3-1 MP3 播放器的软件体系结构本课题着重于用户界面GUI的设计及移植,接下来将会介绍用户界面的模块及用户界面工作流程。5.2用户界面模块设计本课题将用户界面分为三个模块:本地播放、网络播放及小键盘输入。本地播放模块实现视频及音频文件的本地加载及播放,考虑这个播放器的用途主要是用于网络播放,所以在播放控制上面只实现了:播放、暂停、停止、静音、改变音量的功能。网络播放模块利用FTP协议点播服务器上播放列表上的视频及音频文件。小键盘输入的作用则是用来输入FTP服务器的网络地址、用户名及密码。本地播放播放区域播放控制网络模块小键盘输入根据软件设计模块的构思,最终在宿主机上实现的用户面如图所示:5.3用户界面主要功能实现5.3.1播放控制功能实现为了实现播放器的播放与暂停功能,应该要有一个变量来存储视频及音频文件的本地路径及网络路径以便使播放器获取播放文件,在播放器的类中使用类型为QString 的filename来存储文件路径。同时为了标识播放器的播放状态,设置了一个int类型的播放标识PlayState。文件路径是通过open_file()函数以及获取ftp播放列表后的双击事件获取的,获取文件路径后立即赋值给filename,同时初始化进度条及播放时间。播放Filename是否为空获取播放文件信息:文件时间长度、当前播放位置等。开始播放激活进度条TimeSlider显示时间长度、当前播放位置及文件名称是否停止播放是否暂停停止播放暂停播放5.3.2网络模块实现网络模块的主要作用是登陆到FTP服务器并获取播放列表,并通过双击事件传递网络文件的路径至filename。下面会介绍如何登陆到FTP服务器并获取播放列表。连接FTP服务器connectToHost()登陆至FTP服务器 Login()通过信号QFtp:listInfo()传递信息槽函数getFileList()接收信息并在列表窗口显示为了登陆到FTP服务器获取服务器信息,QT提供了QFTP类来实现这一操作。在定义类为QFTP的对象指针ftp后可通过两步连接上FTP服务器。ftp-connectToHost(const QString &host, quint16 port = 21)通过提供主机host地址及端口port(默认为21)则可连接FTP服务器,如:ftp-connectToHost(“44”, 21);连接FTP服务器后需要登陆方可获取服务器文件列表,这一步可通过ftp-login(const QString & username, const QString & password)通过提供FTP服务器的用户名userName及密码password就可登陆至FTP服务器,如ftp-login(“abc”, ”1234”);完成上述两个步骤后应用程序就和FTP服务器建立了连接。为了获取FTP上文件列表,需要通过类QUrlInfo定义的对象来传递实现。QUrlInfo可以存储网络路径URL上的信息,如文件名称、大小、所有者、权限等。QFTP有一个信号void QFtp:listInfo(const QUrlInfo &message)通过这个信号就可以吧FTP服务器上文件信息传递给槽函数。然后在槽函数中将由对象指针message传递而来的信息显示在列表窗口中。5.3.2小键盘模块实现由于开发板上的嵌入式软件不是运行在Qtopia环境下而是作为单独的窗口运行,在登陆到FTP服务器上时需要输入IP地址、用户名及密码的信息。所以要有一个配套的小键盘来输入必要的信息。既然小键盘是配套给应用程序使用的,那么它的设计应该尽可能的简洁。例如在这个界面程序里面,需要输入信息的仅有三个输入框,所以不必要使得键盘对任意可输入的对话框有效,它只需要完成对三个输入框进行输入的任务。于是我的设计思想就是在小键盘里面设置三个选项:IP地址、用户名及密码。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽外国语学院《教育数字化》2023-2024学年第二学期期末试卷
- 浙江树人学院《GNSS原理与应用A》2023-2024学年第二学期期末试卷
- 贵州建设职业技术学院《国际知识产权法(B)》2023-2024学年第二学期期末试卷
- 吉林师范大学博达学院《不动产测绘与建库》2023-2024学年第二学期期末试卷
- 四川航天职业技术学院《计算机图形设计(二)》2023-2024学年第二学期期末试卷
- 包头轻工职业技术学院《劳动实践》2023-2024学年第二学期期末试卷
- 运城学院《发酵食品与工艺》2023-2024学年第二学期期末试卷
- 吉林农业科技学院《电视播音与主持》2023-2024学年第二学期期末试卷
- 山东第一医科大学《大学英语(英语演讲入门技巧与实践)》2023-2024学年第二学期期末试卷
- 商厨厨房设计方案
- 维修安全协议书合同
- 2025年江苏省苏州市姑苏区中考数学一模试卷
- 2025年中考时事政治100题(附答案解析)
- 中考体育前家长会课件
- 2024年中国工程院战略咨询中心劳动人员招聘真题
- 2024年烟台龙口市卫生健康局所属事业单位招聘工作人员真题
- 2025福建漳州漳浦金瑞集团招聘20人笔试参考题库附带答案详解
- 地下综合管廊建设PPP项目施工组织设计
- 二零二五版官方离婚协议书
- 山东铁投集团招聘招聘笔试真题2024
- 天猫公司转让合同协议
评论
0/150
提交评论