MPlayer 在FS2410上的移植過程

來源:互聯網
上載者:User
○. 移植前的準備

原始碼包選用目前最新的MPlayer-1.0pre7try2.tar.bz2,這些很容易從網上找到來就不給出連接了。編譯工具選擇arm-linux-gcc-3.3.2.tar.bz2,這個有70多M,也忘了當初從哪裡收集回來的,本人就有這些收破爛的嗜好,沒想到這次管用了:)2.95.3的在編譯MPlayer-1.0pre7try2這個版本時會有問題,另外網上常見的gcc3.4.1版在編譯libavcodec/snow.c檔案時會掛掉,不知道是GNU的BUG還是MPlayer的BUG,沒時間深究了,那位高人有結論了麻煩通報一下。補丁用不到,可以一帆風順的完成編譯的過程。

 

 

一.    安裝工具及解壓縮原始碼

將arm-linux-gcc安裝到/usr/local/arm/3.3.2/bin下,確保你現在有root許可權哦,假設你的arm-linux-gcc工具包放在~/src目錄下,執行以下的操作。當然你也可以將arm-linux-gcc安裝到其它地方。

cd /

tar jxvf ~/src/ arm-linux-gcc-3.3.2.tar.bz2

修改$PATH變數包含arm-linux-gcc,我個人習慣修改目前使用者home目錄下的.bash_profile檔案。在.bash_profile檔案中增加一行

$PATH=/usr/local/arm/3.3.2/bin: $PATH

也可以不做這一步在以後用的地方用絕對路徑。

以上完成了交叉編譯工具的安裝,接下來該解壓MPlayer的原始碼了。將MPlayer-1.0pre7try2.tar.bz2拷貝到工作目錄(比如~/develop)下。

cp ~/src/MPlayer-1.0pre7try2.tar.bz2 ~/develop

cd ~/develop

tar jxvf MPlayer-1.0pre7try2.tar.bz2

mv MPlayer-1.0pre7try2 MPlayer (這裡只是改個名字,原來的實在太長了)

上面應該不會有什麼問題的,接下來就要開始編譯了,各位看官可要看好了哈,來點掌聲鼓勵嘛…..哈哈。

 

 

二.    開始編譯

首先是配置,這裡有幾個要注意的地方,命令如下:

./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv4l-linux --enable-static --prefix=/tmp/mplayer --disable-win32  --disable-dvdread --enable-fbdev --disable-mencoder --disable-live 2>&1 | tee logfile

--host-cc=gcc是用來編譯一些需要在host上執行的中間檔案的,如codec-cfg,切記不能少了或搞錯了!網上的《mplayer在ARM9(s3c2410)上的移植》(以下簡稱《移》文)一文介紹說遇到提示codec-cfg不能被執行出錯時的解決方案是先將codec-cfg編譯成i386平台的在再這裡停下來時用i386的codec-cfg替代從而使編譯繼續。通過實驗設定了這個參數就不用那麼麻煩了,而且整個過程也顯得比較幽雅了。

--cc=arm-linux-gcc這個沒什麼好介紹的。如果上面沒有將arm-linux-gcc的位置加入到$PATH中的話,在這個指定絕對路徑好了。

--target=arm-armv4l-linux這個參數要注意的是一個分三部分,第一部分的arm是指arch,這裡設定為arm;第二部分的armv4l是指具體的版本,這個要注意了,一定要跟libavcodec目錄下的平台目錄名一致,否則為這個平台的最佳化代碼沒辦法編譯進去(據我觀察是這樣的^_@ );第三部分是系統平台。

--enable-static是設定靜態串連,不需要一堆亂七八糟的動態庫,尤其對我們這些新手來說省了很多的麻煩。如果設定了這個參數就不用設定—prefix了,另外也不用執行make install。

最後的一個2>&1 | tee logfile意思是將執行的情況在輸出到螢幕的同時記錄到logfile檔案中,在控制台下編譯比較有用。

剩餘的幾個參數沒什麼好介紹的了,記住--disable-mencoder要加上,mencoder在這裡編譯會有問題,還沒有時間去研究呢。如果不清楚其它的參數的意思自己看configure檔案吧,裡面都有介紹。

配置完成了就該編譯了。執行

make

這裡在我的機器上大概花費了2-3分鐘的時間。這樣在目前的目錄下就得到可執行檔mplayer檔案。

三.    試運行

上面我們得到了可以在2410上執行的mplayer了,我是迫不得已的要跑一跑看效果如何。

現介紹一下host的設定。配置host的nfs服務,使host作為一台伺服器能夠被2410掛上(2410上的核心需要支援nfs哦)。以上的一些步驟很多資料上都有,我就摘錄一些了,嘿嘿。

修改/etc/export檔案,在其中添加一行: /nfs *(rw,sync,no_root_squash)

關掉防火牆: iptables –F

讓nfs服務開機自動執行: setup 後選service

上面的需要重新啟動後nfs才能運行起來,如果你現在還不想重起的話,咱們手動讓它跑起來: /etc/rc.d/init.d/nfs start

現在可以進行下一步了,將mplayer拷貝到host的nfs根目錄裡,將要播放的檔案也一起拷貝過來

cp mplayer /nfs

cp xxx.avi /nfs

從2410上將主機的/nfs目錄掛到開發板上沒有使用的一個空目錄上來,一般我選/mnt下的目錄,如/mnt/nfs

mount –t nfs 192.168.1.222:/nfs /mnt/nfs

現在試試看有沒有成功,在終端裡輸入

cd /mnt/nfs

./mplayer xxx.avi

只見終端稀裡嘩啦的現實一堆的東西就停下來了。慘了!我是新手啊,讓我怎麼處理呢。別急慢慢來,先看看提示資訊吧。提示資訊中大概有這些

can’t open /dev/fb0

vo[null]

can’t open /dev/dsp

ao[null]

先把映像弄出來吧,這樣可以證明編譯和基本設定都沒有問題,聲音下一步再處理了。看mplayer手冊介紹使用的視頻輸出是fb.去/dev下面看看發現只有/dev/fb一個而沒有/dev/fb0啊。先看看有效輸出裝置吧,用mplayer –vo help,挨個挨個試mplayer –vo xx xxx.avi都還是不行。難道是編譯過程有問題?解碼器什麼的各個參數組合都試了一遍,還是一樣,LCD沒有動靜。折騰了幾個晚上,我打算放棄了……

一日在網上閑逛,看了一片文章介紹Linux的一些技巧,如cp /dev/fb myimage相當於抓屏。突然我在想那麼是不是cp myimage /dev/fb就相當於顯示myimage呢?不管它試試再說。果然LCD開始有動作了,雖不是正常的將圖片顯示出來,但還是可以三個相同的輪廓。此證明LCD的驅動是沒有問題的。而mplayer使用的是/dev/fb0我cp的是/dev/fb!而且這個/dev/fb0我好像在什麼地方見到過。仔細這麼一想,以前核心是有這個/dev/fb0的,現在使用的核心是我自己編譯的,而且有/dev/fb這個節點說明framebuff驅動沒有問題,那麼新舊核心的差別在什麼地方?這是我想到好像在編譯核心的時候我沒有按實際修改mtd的分區參數會不會是這個在作怪呢?

修改drivers/mtd/nand/s3c2410_nand.c檔案中的參數為實際對應的參數重新編譯核心下載,去/dev目錄下一看果然/dev/fb0出現了。….(此處省略xxx位元組)追查到/etc/init.d/rcS檔案(每個人的配置不一樣,請查看你對應的檔案)一切真相大白,各位自己去研究這個檔案吧。由於檔案分區資訊不對,核心不能執行/etc/init.d/rcS,導致一些系統初始化動作沒有執行。

再試著執行./mplayer xxx.avi還是不對,難道難道…試一試《移》文中的只播放映像不播放聲音,./mplayer –nosound xxx.avi哈哈正常了,在320x240的解析度下相當的流暢,沒什麼好說的,按《移》文修改聲音驅動程式重新編譯核心。

到這裡本應該結束了,可是…可是…唉,嵌入式就是這樣的,成功總是一模一樣,錯誤總是千差萬別啊。

作者Blog:http://blog.csdn.net/bekars/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.