4 MPEG4视频解码的嵌入式系统实现
实现本解码器的主要硬件平台是Easy ARM2200,如图5所示。它是一款功能强大的32位ARM单片机开发板,采用了Philips公司的ARM7TDMI?S核,以及总线开放的单片机LPC2210,具有JTAG调试功能。
图5 Easy ARM2200开发板
开发板上除了提供键盘、LED和RS232等一些常用功能部件外,还具有4Mb SRAM、16Mb FLASH、IDE硬盘接口、CF存储卡接口、以太网接口和Modem接口等。
本文选择在μClinux操作系统上调试MPEG4解码程序。调试过程分为以下几个步骤:
- 建立μClinux开发环境;
- 在μClinux下开发应用程序;
- 添加应用程序到目标系统并调试。
图6 为一个基于μClinux的嵌入式系统典型框架结构图。
图6 基于μClinux嵌入式系统框图
(1) 建立μClinux开发环境
为了实现基于μClinux的应用系统的开发,建立或拥有一个完备的μClinux开发环境是十分必要的。建立μClinux开发环境主要包括以下3个步骤:
- 建立交叉编译器;
- 编译μClinux内核;
- 加载内核。
在完成上述所有工作后,一个嵌入式应用开发平台就已经搭建好了。在这个平台之上,可以根据不同需要开发嵌入式应用。
(2) 在μClinux下开发应用程序
基于μClinux系统的应用程序的开发,通常是在标准Linux平台上用交叉编译工具arm?elf?gcc来完成的。ADS和arm?elf?gcc都是ARM公司提供的软件开发工具,它们都支持ARM指令集,但部分伪指令集不同。因此为了将在ADS1.2环境下优化好的源代码移植到arm?elf?gcc环境下,就需要对源代码的伪指令作修改, 然后用arm?elf?gcc编译源文件,以生成可在目标板上运行的可执行程序。
(3) 添加应用程序到目标系统并调试
要在硬件板上调试,就必须首先把应用软件的可执行程序添加到目标系统中。有多种途径可以达到这一目的。本文使用的是网络方法,通过以太网接口从网络添加用户程序到目标系统中运行。
完成上述工作后,MPEG4解码程序就可以在μClinux系统上运行了,解码结果数据流通过以太网动态传输到PC机上。对几个典型QCIF格式图像解码的帧率如表5所列。
表5 在μClinux操作系统中MPEG4视频解码的帧率
视频序列
解码的实际帧率/帧/s
news
35
foreman
16
miss_am
37
carphone
17
salesman
36
trevor
17
观察发现与前面的软件仿真结果是一致的。对于序列news、miss_am和salesman这些运动动作不太大的图像,解码帧率明显较高;而对于foreman、carphone和trevor这些运动动作较大的图像,解码帧率就较低。
实验结果表明,本系统可以实现低帧率、低分辨率的嵌入式MPEG4视频实时解码。
5 结束语
本文重点研究了基于ARM开发平台对MPEG4实时解码的算法优化及其硬件实现。主要完成了以下几方面工作: 针对ARM7TDMI的体系结构,对解码的关键部分进行了算法优化和代码优化,从而极大地提高了解码速度;针对具体的硬件平台——基于ARM7TDMI的Eeay ARM2200开发板,建立了μClinux开发环境,在其上开发应用程序,添加到目标系统中并调试,最后完成了15fps的MPEG4视频解码嵌入式系统的实时实现。
随着人们对视觉媒体的要求越来越高,基于嵌入式系统视频解码技术将具有越来越广阔的前景。