《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式網(wǎng)絡收音機的ARM實現(xiàn)
嵌入式網(wǎng)絡收音機的ARM實現(xiàn)
摘要: 嵌入式網(wǎng)絡收音機的ARM實現(xiàn),收音機作為接收廣播的工具,經(jīng)過漫長的發(fā)展過程,,由單波段發(fā)展到多波段,,由電子管,,晶體管發(fā)展到集成電路,由機械調諧發(fā)展到數(shù)字調諧功能等,,其技術和品質都有了長足的進步,。如今,在收音機這個家族中新的成員也
Abstract:
Key words :

         收音機作為接收廣播的工具,,經(jīng)過漫長的發(fā)展過程,,由單波段發(fā)展到多波段,由電子管,,晶體管發(fā)展到集成電路,,由機械調諧發(fā)展到數(shù)字調諧功能等,其技術和品質都有了長足的進步,。

  如今,,在收音機這個家族中新的成員也在不斷加入,如衛(wèi)星廣播接收機等。當社會進入網(wǎng)絡時代后,,更是出現(xiàn)了網(wǎng)絡收音機這種跨越全球的信息接收設備,。但是,目前這種網(wǎng)絡收音機大多是通過基于PC機上的軟件開發(fā)來實現(xiàn)的其功能的,,也就是說這種網(wǎng)絡收音機不能脫離電腦這種相對比較大的和比較昂貴的設備,。為了克服PC機形式的網(wǎng)絡收音機的缺點,本文研究了一種基于ARM嵌入式技術的網(wǎng)絡收音機的設計方案,。

       該方案以ARM處理器及其外圍模塊作為硬件平臺,以嵌入式Linux作為操作系統(tǒng),,以Mplayer作為網(wǎng)絡播放軟件,再配合設計的用戶應用程序,,共同實現(xiàn)了嵌入式網(wǎng)絡收音機的全部功能,。這種設計方法在網(wǎng)絡收音機的設計史上是一個創(chuàng)新。同時,,隨著網(wǎng)絡技術的高速發(fā)展,,該設計將具有極好的市場應用前景。

        本文作者創(chuàng)新點:

  1,、首次提出了用嵌入式技術設計網(wǎng)絡收音機的系統(tǒng)設計方案,,極具創(chuàng)新特點,。

  2、實現(xiàn)了Mplayer軟件在Linux系統(tǒng)平臺下向ARM9的移置,。

  1系統(tǒng)的結構及工作原理

  系統(tǒng)的層次結構如圖1所示,。系統(tǒng)以S3C2410及其外圍電路為硬件平臺,以嵌入式Linux和設備驅動程序作為系統(tǒng)的軟件平臺,,為上層Mplayer播放器和用戶應用程序提供用戶接口支持[1],。在這三層結構的支持下,共同來實現(xiàn)嵌入式網(wǎng)絡收音機的全部功能,。

   圖1 系統(tǒng)層次結構圖

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

   圖2 系統(tǒng)硬件結構框圖

  系統(tǒng)在Linux提供的TCP/IP協(xié)議的支持下,,通過應用程序和Mplayer控制,,經(jīng)過網(wǎng)卡連接到internet上指定的網(wǎng)絡電臺服務器,下載網(wǎng)絡電臺列表,。系統(tǒng)支持在按鍵的控制下的網(wǎng)絡電臺選擇和LCD上顯示電臺信息等功能,。Mplayer解析出選中的電臺的IP地址后,再連接到要收聽的電臺的網(wǎng)站,,系統(tǒng)便可以接收并解析出該網(wǎng)站發(fā)出的流媒體數(shù)據(jù),。系統(tǒng)將接收到的流媒體數(shù)據(jù)保存到SDRAM中。之后,,經(jīng)過Mplayer的解碼,,送到音頻D/A轉換芯片,即可收聽到該網(wǎng)絡電臺播放的聲音等信息,。

  2 系統(tǒng)的硬件設計

  2.1 S3C2410

  本系統(tǒng)的硬件核心平臺采用的是Samsung 公司的處理器S3C2410,。該處理器內部集成了ARM 公司ARM920T 處理器核的32 位微控制器,資源豐富,帶獨立的16KB 的指令Cache 和16KB 數(shù)據(jù)Cache、MMU虛擬內存管理單、LCD 控制器,、RAM控制器,、NAND 閃存控制器、3 路UART,、4路DMA,、4 路帶PWM的Timer、并行I/O 口,、8 路10 位ADC、Touch Screen 接口,、I2C 接口,、I2S 接口、2 個USB接口控制器,、2 路SPI,主頻最高可達203MHz[2],。其內部結構如圖3所示。

   圖3 S3C2410內部結構圖

     2.2 網(wǎng)絡接口

  系統(tǒng)的網(wǎng)卡芯片采用Cirrus Logic公司的一種局域網(wǎng)處理芯片CS8900,,該芯片內部集成了RAM,、10BASE-T收發(fā)濾波器,并且提供8位和16位兩種接口,。其片選信號連接到S3C2410的nGCS1,,因此網(wǎng)卡的地址空間映射到0X08000000~0X0FFFFFFF。在Linux內核中,,一般都含有CS8900的驅動程序,,使用時只需修改驅動與處理器的地址映射關系,并在配置內核的Device Driver選項中,,選中CS8900項,。

  2.3 SDRAM存儲器

  本設計的SDRAM采用的是HY57V281620芯片。該芯片是一個數(shù)據(jù)寬度為16BIT,,容量為16M字節(jié)的SDRAM,。HY57V281620與S3C2410的連接圖如圖4所示。

   圖4 HY57V281620電路圖

  HY57V281620的ncs引腳接到處理器的nGCS6,。由于在處理器的存儲空間中,,字節(jié)是存儲容量的唯一單位。而HY57V281620的數(shù)據(jù)寬度為16位,,它的每一個存儲單元都包含2個字節(jié),。因此HY57V281620的A0引腳接到了S3C2410處理器的地址線ADDR01上面。 HY57V281620的容量為16MB,,因此它需要ADDR00~ADDR23共24跟地址線來尋址,,所以,BA0~BA1引腳應該接到ADDR22~ADDR23地址線上。

   3 系統(tǒng)的的軟件設計

  3.1 嵌入式Linux的移植

  嵌入式Linux內核的版本很多,,一般情況下版本越高,,系統(tǒng)越穩(wěn)定,驅動更完善,,本系統(tǒng)選擇了2.6.18的Linux內核,。其實對于2.6以后版本的Linux內核,對S3C2410的支持都有了很好的支持,,所以移植過程都比較簡單[3],。Linux2.6.18移植到S3C2410的基本步驟如下:

  (1)下載Linux2.6.18內核,并解壓到相應目錄,。

  (2)修改內核頂層目錄下的Makefile文件,,指明交叉編譯器。進入Linux-2.6.18內核目錄,,輸入命令vi Makefile,,找到ARCH和CROSS_COMPILE兩項,將其修改為ARCH = arm,,CROSS_COMPILE = arm-linux-,。

  (3)設置PATH環(huán)境變量,使其可以找到交叉編譯工具,。輸入su root,,進入root,在輸入vi/etc/bashrc,,在結尾處加入以下行:export PATH=/usr/local/arm/3.4.4/bin:$PATH,,然后重啟終端或重新登陸即可。

  (4) 設置Flash分區(qū),。首先要在arch/arm/mach-s3c2410/devs.c文件中添加分區(qū)信息,,其次在arch/arm/mach-s3c2410/mach-smdk2410.c文件的smdk2410_devices[]的成員中添加&s3c_device_nand。這樣Linux內核啟動時,,就會對Flash分區(qū)的設置初始化,。

  (5)禁止Flash ECC校驗。修改drivers/mtd/nand/s3c2410.c 文件,,找到s3c2410_nand_init_chip()函數(shù),,在該函數(shù)體最后加上一條語句:chip->eccmode = NAND_ECC_NONE。

  (6)配置內核,。通過make menuconfig命令配置內核,。

  (7)編譯內核,make zImage命令,,得到Linux內核的映像文件zImage,。

  (8)制作根文件系統(tǒng),。

  3.2 Mplayer移植

  Mplayer是Linux下的一個多媒體網(wǎng)絡播放器。它的主要功能是對接收到的各種格式的流媒體數(shù)據(jù)進行解碼,,同時也完成對接收的網(wǎng)絡電臺的IP地址進行解析的任務,。Mplayer支持mp3、ogg 和wma等多種格式的流媒體數(shù)據(jù)進行解碼,,是一個功能十分強大的開源應用軟件,。Mplayer的移植步驟如下:

  (1)下載源代碼MPlayer-current.tar.bz2,并解壓,。

  (2)為了讓mplayer支持在線播放,,從而能夠播放網(wǎng)絡電臺,還必須下載安裝網(wǎng)絡協(xié)議包(主要指RTSP,、MMS等協(xié)議),。可從www.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 是用來指定交叉編譯工具,。關于 --target=arm-armv4l-linux這個參數(shù)要注意的是它被分為三部分,第一部分的arm是指arch,,這里設定為arm;第二部分的armv4l是指具體的版本;第三部分是系統(tǒng)平臺,。--enable-static是設定靜態(tài)連接。--2>&1 | tee logfile意思是將執(zhí)行的情況在輸出到屏幕的同時記錄到logfile文件中,,在控制臺下編譯比較有用,。

  (4)輸入make命令開始編譯,編譯完成后在頂層目錄生成mplayer可執(zhí)行文件,。

  3.3軟件主流程圖

  系統(tǒng)主流程圖如圖5所示,。系統(tǒng)上電后,bootloader(U-boot)啟動,,完成硬件設備的初始化,, 并引導系統(tǒng)內核啟動。系統(tǒng)啟動執(zhí)行初始化任務后,,首先配置網(wǎng)絡連接,,通過運行DHCP Clieant向DHCP Server申請獲取本系統(tǒng)IP地址。然后系統(tǒng)自動訪問默認的電臺服務器,,該服務器上有最近更新的世界各地的網(wǎng)絡電臺的URL地址,,系統(tǒng)下載該列表,并更新上次保存的列表。然后系統(tǒng)判斷有無按鍵按下,,若有按鍵按下,,系統(tǒng)根據(jù)按鍵選擇相應網(wǎng)絡電臺,若在一定時間段內沒有按鍵按下,,系統(tǒng)自動連接電臺列表的第一個電臺地址,,并開始播放該網(wǎng)絡電臺。同時,,LCD將顯示電臺的有關信息和系統(tǒng)信息,。在播放過程中,同樣可以根據(jù)按鍵來中斷,、選擇網(wǎng)絡電臺,。

   圖5 系統(tǒng)主流程圖

  4 結束語

  本設計基于ARM的嵌入式技術,通過軟硬件等三層結構,,實現(xiàn)了一個嵌入式網(wǎng)絡收音機系統(tǒng),。該系統(tǒng)克服了PC機形式的網(wǎng)絡收音機的諸多缺點,是一個極具創(chuàng)新思維的設計,。隨著網(wǎng)絡技術和嵌入式技術的高速發(fā)展,,該設計具有很好的市場應用前景和科研價值。

此內容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。