亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式Linux下的AU 1200 MAE驅(qū)動程序設(shè)計

        2010-04-12 00:00:00
        現(xiàn)代電子技術(shù) 2010年8期

        摘 要:媒體加速引擎是AlchemyTM AU 1200的片上硬件設(shè)備,主要完成圖像及視頻的解碼。為了能在嵌入式Linux下使用媒體加速引擎完成視頻的硬解碼,在此介紹了該設(shè)備的硬件結(jié)構(gòu),以及在嵌入式Linux下構(gòu)建其開發(fā)環(huán)境的方法和過程,包括主機開發(fā)環(huán)境的構(gòu)建,交叉編譯工具的使用以及交叉編譯的過程,并重點介紹媒體加速引擎驅(qū)動程序的設(shè)計,交叉編譯,加載到Linux內(nèi)核以及應(yīng)用測試的整個流程。經(jīng)測試,該驅(qū)動程序可動態(tài)加載入Linux內(nèi)核并成功驅(qū)動媒體加速引擎,從而可將其應(yīng)用于媒體播放器完成視頻的硬解碼功能。

        關(guān)鍵詞:嵌入式Linux;AlchemyTM AU 1200;媒體加速引擎;驅(qū)動程序

        中圖分類號:TP368.1文獻標(biāo)識碼:B

        文章編號:1004-373X(2010)08-0048-03

        Design of AU 1200 MAE Driving Program under Condition ofEmbedded Linux

        FENG Chao

        (School of Information Science and Technology, Xiamen University, Xiamen 361005, China)

        Abstract:The media acceleration engine(MPEG)which mainly performs the decoding of video and image,is an on-chip hardware of AlchemyTM AU 1200, In order to implement the video′s hardware decoding with MAE under the condition of embedded Linux, the hardware structure of MAE, the methods and process ofbuilding its developmentenvironment including the construction of the host development environment under the condition of embedded Linux, and the usage of the cross compiling tools and process ofcross compiling are introduced. The development of MAE driver is explained in detail, including the driver programming, cross compiling, loading into the kernel and its application testing. The driving program can be dynamically loaded into the Linux kernel and drive the MAE successfully. Therefore, it can be used in the multimedia player to accomplish the video′s hardware-decoding.

        Keywords:embedded Linux; AlchemyTM AU 1200; MAE; driving program

        隨著移動多媒體終端的日益普及,功能的日益強大,人們已經(jīng)不滿足于自己的手持終端僅僅能夠聽MP3音樂,而是希望終端在播放音樂的同時能夠播放高質(zhì)量視頻,并支持多種視頻格式。AU 1200作為一款基于MIPS架構(gòu)的處理器,由于其片上集成了視頻硬件設(shè)備(Media Acceleration Engine,MAE),使得該處理器無需配合其他視頻解碼芯片即可完成多種格式的視頻解碼功能,所以AU 1200非常適合應(yīng)用于像PMP這樣的移動多媒體終端,而MAE也成為AU 1200的特色。

        1 MAE概述

        MAE是AU 1200的片上硬件設(shè)備,除了可以實現(xiàn)視頻解碼功能外,還可以完成色彩空間轉(zhuǎn)換、濾波等工作。MAE在硬件結(jié)構(gòu)上可以分為前端和后端兩部分,各自完成一些特定的功能。MAE前端主要完成視頻的實時解碼,包括反量化、IDCT、運動補償?shù)?而后端主要完成圖像的濾波、色彩空間轉(zhuǎn)換等。除此之外,MAE還可以通過AU 1200片上外設(shè)CIM(Camera Interface Module)處理從攝像頭獲取的數(shù)據(jù)。MAE使AU 1200的MIPS32核不用再因為視頻的實時解碼而產(chǎn)生大量的開銷,從而使其能夠?qū)W⒂谕瓿山涌?、音頻處理等其他任務(wù),這樣一來大大提高了系統(tǒng)的工作效率。MAE支持的視頻Codec格式包括:MPEG-2 Main Profile @ Main Level,MPEG- Advanced Simple Profile @Level 5,WMV 9 Media Profile @ Medium Level,最高支持D1 30 f/s的實時解碼[1]。

        2 開發(fā)環(huán)境的建立

        硬件開發(fā)板采用華恒科技的HHAU 1200,該板提供豐富的接口,并已將Bootloader固化在板上的FLASH當(dāng)中,通過燒寫工具可對其軟件系統(tǒng)進行更新升級。只要建立交叉編譯環(huán)境便可在HHAU 1200上開發(fā)硬件設(shè)備驅(qū)動程序和應(yīng)用程序[2]。

        2.1 宿主機開發(fā)環(huán)境的建立

        宿主機(PC)通過串口線連接至開發(fā)板的串口1,同時通過交叉網(wǎng)線連接至開發(fā)板的網(wǎng)口。宿主機安裝Red Hat Linux操作系統(tǒng),所安裝的版本是Enterprise Linux AS4,建議采用完全安裝。由于HHAU 1200開發(fā)板在燒寫時默認(rèn)的IP為192.168.2.222,所以PC機的IP也要設(shè)置在該網(wǎng)段[3]。在Linux PC下配置好NFS(為交叉開發(fā)時Mount所用)、TFTP服務(wù)器(為下載燒寫所用)和Minicom。以上幾項配置好后啟動Minicom,當(dāng)開發(fā)板上電后便可看到啟動信息。

        在PC的Linux終端提示符下鍵入mount -o nolock 192.168.2.222://mnt,即把AU 1200開發(fā)板根目錄下的所有文件和目錄Mount到宿主機Linux下的mnt目錄,在Linux終端提示符下可通過ls命令查看[4]。

        2.2 交叉編譯工具鏈的建立

        按照以下步驟:

        (1) 下載交叉編譯工具軟件包[5]mipsel-linux-gcc-sdk-3.4.4-i386.tar.gz,解包至/opt路徑下;

        (2) 添加交叉編譯工具環(huán)境變量:修改/etc/profile文件,在文件末尾添加export PATH=$PATH:/opt/mipsel-linux-gcc-sdk-3.4.4/cross/bin;

        (3) 使新的環(huán)境變量生效:#source /etc/profile;

        (4) 檢查是否將路徑加入PATH:#echo $PATH,若顯示的內(nèi)容中有上述路徑,說明已經(jīng)將交叉編譯工具的路徑加入PATH;

        (5) 用hello.c進行交叉編譯測試:編譯出的可執(zhí)行文件用file命令查看其屬性[6]可得到如圖1所示信息。

        圖1 文件屬性信息

        這說明交叉編譯工具可以正常使用,編譯出的可執(zhí)行文件可以在MIPS處理器上直接運行。

        3 MAE前端驅(qū)動軟件設(shè)計及測試

        3.1 驅(qū)動軟件設(shè)計

        MAE可分為前端和后端,前端的主要功能是完成多種視頻格式的實時解碼,其方框圖如圖2所示[7]。

        MAE前端的輸入數(shù)據(jù)是一系列的數(shù)據(jù)宏塊,宏塊數(shù)據(jù)以及頭信息、系數(shù)矩陣、運動向量等都以DMA的方式傳送給MAE。所以在程序中首先要定義指針maefe_dmadscr[PTR]來描述DMA。并把maefe_dmadbell[DB]寄存器設(shè)置為1來啟動DMA控制器。頭信息一共包含4個word,每個word有32 b,這4個word分別保存到AU 1200寄存器mae_hdr0到mae_hdr3中,這些word包含了關(guān)于編碼宏塊的信息,如量化參數(shù),運動補償參數(shù),變換運算等信息[8]。

        驅(qū)動程序首先要把每一幀的地址寫入MAE的相關(guān)寄存器中,在每處理一幀后,上述宏塊信息都要及時更新。MAE的前端對宏塊數(shù)據(jù)進行反量化,其結(jié)果輸入至逆變換單元進行逆變換運算。逆變換運算單元通過查看maefe_config寄存器的COD標(biāo)志位來決定采用哪種標(biāo)準(zhǔn)的視頻Codec,從而執(zhí)行相應(yīng)的運算。逆變換運算完成后,數(shù)據(jù)送入運動補償單元。運動補償單元根據(jù)運動向量計算出參考像素值,并把它們插入當(dāng)前幀中,從而完成一次解碼[9]。以上過程通過編寫函數(shù)fe_process_mb來實現(xiàn),該函數(shù)的幾個參數(shù)分別是:

        圖2 MAE前端方框圖

        mae_fe_cfg:MAE前端的配置信息;mb_in:輸入的宏塊數(shù)據(jù);cur_y_frame:當(dāng)前幀Y分量;cur_cb_frame:當(dāng)前幀Cb分量;cur_cr_frame:當(dāng)前幀Cr分量;mb_num:表示宏塊數(shù)據(jù)的序號。該函數(shù)的流程圖如圖3所示。

        圖3 MAE FE工作流程

        函數(shù)中的關(guān)鍵部分及說明注釋如下所示:

        void fe_process_mb(mae_fe_config * mae_fe_cfg,mae_fe_mb * mb_in,uint8 *cur_y_frame,uint8 *cur_cb_frame,uint8 *cur_cr_frame,uint32 mb_num)

        {…

        mae_init_once(mae_fe_cfg,mb_in);//MAE前端初始化配置

        check_param_size(mae_fe_cfg,mb_in);//查看MAE前端參數(shù)設(shè)置

        check_valid_cfg_changes(mae_fe_cfg,mb_in,mb_num);//查看MAE前端配置是否改變

        do_malloc_if_necessary(mae_fe_cfg);//當(dāng)宏塊數(shù)據(jù)送入是,為其分配內(nèi)存空間

        perform_iquant(mae_fe_cfg,mb_in,fixed_point_block,bn,wm,blk_mbmode);

        //對宏塊數(shù)據(jù)執(zhí)行反量化

        if(!mae_fe_cfg->codstyl)//判斷編碼器類型

        lee_idct_2d_fixed_point(fixed_point_block,dst_block,bn,exp_bc);

        //執(zhí)行IDCT變化

        idct_output[c] = (char)dst_block[c];

        copy_data_to_cur(mae_fe_cfg,mb_in,cur_y_frame,cur_cb_frame,cur_cr_frame);

        //生成當(dāng)前幀…}

        3.2 驅(qū)動軟件測試

        將以上程序交叉編譯,生成mae-driver.ko,動態(tài)加載到Linux內(nèi)核:#insmod –f mae-driver.ko。用MAIplayer驗證是否可以正常工作:啟動minicom,進入MAIplayer所在路徑,該路徑下有編譯好的播放器應(yīng)用程序及各種視頻解碼庫。執(zhí)行視頻文件播放命令MYM./maiplayer auto –a –l jolin.mpg[10]。播放效果如圖4所示。經(jīng)測試, MAIplayer可正常播放多媒體視頻,說明MAE已被驅(qū)動起來完成視頻解碼工作。

        圖4 測試示意圖

        4 結(jié) 語

        本文給出了AU 1200 MAE驅(qū)動程序開發(fā)的流程,包括開發(fā)環(huán)境的搭建及驅(qū)動程序的編寫。 MAE作為AU 1200片上專用于圖像、視頻的外部設(shè)備,相當(dāng)于一個視頻協(xié)處理器。它的使用大大提高了MIPS核的工作效率,而以AU 1200為核心的多媒體終端具有更低的成本,因此,其市場前景將更加廣闊。

        參考文獻

        [1]Raza MicroelectronicsIncorporation.. RMI AlchemyTM AU 1200TM , Au1210TM , Au1250TMprocessors media acceleration engine\\.\\: Raza MicroelectronicsInc., 2007.

        [2]華恒科技. HHAU12XX開發(fā)平臺技術(shù)手冊\\. 2007.

        [3]陳文智. 嵌入式系統(tǒng)開發(fā)原理與實踐[M]. 北京: 清華大學(xué)出版社, 2005.

        [4]鄭靈翔. 嵌入式系統(tǒng)設(shè)計與應(yīng)用開發(fā)[M]. 北京: 北京航空航天大學(xué)出版社, 2006.

        [5]Raza Microelectronics Incorporation.. RMI AlchemyTM AU 1200TM , Au1210TM and Au1250TMprocessors media application interface software development kit\\. \\: Raza Microelectronics Inc., 2007.

        [6]Raza MicroelectronicsIncorporation.. RMI AlchemyTM AU 1200TMprocessor data book\\. \\: Raza MicroelectronicsInc., 2006.

        [7]楊文慧, 施芝元, 黃聯(lián)芬. 嵌入式AU 1200無線車載終端播放器設(shè)計實現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2009, 32(16): 42-43.

        [8]宋丹, 馬昌萍, 馬幼鳴. MPlayer在嵌入式開發(fā)系統(tǒng)中的應(yīng)用[J]. 電子產(chǎn)品世界, 2005(7): 68-71.

        [9]Raza MicroelectronicsIncorporation.. RMI AlchemyTM AU 1200TMprocessor-based system media player software user′s guide\\. \\: Raza MicroelectronicsInc., 2006.

        免费人妻精品一区二区三区| 老熟妇仑乱一区二区视頻| 麻豆国产乱人伦精品一区二区| 久久亚洲午夜牛牛影视| 国产一区二区三区探花| 国精产品一区一区三区有限在线| 国产熟妇按摩3p高潮大叫| 午夜高清福利| 成年人男女啪啪网站视频| 女人av天堂国产在线| 久久人妻少妇嫩草av| 日韩一区国产二区欧美三区| 少妇内射视频播放舔大片| 久久精品国产久精国产69| 人妻在线有码中文字幕| av国产传媒精品免费| 真人作爱免费视频| 天堂sv在线最新版在线| 色婷婷丁香综合激情| 中国亚洲av第一精品| 一二区成人影院电影网| 蜜臀av免费一区二区三区| 亚洲精品2区在线观看| 午夜大片在线播放观看| 中文字幕av伊人av无码av| 欧美成人在线视频| 香蕉色香蕉在线视频| 国产自产自现在线视频地址| 深夜黄色刺激影片在线免费观看| 人人做人人爽人人爱| 婷婷丁香社区| 亚洲国产av剧一区二区三区| 91久久综合精品久久久综合| 初尝人妻少妇中文字幕| 国产av无码专区亚洲av| 青青草针对华人超碰在线| 久久精品国产亚洲av四叶草| 日日婷婷夜日日天干| 亚洲人成人影院在线观看| 国产av91在线播放| 亚洲av久播在线一区二区|