嵌入式網(wǎng)絡(luò)收音機(jī)的ARM實現(xiàn)
3.1 嵌入式Linux的移植
嵌入式Linux內(nèi)核的版本很多,一般情況下版本越高,系統(tǒng)越穩(wěn)定,驅(qū)動更完善,本系統(tǒng)選擇了2.6.18的Linux內(nèi)核。其實對于2.6以后版本的Linux內(nèi)核,對S3C2410的支持都有了很好的支持,所以移植過程都比較簡單[3]。Linux2.6.18移植到S3C2410的基本步驟如下:
(1)下載Linux2.6.18內(nèi)核,并解壓到相應(yīng)目錄。
(2)修改內(nèi)核頂層目錄下的Makefile文件,指明交叉編譯器。進(jìn)入Linux-2.6.18內(nèi)核目錄,輸入命令vi Makefile,找到ARCH和CROSS_COMPILE兩項,將其修改為ARCH = arm,CROSS_COMPILE = arm-linux-。
(3)設(shè)置PATH環(huán)境變量,使其可以找到交叉編譯工具。輸入su root,進(jìn)入root,在輸入vi/etc/bashrc,在結(jié)尾處加入以下行:export PATH=/usr/local/arm/3.4.4/bin:$PATH,然后重啟終端或重新登陸即可。
(4) 設(shè)置Flash分區(qū)。首先要在arch/arm/mach-s3c2410/devs.c文件中添加分區(qū)信息,其次在arch/arm/mach-s3c2410/mach-smdk2410.c文件的smdk2410_devices[]的成員中添加s3c_device_nand。這樣Linux內(nèi)核啟動時,就會對Flash分區(qū)的設(shè)置初始化。
(5)禁止Flash ECC校驗。修改drivers/mtd/nand/s3c2410.c 文件,找到s3c2410_nand_init_chip()函數(shù),在該函數(shù)體最后加上一條語句:chip->eccmode = NAND_ECC_NONE。
(6)配置內(nèi)核。通過make menuconfig命令配置內(nèi)核。
(7)編譯內(nèi)核,make zImage命令,得到Linux內(nèi)核的映像文件zImage。
(8)制作根文件系統(tǒng)。
3.2 Mplayer移植
Mplayer是Linux下的一個多媒體網(wǎng)絡(luò)播放器。它的主要功能是對接收到的各種格式的流媒體數(shù)據(jù)進(jìn)行解碼,同時也完成對接收的網(wǎng)絡(luò)電臺的IP地址進(jìn)行解析的任務(wù)。Mplayer支持mp3、ogg 和wma等多種格式的流媒體數(shù)據(jù)進(jìn)行解碼,是一個功能十分強(qiáng)大的開源應(yīng)用軟件。Mplayer的移植步驟如下:
(1)下載源代碼MPlayer-current.tar.bz2,并解壓。
(2)為了讓mplayer支持在線播放,從而能夠播放網(wǎng)絡(luò)電臺,還必須下載安裝網(wǎng)絡(luò)協(xié)議包(主要指RTSP、MMS等協(xié)議)??蓮膚ww.live555.com上下載live555協(xié)議包,解壓后配置并編譯。
(3)配置mplayer的命令格式如下:
./configure --cc=arm-linux-gcc --target=arm-armv4-linux --enable-static --disable-win32 --host-cc=gcc --disable-dvdread --enable-fbdev --disable-mencoder --disable-mp3lib --enable-mad --enable-libavcodec --enable-live --with-livedir=/live555的目錄/ --2>1 | tee logfile。
其中,--host-cc=gcc是用來編譯一些需要在host上執(zhí)行的中間文件的,如codec-cfg。--cc=arm-linux-gcc 是用來指定交叉編譯工具。關(guān)于 --target=arm-armv4l-linux這個參數(shù)要注意的是它被分為三部分,第一部分的arm是指arch,這里設(shè)定為arm;第二部分的armv4l是指具體的版本;第三部分是系統(tǒng)平臺。--enable-static是設(shè)定靜態(tài)連接。--2>1 | tee logfile意思是將執(zhí)行的情況在輸出到屏幕的同時記錄到logfile文件中,在控制臺下編譯比較有用。
(4)輸入make命令開始編譯,編譯完成后在頂層目錄生成mplayer可執(zhí)行文件。
3.3軟件主流程圖
系統(tǒng)主流程圖如圖5所示。系統(tǒng)上電后,bootloader(U-boot)啟動,完成硬件設(shè)備的初始化, 并引導(dǎo)系統(tǒng)內(nèi)核啟動。系統(tǒng)啟動執(zhí)行初始化任務(wù)后,首先配置網(wǎng)絡(luò)連接,通過運(yùn)行DHCP Clieant向DHCP Server申請獲取本系統(tǒng)IP地址。然后系統(tǒng)自動訪問默認(rèn)的電臺服務(wù)器,該服務(wù)器上有最近更新的世界各地的網(wǎng)絡(luò)電臺的URL地址,系統(tǒng)下載該列表,并更新上次保存的列表。然后系統(tǒng)判斷有無按鍵按下,若有按鍵按下,系統(tǒng)根據(jù)按鍵選擇相應(yīng)網(wǎng)絡(luò)電臺,若在一定時間段內(nèi)沒有按鍵按下,系統(tǒng)自動連接電臺列表的第一個電臺地址,并開始播放該網(wǎng)絡(luò)電臺。同時,LCD將顯示電臺的有關(guān)信息和系統(tǒng)信息。在播放過程中,同樣可以根據(jù)按鍵來中斷、選擇網(wǎng)絡(luò)電臺。
圖5 系統(tǒng)主流程圖
4 結(jié)束語
本設(shè)計基于ARM的嵌入式技術(shù),通過軟硬件等三層結(jié)構(gòu),實現(xiàn)了一個嵌入式網(wǎng)絡(luò)收音機(jī)系統(tǒng)。該系統(tǒng)克服了PC機(jī)形式的網(wǎng)絡(luò)收音機(jī)的諸多缺點,是一個極具創(chuàng)新思維的設(shè)計。隨著網(wǎng)絡(luò)技術(shù)和嵌入式技術(shù)的高速發(fā)展,該設(shè)計具有很好的市場應(yīng)用前景和科研價值。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)波段開關(guān)相關(guān)文章:波段開關(guān)原理
評論