嵌入式Linux下的AU1200MAE驱动程序设计

2011-08-09 14:44:08来源: 互联网

    随着移动多媒体终端的口益普及,功能的日益强大,人们已经不满足于自己的手持终端仅仅能够听MP3音乐,而是希望终端在播放音乐的同时能够播放高质量视频,并支持多种视频格式。AU 1200作为一款基于MIPS架构的处理器,由于其片上集成了视频硬件设备(Media Accel-eration Engine,MAE),使得该处理器无需配合其他视频解码芯片即可完成多种格式的视频解码功能,所以AU 1200非常适合应用于像PMP这样的移动多媒体终端,而MAE也成为AU 1200的特色。

  1 MAE概述

  MAE是AU 1200的片上硬件设备,除了可以实现视频解码功能外,还可以完成色彩空间转换、滤波等工作。MAE在硬件结构上可以分为前端和后端两部分,各自完成一些特定的功能。MAE前端主要完成视频的实时解码,包括反量化、IDCT、运动补偿等;而后端主要完成图像的滤波、色彩空间转换等。除此之外,MAE还可以通过AU 1200片上外设CIM(Camera InteRFaceModule)处理从摄像头获取的数据。MAE使AU 1200的MIPS32核不用再因为视频的实时解码而产生大量的开销。从而使其能够专注于完成接口、音频处理等其他任务,这样一来大大提高了系统的工作效率。MAE支持的视频Codec格式包括:MPEG-2 Main Profile@Main Level,MPEG- Advanced Simple Profile @ Level 5,WMV 9 Media Profile @ Medium Level,最高支持D1 30 f/s的实时解码。

  2 开发环境的建立

  硬件开发板采用华恒科技的HHAU 1200,该板提供丰富的接口,并已将Bootloader固化在板上的FLASH当中,通过烧写工具可对其软件系统进行更新升级。只要建立交叉编译环境便可在HHAU 1200上开发硬件设备驱动程序和应用程序

  21 宿主机开发环境的建立

  宿主机(PC)通过串口线连接至开发板的串口1,同时通过交叉网线连接至开发板的网口。宿主机安装Red Hat Linux操作系统,所安装的版本是EnterpriseLinux AS4,建议采用完全安装。由于HHAU 1200开发板在烧写时默认的IP为192.168.2.222,所以PC机的IP也要设置在该网段。在Linux PC下配置好NFS(为交叉开发时Mount所用)、TFTP服务器(为下载烧写所用)和Minicom。以上几项配置好后启动Minicom,当开发板上电后便可看到启动信息。

  在PC的Linux终端提示符下键入mount-onolock 192.168.2.222://mnt,即把AU 1200开发板根目录下的所有文件和目录Mount到宿主机Linux下的mnt目录,在Linux终端提示符下可通过ls命令查看。

  22 交叉编译工具链的建立

  按照以下步骤:

  (1)下载交叉编译工具软件包mipsel-linux-gcc-sdk-3.4.4-i386.tar.gz,解包至/opt路径下;

  (2)添加交叉编译工具环境变量:修改/etc/profile文件,在文件末尾添加export PATH=$PATH:/opt/mipsel-linux-gcc-sdk-3.4.4/cross/bin;

  (3)使新的环境变量生效:#source/etc/profile;

  (4)检查是否将路径加入PATH:#echo$PATH,若显示的内容中有上述路径,说明已经将交叉编译工具的路径加入PATH;

  (5)用hello.c进行交叉编译测试:编译出的可执行文件用file命令查看其属性可得到如图1所示信息。

  这说明交叉编译工具可以正常使用,编译出的可执行文件可以在MIPS处理器上直接运行。

  3MAE前端驱动软件设计及测试

  31 驱动软件设计

  MAE可分为前端和后端,前端的主要功能是完成多种视频格式的实时解码,其方框图如图2所示。

 MAE前端的输入数据是一系列的数据宏块,宏块数据以及头信息、系数矩阵、运动向量等都以DMA的方式传送给MAE。所以在程序中首先要定义指针maefe_dmadscr[PTR]来描述DMA。并把maefe_dreadbell[DB]寄存器设置为1来启动DMA控制器。头信息一共包含4个word,每个word有32 b,这4个word分别保存到AU 1200寄存器mae_hdr0到mae_hdr3中,这些word包含了关于编码宏块的信息,如量化参数,运动补偿参数,变换运算等信息。

  驱动程序首先要把每一帧的地址写入MAE的相关寄存器中,在每处理一帧后,上述宏块信息都要及时更新。MAE的前端对宏块数据进行反量化,其结果输入至逆变换单元进行逆变换运算。逆变换运算单元通过查看maefe_config寄存器的COD标志位来决定采用哪种标准的视频Cod-ec,从而执行相应的运算。逆变换运算完成后,数据送入运动补偿单元。运动补偿单元根据运动向量计算出参考像素值,并把它们插入当前帧中,从而完成一次解码。以上过程通过编写函数fe_process_mb来实现,该函数的几个参数分别是:

  mae_fe_cfg:MAE前端的配置信息;mb_in:输入的宏块数据;cur_y_frame:当前帧Y分量;cur_cb_frame:当前帧Cb分量;cur_cr_fr-ame:当前帧Cr分量;mb_num:表示宏块数据的序号。该函数的流程图如图3所示。

  函数中的关键部分及说明注释如下所示:

  32 驱动软件测试

  将以上程序交叉编译,生成mae-driver.ko,动态加载到Linux内核:#insmod - f mae-driver.ko。用MAIplayer验证是否可以正常工作:启动minicom,进入MAIplayer所在路径,该路径下有编译好的播放器应用程序及各种视频解码库。执行视频文件播放命令MYM./maipl-ayer auto-a-l jolin.mpg。播放效果如图4所示。经测试,MAIplayer可正常播放多媒体视频,说明MAE已被驱动起来完成视频解码工作。

  4 结语

  本文给出了AU 1200 MAE驱动程序开发的流程,包括开发环境的搭建及驱动程序的编写。MAE作为AU 1200片上专用于图像、视频的外部设备,相当于一个视频协处理器。它的使用大大提高了MIPS核的工作效率,而以AU 1200为核心的多媒体终端具有更低的成本,因此。其市场前景将更加广阔。

关键字:嵌入式linux  驱动  驱动程序  程序

编辑:eeleader 引用地址:http://www.eeworld.com.cn/gykz/2011/0809/article_7948.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
嵌入式linux
驱动
驱动程序
程序

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved