APP下载

基于ST7109的高清IPTV机顶盒开发平台设计

2010-06-25

电视技术 2010年3期
关键词:开发板机顶盒内核

田 莎

(厦门理工学院 电子与电器工程系,福建 厦门 361000)

1 引言

随着因特网和流媒体技术的迅速发展,出现了网络电视(IPTV)这种融合互联网和传统电视的新业务。IPTV通过宽带网络,向家庭用户提供包括数字电视在内的多种交互式服务。高清电视(HDTV)[1]相对于目前的标清电视节目而言,在图像质量上有质的提高,其画面更加清晰,更具有视觉冲击力,大大提高用户对IPTV业务的认同感,是IPTV业务发展的必然趋势。ST7109芯片是一款高集成度的高清机顶盒解码芯片,采用其构建高清IPTV平台,性能高且成本低,同时支持多种视频格式和多样化的机顶盒功能,适应不同业务需求。

2 ST7109的开发平台设计[2]

2.1 ST7109芯片简介

ST7109芯片支持MPEG-2,H.264和VC-1等多种标准的高清视频解码。不仅应用于地面、卫星和有线数字电视机顶盒,且应用于DSL和IP客户端高清机顶盒。ST7109包含嵌入式CPU ST40-202、系统码流解复用、视频解码、音频解码、SDRAM/Flash控制器、USB2.0接口、以太网接口等。能解密并解码高清或标清的音视频系统码流,通过SATA接口实现接收和处理。解复用后,视频流通过TS子系统进行接收和处理,视频解码后,输出2个独立的显示模式:全分辨率的TV主显示,或者降采样给VCR或DVD-R作为从显示信号。采用ST7109构建高清IPTV平台,只需较少的外围器件,性价比高,其结构如图1所示。

图1 ST7109用于IPTV的解决方案

2.2 ST7109开发平台的结构

基于ST7109的IPTV机顶盒作为一个嵌入式系统,运行Linux操作系统,软件开发采用交叉开发模式,即程序编写和编译在PC机上完成,编译结果在嵌入式平台上运行,如图2所示。

图2 ST7109的开发环境

主机操作系统为Linux,并安装有相应的开发软件工具包(SDK)和串口通信软件。主机通过串口1与开发板相连,用于输出调试信息并实现开发板与主机的命令交互,也可以使用其来烧写内核、文件系统和设置U-Boot参数;主机通过串口2来配置ST调试器的IP地址[3]。只有当调试器具备可以在网络上使用的IP地址时,调试器才可以使用。ST仿真器连接开发板的JTAG口用于烧写U-Boot、内核和文件系统等,并可用于调试开发板。开发板上的操作系统使用的是ST公司提供的STLinux系统,在开发过程中,使用NFS文件系统令开发板挂载主机上的文件系统,以提高调试的便捷度。主机、仿真器、开发板均连接到1个路由器以实现网络连接。

3 ST7109平台的开发流程[4]

ST7109上的IPTV机顶盒系统采用交叉开发模式。其开发流程如下:

1)在开发主机上搭建交叉开发环境,比如交叉编译工具的安装、通信工具的配置等;

2)在开发主机上利用交叉编译环境和相应的嵌入式系统内核(STLinux),根据所使用的硬件平台和所需实现的功能,构建一个嵌入式的Linux系统并生成内核的二进制文件映像;

3)构建其根文件系统,该系统只是开发过程中所使用的一个骨架,包含系统的基本配置文件和必要的系统支撑程序,使后续的开发在此基础上不断完善;

4)为了让这个系统在板上运行起来,使用内核的引导加载程序(Bootloader)进行硬件的初始化并将嵌入式Linux加载到内存中运行,在此基础上进行应用程序的开发和调试。

3.1 主机环境的搭建

开发平台中主机环境的搭建分为以下几步:

1)在安装前配置主机的PATH参数,通过修改root/.bash_profile文件来配置安装工具的环境变量。这样,在使用开发工具时,就可以直接使用工具的名称,而不必输入完整的路径。

2)进行ST的STLinux开发工具LDDE(Linux Distribution Develop Environment)的安装,既包含了STLinux的操作系统内核,还带有相关的开发环境,比如交叉编译器、本地编译器、调试器、下载工具等。在挂载相应的.iso文件后,进入安装文件夹使用install命令安装,安装完成后得到opt/STM/STLinux-2.2文件夹,接下来将工具箱和内核文件解压安装到相应的文件夹下。

3)安装 ST7109 的 SDK(STAPI),将 STAPI安装文件解压后,根据misc文件夹下的INSTALL-README.txt文档进行安装配置。

4)串口通信参数的配置,使用的串口通信函数是kermit(),利用脚本文件.kermrc对其进行如下配置:

3.2 内核的裁剪与配置

内核的配置主要是对内核的功能模块进行选择和参数设置,这一步骤通过进入内核源码目录,使用make menuconfig或make xconfig实现。在这里,通过menuconfig实现,menuconfig界面是一个按照功能模块分类的表单,以此选择内核需要支持的功能模块。模块前有2种配置符:“<>”与“[]”。对于“[]”对应的模块,可以通过空格切换为“*”和空置,用来表示此项目是否编入内核;对于“<>”对应的模块,多了一种选项“M”,表示此项目编译成内核模块,将生成一个独立可加载的内核模块文件,可在需要时动态载入[3]。

内核配置中,在ST7109的默认配置基础上根据板子的具体特性进行相应的修改。最后,在编译完成后将生成的内核文件利用mkimage工具打包,供U-Boot烧录。

3.3 根文件系统的制作

对于该机顶盒嵌入式文件系统,采用Ramdisk技术,将系统内存拿出一部分作为块设备,将基本程序和数据以某种文件系统的二进制映像形式,在内核运行前加载到该地址中。这样,在内核启动之后,该文件系统映像加载的内存区域被内核安装为根文件系统,这种Ramdisk就是所谓的初始RAM磁盘(Initrd)。

根文件系统中存放的是嵌入式Linux系统所需使用的基本应用程序、库以及系统配置等其他一些文件,根文件系统的制作主要包括以下几个方面[3]:

1)顶层的目录结构,包括顶层目录下的bin,sbin,dev,etc,lib,proc,usr,var,tmp 和 sys文件。 同时,还必须实现系统运行时所需的基本软件工具 (如ls,cp,mount等),这些可通过Busybox工具来实现,Busybox是构造文件系统最常用的一个软件工具包,其配置方法与menuconfig类似。

2)设备节点。Linux系统中的设备也是以文件方式存取的,在Linux系统启动时所需的设备节点也必须加到根文件系统中。

3)inittab文件。inittab是init程序读取的配置文件,通过执行脚本实现系统必要的初始化。init程序是内核启动后运行的第一个程序,所有的应用程序都是它的子进程,在系统运行期间一直驻留在内存中运行,直到系统关闭为止。

4)根文件系统制作完成后,可利用其生成initrd.img根文件系统镜像,并用mkimage打包成initrd.ub以供UBoot烧录。

3.4 U-Boot的制作

在内核映像和根文件系统映像创建好后,还必须有一个引导加载程序(Bootloader)负责硬件和内存的初始化工作,并在系统启动前负责加载内核和文件系统。Bootloader是系统加电后运行的第一段软件代码,从功能上说,其在操作系统内核运行之前负责初始化硬件设备、建立内存空间的映射图。加载过程如图3所示。

图3 Bootloader加载原理

系统复位后从0x00000000地址开始运行存放在Flash起始处的Bootloader。Bootloader启动后,初始化相应的硬件设备,并将嵌入式Linux内核及根文件系统映像分别加载到内核中的正确位置,然后跳转到内核的起始地址启动内核。

由于Bootloader和硬件紧密相关,所以Bootloader几乎都是对应于单一的设备,但仍有某些Bootloader试图把硬件相关的代码与其他代码相隔离,以支持多种体系结构。如U-Boot就是这么一种Bootloader,它能在改动不大的情况下支持多种体系结构。

ST的SDK中提供了支持ST7109芯片的U-Boot,笔者利用其提供的标准文档,针对开发的具体硬件设置对其进行了修改,生成所需的U-Boot文件,用来烧录到Flash中。

3.5 Flash的烧录

需要烧录进Flash中的文件共有3个:U-Boot程序u-boot.bin、内核映像vmlinux.ub和根文件系统映像initrd.ub。烧录Flash是通过仿真器实现的,先连接好JTAG接口,然后在主机中运行kermit连接仿真器。仿真器的端口设置完成后,使用Load命令将u-boot.bin下载到Flash当中。下载成功后,U-Boot将自动运行,这时可通过U-Boot命令将内核映像和根文件系统也写到Flash中。

当文件烧录完成后,可根据需要,利用U-Boot设置开发板上的网络地址、串口协议、启动参数等环境变量并保存,下次开发板上电时就能自动启动系统了。

3.6 NFS文件系统

NFS文件系统基于客户端/服务器模型,允许客户端通过网络共享远程主机的文件。在开发过程中使用NFS文件系统,利用开发板调用主机中特定文件夹里的文件系统作为自身的根文件系统,比使用Ramdisk开发调试方便。

NFS文件系统的配置包括主机的配置、嵌入式内核的配置和U-Boot配置。在RedHat Linux中NFS的配置文件是ect/exports,本系统中的配置文件为/opt/STM/STLinux-2.2/target* (rw,no_rootsquash, sync)。

然后在内核配置中打开对NFS的支持,最后在UBoot中设置内核的启动参数,其设置格式为bootargs_nfs=set bootargs${mem}${tty}root=/dev/nfs${nwhwconf}${stmmaceth}nfsroot=${serverip}∶${serverdir},${tcp_udp}ip=${ipaddr}。

4 小结

利用ST7109芯片的开发板搭建开发平台,实现高清网络视频的播放功能以及基于XBMC框架的机顶盒系统。该高清机顶盒所支持的视频格式范围广,目前能实现MPEG-2、H.264、VC-1格式1080i分辨力的视频硬解码播放[5-6],同时,基于XBMC能实现大量其他音视频格式的软解码播放功能以及多种娱乐功能[7-8]。为满足最终IPTV业务的需要,未来仍需要在具体运营商的配合下开发其他业务功能。

[1]信息产业部.SJ/T 11324-2006-I,数字电视接收设备术语[S].北京:信息产业部,2006.

[2]袁冰.基于STx5105芯片的数字电视机顶盒设计与实现[D].大连:大连海事大学电子与通信工程系,2008.

[3]谢希仁.计算机网络教程[M].北京:人民邮电出版社,2006.

[4]郑灵翔.嵌入式系统设计与应用开发[M].北京:北京航空航天大学出版社,2006.

[5]尹明,王宏远.VC-1 视频编码技术研究[J].电视技术,2005(11):20-21.

[6]韩云,陈祖爵.H.264,VC-1和AVS视频编码研究[J].电视技术,2007,31(2):6-9.

[7]李华.嵌入式IPTV流媒体播放器关键技术研究[D].西安:西北工业大学软件工程系,2007.

[8]张涛.IPTV机顶盒流媒体系统研究[D].西安:西安电子科技大学计算机应用技术系,2006.

猜你喜欢

开发板机顶盒内核
强化『高新』内核 打造农业『硅谷』
机顶盒上别盖布
安全使用机顶盒注意五点
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
浅析单片机开发板的设计与制作
微生物内核 生态型农资
有线电视高清数字电视机顶盒测试系统的构建
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
What is Apple Watch All About?