收音機作為接收廣播的工具,經(jīng)過(guò)漫長(cháng)的發(fā)展過(guò)程,由單波段發(fā)展到多波段,由電子管,晶體管發(fā)展到集成電路,由機械調諧發(fā)展到數字調諧功能等,其技術(shù)和品質(zhì)都有了長(cháng)足的進(jìn)步。如今,在收音機這個(gè)家族中新的成員也在不斷加入,如衛星廣播接收機等。當社會(huì )進(jìn)入網(wǎng)絡(luò )時(shí)代后,更是出現了網(wǎng)絡(luò )收音機這種跨越全球的信息接收設備。但是,目前這種網(wǎng)絡(luò )收音機大多是通過(guò)基于PC機上的軟件開(kāi)發(fā)來(lái)實(shí)現的其功能的,也就是說(shuō)這種網(wǎng)絡(luò )收音機不能脫離電腦這種相對比較大的和比較昂貴的設備。
為了克服PC機形式的網(wǎng)絡(luò )收音機的缺點(diǎn),本文研究了一種基于A(yíng)RM的嵌入式技術(shù)的網(wǎng)絡(luò )收音機的設計方案。該方案以ARM處理器及其外圍模塊作為硬件平臺,以嵌入式Linux作為操作系統,以Mplayer作為網(wǎng)絡(luò )播放軟件,再配合設計的用戶(hù)應用程序,共同實(shí)現了嵌入式網(wǎng)絡(luò )收音機的全部功能。這種設計方法在網(wǎng)絡(luò )收音機的設計史上是一個(gè)創(chuàng )新。同時(shí),隨著(zhù)網(wǎng)絡(luò )技術(shù)的高速發(fā)展,該設計將具有極好的市場(chǎng)應用前景。
1系統的結構及工作原理
系統的層次結構如圖1所示。系統以S3C2410及其外圍電路為硬件平臺,以嵌入式Linux和設備驅動(dòng)程序作為系統的軟件平臺,為上
層Mplayer播放器和用戶(hù)應用程序提供用戶(hù)接口支持[1]。在這三層結構的支持下,共同來(lái)實(shí)現嵌入式網(wǎng)絡(luò )收音機的全部功能。

圖1 系統層次結構圖
系統的硬件結構框圖如圖2所示。本系統選用的ARM處理器是Sumsing(三星)公司的一款ARM9系列的芯片,型號為S3C2410。網(wǎng)卡芯片采用的是Cirrus Logic公司的一顆網(wǎng)絡(luò )處理芯片CS8900。FLASH芯片采用的是 K9F5608,用來(lái)存儲啟動(dòng)引導程序U-boot、內核及文件系統,SDRAM芯片采用的是HY57V281620,作為該系統的內存。16*4的字符型液晶顯示模塊用來(lái)顯示網(wǎng)絡(luò )電臺、音頻文件名等相關(guān)信息。音頻D/A轉換芯片選用的是飛利浦公司的UDA1341芯片,該芯片具有IIS接口,可以方便的與S3C2410連接。

圖2 系統硬件結構框圖
系統在Linux提供的TCP/IP協(xié)議的支持下,通過(guò)應用程序和Mplayer控制,經(jīng)過(guò)網(wǎng)卡連接到internet上指定的網(wǎng)絡(luò )電臺服務(wù)器,下載網(wǎng)絡(luò )電臺列表。系統支持在按鍵的控制下的網(wǎng)絡(luò )電臺選擇和LCD上顯示電臺信息等功能。Mplayer解析出選中的電臺的IP地址后,再連接到要收聽(tīng)的電臺的網(wǎng)站,系統便可以接收并解析出該網(wǎng)站發(fā)出的流媒體數據。系統將接收到的流媒體數據保存到SDRAM中。之后,經(jīng)過(guò)Mplayer的解碼,送到音頻D/A轉換芯片,即可收聽(tīng)到該網(wǎng)絡(luò )電臺播放的聲音等信息。
2 系統的硬件設計
2.1 S3C2410
本系統的硬件核心平臺采用的是Samsung 公司的處理器S3C2410。該處理器內部集成了ARM 公司ARM920T 處理器核的32 位微控制器,資源豐富,帶獨立的16KB 的指令Cache 和16KB 數據Cache、MMU虛擬內存管理單、LCD 控制器、RAM控制器、NAND 閃存控制器、3 路UART、4路DMA、4 路帶PWM的Timer、并行I/O 口、8 路10 位ADC、Touch Screen 接口、I2C 接口、I2S 接口、2 個(gè)USB接口控制器、2 路SPI,主頻最高可達203MHz[2]。其內部結構如圖3所示。

圖3 S3C2410內部結構圖
2.2 網(wǎng)絡(luò )接口
系統的網(wǎng)卡芯片采用Cirrus Logic公司的一種局域網(wǎng)處理芯片CS8900,該芯片內部集成了RAM、10BASE-T收發(fā)濾波器,并且提供8位和16位兩種接口。其片選信號連接到S3C2410的nGCS1,因此網(wǎng)卡的地址空間映射到0X08000000~0X0FFFFFFF。在Linux內核中,一般都含有CS8900的驅動(dòng)程序,使用時(shí)只需修改驅動(dòng)與處理器的地址映射關(guān)系,并在配置內核的Device Driver選項中,選中CS8900項。
2.3 SDRAM存儲器
本設計的SDRAM采用的是HY57V281620芯片。該芯片是一個(gè)數據寬度為16BIT,容量為16M字節的SDRAM。HY57V281620與S3C2410的連接圖如圖4所示。

圖4 HY57V281620電路圖
HY57V281620的ncs引腳接到處理器的nGCS6。由于在處理器的存儲空間中,字節是存儲容量的唯一單位。而HY57V281620 的數據寬度為16位,它的每一個(gè)存儲單元都包含2個(gè)字節。因此HY57V281620的A0引腳接到了S3C2410處理器的地址線(xiàn)ADDR01上面。 HY57V281620的容量為16MB,因此它需要ADDR00~ADDR23共24跟地址線(xiàn)來(lái)尋址,所以,BA0~BA1引腳應該接到 ADDR22~ADDR23地址線(xiàn)上。
3 系統的的軟件設計
3.1 嵌入式Linux的移植
嵌入式Linux內核的版本很多,一般情況下版本越高,系統越穩定,驅動(dòng)更完善,本系統選擇了2.6.18的Linux內核。其實(shí)對于2.6以后版本的Linux內核,對S3C2410的支持都有了很好的支持,所以移植過(guò)程都比較簡(jiǎn)單[3]。Linux2.6.18移植到S3C2410的基本步驟如下:
。1)下載Linux2.6.18內核,并解壓到相應目錄。
。2)修改內核頂層目錄下的Makefile文件,指明交叉編譯器。進(jìn)入Linux-2.6.18內核目錄,輸入命令vi Makefile,找到ARCH和CROSS_COMPILE兩項,將其修改為ARCH = arm,CROSS_COMPILE = arm-linux-。
。3)設置PATH環(huán)境變量,使其可以找到交叉編譯工具。輸入su root,進(jìn)入root,在輸入vi/etc/bashrc,在結尾處加入以下行:export PATH="/usr/local/arm/3".4.4/b
in PATH,然后重啟終端或重新登陸即可。
。4)設置Flash分區。首先要在arch/arm/mach-s3c2410/devs.c文件中添加分區信息,其次在arch/arm/mach- s3c2410/mach-smdk2410.c文件的smdk2410_devices[]的成員中添加&s3c_device_nand。這樣Linux內核啟動(dòng)時(shí),就會(huì )對Flash分區的設置初始化。
。5)禁止Flash ECC校驗。修改drivers/mtd/nand/s3c2410.c 文件,找到s3c2410_nand_init_chip()函數,在該函數體最后加上一條語(yǔ)句:chip->eccmode = NAND_ECC_NONE。
。6)配置內核。通過(guò)make menuconfig命令配置內核。
。7)編譯內核,make zImage命令,得到Linux內核的映像文件zImage。
。8)制作根文件系統。
3.2 Mplayer移植
Mplayer是Linux下的一個(gè)多媒體網(wǎng)絡(luò )播放器。它的主要功能是對接收到的各種格式的流媒體數據進(jìn)行解碼,同時(shí)也完成對接收的網(wǎng)絡(luò )電臺的 IP地址進(jìn)行解析的任務(wù)。Mplayer支持mp3、ogg 和wma等多種格式的流媒體數據進(jìn)行解碼,是一個(gè)功能十分強大的開(kāi)源應用軟件。Mplayer的移植步驟如下:
。1)下載源代碼MPlayer-current.tar.bz2,并解壓。
。2)為了讓mplayer支持在線(xiàn)播放,從而能夠播放網(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是用來(lái)編譯一些需要在host上執行的中間文件的,如codec-cfg。--cc=arm-linux- gcc 是用來(lái)指定交叉編譯工具。關(guān)于 --target=arm-armv4l-linux這個(gè)參數要注意的是它被分為三部分,第一部分的arm是指arch,這里設定為arm;第二部分的 armv4l是指具體的版本;第三部分是系統平臺。--enable-static是設定靜態(tài)連接。--2>&1 | tee logfile意思是將執行的情況在輸出到屏幕的同時(shí)記錄到logfile文件中,在控制臺下編譯比較有用。
。4)輸入make命令開(kāi)始編譯,編譯完成后在頂層目錄生成mplayer可執行文件。
3.3軟件主流程圖
系統主流程圖如圖5所示。系統上電后,bootloader(U-boot)啟動(dòng),完成硬件設備的初始化,并引導系統內核啟動(dòng)。系統啟動(dòng)執行初始化任務(wù)后,首先配置網(wǎng)絡(luò )連接,通過(guò)運行DHCP Clieant向DHCP Server申請獲取本系統IP地址。然后系統自動(dòng)訪(fǎng)問(wèn)默認的電臺服務(wù)器,該服務(wù)器上有最近更新的世界各地的網(wǎng)絡(luò )電臺的URL地址,系統下載該列表,并更新上次保存的列表。然后系統判斷有無(wú)按鍵按下,若有按鍵按下,系統根據按鍵選擇相應網(wǎng)絡(luò )電臺,若在一定時(shí)間段內沒(méi)有按鍵按下,系統自動(dòng)連接電臺列表的第一個(gè)電臺地址,并開(kāi)始播放該網(wǎng)絡(luò )電臺。同時(shí),LCD將顯示電臺的有關(guān)信息和系統信息。在播放過(guò)程中,同樣可以根據按鍵來(lái)中斷、選擇網(wǎng)絡(luò )電臺。

圖5 系統主流程圖
4 結束語(yǔ)
本設計基于A(yíng)RM的嵌入式技術(shù),通過(guò)軟硬件等三層結構,實(shí)現了一個(gè)嵌入式網(wǎng)絡(luò )收音機系統。該系統克服了PC機形式的網(wǎng)絡(luò )收音機的諸多缺點(diǎn),是一個(gè)極具創(chuàng )新思維的設計。隨著(zhù)網(wǎng)絡(luò )技術(shù)和嵌入式技術(shù)的高速發(fā)展,該設計具有很好的市場(chǎng)應用前景和科研價(jià)值。
本文作者創(chuàng )新點(diǎn):
1、首次提出了用嵌入式技術(shù)設計網(wǎng)絡(luò )收音機的系統設計方案,極具創(chuàng )新特點(diǎn)。
2、實(shí)現了Mplayer軟件在Linux系統平臺下向ARM9的移置。 |