APP下载

基于S3C2410的VoD系统构建*

2010-06-25梁少芳陈圣国

电视技术 2010年1期
关键词:开发板内核嵌入式

梁少芳,刘 治,周 英,陈圣国

(广东工业大学,广东 广州 510006)

1 引言

交互式多媒体视频点播 (Video on Demand,VoD),利用了网络和视频技术的优势,彻底改变了过去收看节目的被动方式,实现了节目的按需收看[1]和任意播放,集动态影视图像、静态图片、声音、文字等信息为一体,为用户提供实时、交互、按需点播服务的系统。

随着嵌入式技术的日益成熟和普及,嵌入式硬件成本的降低,诸如有线电视机顶盒、IPTV机顶盒、交互式机顶盒等从采用单片机加特定专用的实时操作系统这种紧凑型解决方案,逐步转为采用嵌入式芯片、专业编解码芯片和通用的嵌入式Linux操作系统[2]这种便于升级和扩展的松散型解决方案。嵌入式的飞速发展为VoD提供了更完善的开发平台,基于此点本设计采用基于S3C2410的开发板上实现VoD系统的构建。

2 系统框图

VoD系统的整体架构由4个部分组成,包括HTTP服务器、目录服务器、VoD客户端、mplayer播放器。系统框图如图1所示。

1)HTTP服务器:主要提供片源服务,流媒体服务,笔者选择Windows IIS HTTP服务器软件。

图1 VoD系统框图

2)目录服务器:主要提供服务器上各个影片信息,主要包括片名、演员表、内容简介、影片大小以及完成片名和影片实际地址的转换。应与HTTP服务器为同一台机器。

3)VoD客户端:主要采用qte图形界面,用来显示服务器上的影片列表和信息,取得各影片的实际地址。调用播放器播放影片。

4)Mplayer播放器:由VoD客户端调用,播放影片。

3 VoD系统软件实现

3.1 HTTP服务器和目录服务器的安装

3.1.1 HTTP服务器的安装和配置

HTTP服务器采用Windows XP的IIS服务器来实现。单击右键“我的电脑->管理->internet信息服务->右键默认网站->属性”对IIS服务器进行配置。主要配置网站IP地址、端口和主目录选项卡。

3.1.2 目录服务器

编写一个目录服务器server,通过在命令行中执行c∶>server.exe <片源目录>,把编译结果中的 server.exe 放在配置好IIS的Windows上。

3.2 开发板端软件构成

开发板端软件的构成主要包括:交叉工具链的安装,bootloader的构建和移植,内核的构建和移植,根文件系统的构建和移植,qt/embedded开发环境的建立,VoD界面的开发和移植等。

3.2.1 BootLoader移植

本系统需要移植BootLoader到开发板上[3]。U-boot是德国DENX小组的开发用于多种嵌入式CPU的Boot-Loader程序,U-boot不仅支持嵌入式Linux系统的引导,当 前 , 它 还 支 持 NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系统。U-boot除了支持PowerPC系列的处理器外,还能支持 MIPS,X86,ARM,NIOS,XScale等诸多常用系列的处理器[4]。

U-boot对S3C2410已经有了很好的支持,笔者在移植过程中主要是完善U-boot对NAND Flash的读写功能。本系统采用U-boot-1.1.4版本,图2为U-boot移植成功之后的界面。

图2 U-boot启动界面

3.2.2 Linux内核移植

对于嵌入式Linux系统来说,有各种体系结构的处理器和硬件平台,用户根据自己的需要定制的硬件平台,只要硬件平台有一点变化,就需要做一些移植工作,Linux内核移植是嵌入式Linux系统中最常见的一项工作[5]。由于Linux内核具备可移植性的特点,并且已经支持了很多种目标板,这样,用户很容易从中找到跟自己硬件平台类似的目标板,参考内核已经支持的目标板来进行移植工作。Linux-2.6内核已经支持S3C2410A处理器的多种硬件板,可以参考SMDK2410参考板来移植开发板的内核。本系统采用Linux-2.6.14.1版本来进行开发。

3.2.3 根文件系统的构建和移植

Busybox包含了许多各种版本的通用的Unix实用工具。 例如 cp,ls,mv,mount,ps,export,tftp,dd,kill等。 但其大小只有5 Mbyte左右,为制作嵌入式的根文件系统带来了方便。

Busybox的移植主要移植步骤包括:

1)建立工作目录,下载Busybox到该目录。

2)建立根目录,根目录就是要移植到目标板上的目录,对于嵌入式的文件系统,根目录下必要的目录包括bin,dev,etc,usr,lib,sbin。

3)交叉编译Busybox:本设计采用Busybox-1.5.0版本的源码进行开发。通过make defconfig对Busybox进行默认配置,再通过make menuconfig对Busybox进行系统配置。

4)copy C库:交叉应用程序的开发需要用到交叉编译的链接库,在移植应用程序到目标板的时候,需要把交叉编译的链接库也一起移植到目标板上。拷贝交叉工具链的lib目录所有的库文件到根文件系统的/lib目录下。

5)建立配置文件:添加一个c shell初始化时读取的文件。

将内核和根文件系统移植到开发板后的启动界面如图3所示。

图3 Linux启动界面

3.2.4 VoD界面的开发和移植

VoD客户端程序主要实现从服务器端取得影片名称和影片地址并实现点击播放按钮调用Mplayer播放。

VoD客户端程序主要用Qsocketdevice从服务器端取得影片名称和影片地址,关键代码如下:

int numbytes;

char item[100];

char*p;

char*q;

p=q=buf;

MUReceiveSocket=new QSocketDevice(QSocketDevice∶Stream);

their_addr.setAddress(lineEdit1->text());

MUReceiveSocket->connect(their_addr,atoi(PORT));

if((numbytes=MUReceiveSocket->readBlock(buf,MAXDATASIZE))!=-1){

buf[numbytes]='';

}

delete MUReceiveSocket;

listBox1->clear();

while((q=strchr(p,'#'))!=NULL)

{

strncpy(item,p,q-p);

item[q-p]='';

listBox1->insertItem(item);

p=(++q);}q

而点击播放按钮调用mplayer播放关键代码可参照以下:

int pid=fork();

if(pid==0)

{

char name[100];

name[0]='';

strcat(name,"http∶//");

strcat(name,lineEdit1->text());

strcat(name,"∶");

strcat(name,PORT);

strcat(name,"/");

strcat(name,listBox1->currentText());

cout<<name<<endl;

//execl("/bin/mplayer","mplayer",name,NULL);

}

else wait();

主要是通过fork出一个子进程用Excel调用Mplay er播放。Mplayer在framebuffer模式下的播放请用Mplayer-help察看相关参数。最后将VoD客户端通过qte库交叉编译,放入文件系统中去。

3.2.5 启动脚本的编写

启动脚本和配置文件存放在构建好的根文件系统的“/etc”目录下,内核启动的最后要启动根文件系统的/sbin/init程序,init程序会读取/etc/inittab文件,根据inittab文件的内容,决定启动软件的流程。inittab文件决定的启动流程是:先执行/etc/init.d/rcS文件,再执行/etc/rc.local文件,最后启动/bin/bash程序,而系统启动/bin/bash程序是bash程序会读取/.bashrc文件。

rcS脚本主要是挂载了proc和ramfs文件系统,然后建立LCD和触摸屏的软链接;rc.local文件主要是配置了开发板的IP地址;系统启动/bin/bash程序是,bash程序会读取/.bashrc文件;bashrc文件主要是设置QT程序运行所需要的环境变量,然后启动VoD客户端程序。

最后VoD客户端程序的运行会读取“/etc/pointercal”这个触摸屏校验文件,这个文件是触摸屏校验数据所存放的文件,当启动qtopia的时候,需要用户校验触摸屏的信息,这个校验信息就保存在这个文件下。

至此,开发板端的软件基本构造完成。开发板端上电之后运行U-boot程序,然后启动Linux内核,内核挂载根文件系统之后启动VoD程序,然后可以在LCD屏上看见VoD客户端界面。实验证明播放效果流畅、稳定。

4 结束语

笔者介绍了一种基于S3C2410芯片,以Linux为操作系统的VoD的设计方案。通过实验测试证明,基于该方案设计的VoD系统播放视频流畅、清晰,具有一定的实用价值。

[1]黄永恒,戴瑜兴.VoD系统实现方案及其发展[J].楼宇自动化,2008(8):15-17.

[2]桑楠.嵌入式系统原理及应用开发技术[M].北京:北京航空航天大学出版社,2002.

[3]李明.ARM Linux的移植过程及分析[J].电子设计应用,2003(7):55-57.

[4]陈铁军.基于S3C2410的嵌入式Linux的移植方法[J].桂林电子工业学院学报.2006(8):260-263.

[5]马忠梅,李善平.ARM9&Linux嵌入式系统教程[M].北京:北京航空航天大学出版社,2004:196-200.

猜你喜欢

开发板内核嵌入式
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
搭建基于Qt的嵌入式开发平台
浅析单片机开发板的设计与制作
嵌入式软PLC在电镀生产流程控制系统中的应用
微生物内核 生态型农资
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板