王 坤,皮亦鳴
(電子科技大學(xué) 電子工程學(xué)院,四川 成都 610054)
基于ARM Cortex-M3的嵌入式網(wǎng)絡(luò)播放系統(tǒng)
王 坤,皮亦鳴
(電子科技大學(xué) 電子工程學(xué)院,四川 成都 610054)
針對(duì)一般嵌入式播放系統(tǒng)無(wú)網(wǎng)絡(luò)功能,提出一種網(wǎng)絡(luò)播放系統(tǒng)硬件平臺(tái)設(shè)計(jì)方案。該方案采用ARM Cortex-M3構(gòu)架的LM3S1138作為主控制器,以USB控制器CH375﹑網(wǎng)絡(luò)器件ENC28J60和音頻解碼器VS1003作為外圍器件,采用μC/OS作為操作系統(tǒng)。并給出系統(tǒng)軟件的設(shè)計(jì)方法,包括設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)。通過(guò)測(cè)試,該系統(tǒng)能流暢下載和播放網(wǎng)絡(luò)歌曲,并能廣泛應(yīng)用于家電產(chǎn)品、車載電子產(chǎn)品和公共廣播場(chǎng)所。
嵌入式系統(tǒng);ARM Cortex-M3;以太網(wǎng)接口;API;應(yīng)用程序
隨著網(wǎng)絡(luò)應(yīng)用的普及,為普通嵌入式系統(tǒng)增加網(wǎng)絡(luò)功能,能更好滿足消費(fèi)者對(duì)網(wǎng)絡(luò)資源的需求。這里采用基于ARM Cortex-M3的微控制器LM3S1138實(shí)現(xiàn)一種具備網(wǎng)絡(luò)功能的播放終端系統(tǒng),該系統(tǒng)不僅具有良好的播放效果,還可從網(wǎng)絡(luò)音樂服務(wù)器上點(diǎn)播音樂并實(shí)時(shí)播放。
該網(wǎng)絡(luò)播放系統(tǒng)由服務(wù)器﹑用戶終端和音響設(shè)備組成。其中,服務(wù)器通過(guò)以太網(wǎng)提供音樂資源,用戶終端通過(guò)網(wǎng)絡(luò)下載音頻數(shù)據(jù)再實(shí)現(xiàn)音頻解碼,音響設(shè)備實(shí)現(xiàn)音樂播放。圖1給出該系統(tǒng)設(shè)計(jì)框圖。
圖1 網(wǎng)絡(luò)播放系統(tǒng)設(shè)計(jì)框圖
該系統(tǒng)設(shè)計(jì)采用基于ARM Cortex-M3的控制器LM3S1138作為主控制器。該控制器改進(jìn)了代碼密度,減少中斷延時(shí),實(shí)現(xiàn)Thumb-2指令集,并具有更低功耗,適用于嵌入式微處理器[1];網(wǎng)絡(luò)模塊采用以太網(wǎng)控制器ENC60J28;音頻編解碼器采用VS1003,該器件擁有自主產(chǎn)權(quán)的DSP處理器核,具有高性能﹑低功耗等特性;并采用USB總線接口器件CH375擴(kuò)展存儲(chǔ)模塊,支持海量存儲(chǔ)。
將嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II移植到主處理器上,實(shí)現(xiàn)多任務(wù)的調(diào)度管理[2]。系統(tǒng)工作時(shí),通過(guò)操作播放器上的配置按鈕,設(shè)置服務(wù)器和用戶終端的相關(guān)網(wǎng)絡(luò)配置,點(diǎn)擊播放器中的連接按鈕,發(fā)送連接服務(wù)器請(qǐng)求,服務(wù)器收到用戶終端的連接請(qǐng)求,驗(yàn)證終端帳號(hào)正確后開始網(wǎng)絡(luò)連接,向用戶傳送點(diǎn)播的資源列表,用戶終端在播放器界面顯示列表,此時(shí),用戶可以選擇點(diǎn)播的歌曲,然后將音樂文件下載到存儲(chǔ)設(shè)備中,下載完畢后,服務(wù)器關(guān)閉網(wǎng)絡(luò)連接,播放器就可播放已下載歌曲。
ENC28J60是獨(dú)立的以太網(wǎng)控制器,采用業(yè)界標(biāo)準(zhǔn)的SPI串行接口,具有10 Mb/s SPI接口,符合IEEE802.3協(xié)議,內(nèi)置10 Mb/s以太網(wǎng)物理層器件(PHY)及介質(zhì)訪問控制器(MAC)。另外,它還具有可編程8 KB雙端口SRAM緩沖器,此緩沖存儲(chǔ)器具有靈活可靠的數(shù)據(jù)管理機(jī)制,以高效方式進(jìn)行信息包的存儲(chǔ)、檢索和修改,以減輕主控器件的內(nèi)存負(fù)荷。
圖2為網(wǎng)絡(luò)接口硬件連接示意圖。ENC28J60通過(guò)SPI總線實(shí)現(xiàn)與LM3S1138的數(shù)據(jù)傳輸,CS為片選信號(hào),SCLK為時(shí)鐘信號(hào),MOSI/MISO為數(shù)據(jù)傳輸串口。此外,ENC28J60還與網(wǎng)絡(luò)變壓器HR901170A相連,引出RJ45接口。
圖2 網(wǎng)絡(luò)接口硬件連接
VS1003音頻編解碼器為VS10XX系列第3代產(chǎn)品,包括MP3/WMA/MIDI解碼和ADPCM編碼2個(gè)單器件。其內(nèi)置有高性能﹑低功耗的DSP處理核(VSDSP),工作內(nèi)存,可供用戶程序使用的5.5 KB RAM,串行SPI總線接口,高質(zhì)量的采樣頻率可調(diào)的過(guò)采樣D/A轉(zhuǎn)換器以及16位的過(guò)采樣A/D轉(zhuǎn)換器。圖3為音頻編解碼器模塊硬件連接示意圖,VS1003采用SPI總線與LM3S1138實(shí)現(xiàn)通信。其中,SCLK為輸入時(shí)鐘,CS為片選信號(hào),MOSI/MISO為數(shù)據(jù)串口,Demand為命令有效信號(hào),VS1003外接音頻輸出設(shè)備[4]。
圖3 音頻編解碼模塊硬件連接
CH375是一款支持USB-HOST主機(jī)方式和USB-DEVICE/SLAVE從設(shè)備方式的器件,主機(jī)端點(diǎn)輸入和輸出緩沖區(qū)各64字節(jié),支持常用的12 Mb/s全速USB設(shè)備,支持USB設(shè)備的控制傳輸﹑批量傳輸﹑中斷傳輸。內(nèi)置固件處理海量存儲(chǔ)設(shè)備的專用通訊協(xié)議,支持Bulk-Only傳輸協(xié)議和SCSI,UFI,RBC或等效命令集的USB存儲(chǔ)設(shè)備。
圖4為USB控制接口模塊硬件連接示意圖,CH375通過(guò)UART串口與LM3S1138傳輸數(shù)據(jù),INT為中斷信號(hào),TXD/RXD為數(shù)據(jù)傳輸串口,CH375連接USB存儲(chǔ)設(shè)備。
圖4 USB控制接口模塊硬件連接
μC/OS-II是專門為嵌入式應(yīng)用設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng)內(nèi)核,其具有以下優(yōu)點(diǎn):源代碼公開,代碼結(jié)構(gòu)清晰,注釋詳盡,組織有條理,具有良好的可擴(kuò)展性和可移植性,最多可以管理60個(gè)任務(wù)。該系統(tǒng)移植的μC/OS-II由用戶層﹑中間件層﹑μC/OS-II源碼層﹑μC/OS-II移植層和驅(qū)動(dòng)庫(kù)組成。用戶層存放用戶代碼及設(shè)置,其中Main.c是用戶編寫任務(wù)處,Main.h定義堆棧大小及優(yōu)先級(jí);中間件層Middleware存放UART﹑SPI等串口通信中間件和 TCP/IP協(xié)議棧 LwIP;μC/OS-II源碼層Source存放 μC/OS-II的源代碼;μC/OS-II移植層 Port存放μC/OS-II基于 LM3S的移植代碼,包括 OS_CPU_C.C,OS_CPU_A.A,OS_CPU.C等3個(gè)必要文件;驅(qū)動(dòng)庫(kù)層是直接面向硬件設(shè)備層,它是硬件設(shè)備和應(yīng)用程序之間的樞紐,直接與系統(tǒng)底層的硬件設(shè)備打交道,按照硬件設(shè)備的具體工作方式讀寫設(shè)備寄存器,將寄存器的數(shù)據(jù)與應(yīng)用軟件交互,ENC28J60﹑VS1003和CH375的驅(qū)動(dòng)函數(shù)都在該層。
本系統(tǒng)采用ENC28J60以太網(wǎng)控制器,需編寫網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)低層網(wǎng)絡(luò)接口及硬件函數(shù)驅(qū)動(dòng)。該驅(qū)動(dòng)程序設(shè)計(jì)主要包含網(wǎng)卡的初始化和數(shù)據(jù)的發(fā)送接收[5]。
網(wǎng)卡初始化的驅(qū)動(dòng)程序包括定義發(fā)送緩沖區(qū)大小﹑發(fā)送緩沖區(qū)數(shù)﹑ENC28J60的片選信號(hào)﹑ENC28J60的復(fù)位引腳以及網(wǎng)卡自檢。具體程序代碼如下[6]:
#define MAC_TX_BUFFER_SIZE (600) //定義發(fā)送緩沖區(qū)大小
#define MAC_TX_BUFFER_COUNT(1) //定義發(fā)送緩沖區(qū)數(shù)
#define LM1138_CS_ENC28J60 GPIO_PIN_3//ENC28J60的片選信號(hào)PA.3
#defineLM1138_RESET_ENC28J60 GPIO_PIN_1 //ENC28J60的復(fù)位引腳
Void ENC28J60_PowerOn_Init(void) //ENC28J60 上電初始化函數(shù)
網(wǎng)卡數(shù)據(jù)傳輸?shù)尿?qū)動(dòng)程序包括申請(qǐng)IP地址,建立與服務(wù)器的連接,以及數(shù)據(jù)的接收和發(fā)送等,圖5為其程序流程。
圖5 網(wǎng)卡數(shù)據(jù)傳輸流程
文件系統(tǒng)是一種以結(jié)構(gòu)化格式存儲(chǔ)和信息檢索的實(shí)現(xiàn)方法,可使用戶方便快捷的管理存儲(chǔ)數(shù)據(jù)。文件系統(tǒng)一般包括 FAT32/16,NTFS,ext2/3,NFS 等,本設(shè)計(jì)采用 FAT16,可支持2 GB的最大分區(qū),用于管理U盤中的音頻文件,該文件系統(tǒng)的實(shí)現(xiàn)主要針對(duì)USB接口器件CH375進(jìn)行驅(qū)動(dòng)開發(fā)。
在CH375驅(qū)動(dòng)設(shè)計(jì)中,先實(shí)現(xiàn)FAT32/16文件系統(tǒng)層,再實(shí)現(xiàn)文件級(jí)API應(yīng)用層。文件系統(tǒng)層采用CH375開發(fā)商提供的U盤文件級(jí)子程序庫(kù)來(lái)實(shí)現(xiàn),CH375的U盤文件級(jí)子程序庫(kù)具有以下特性:支持常用的FAT16和FAT32文件系統(tǒng),磁盤容量可達(dá)100 GB以上,支持多級(jí)子目錄,支持8.3格式的大寫字母和中文文件名,支持小寫字母或長(zhǎng)文件名,支持文件打開、刪除、讀寫以及搜索等。文件系統(tǒng)移植好后,再進(jìn)行API應(yīng)用層驅(qū)動(dòng)設(shè)計(jì)。應(yīng)用層驅(qū)動(dòng)包括CH375引腳配置、文件讀寫緩沖區(qū)配置、CH375讀寫程序的設(shè)計(jì)。在讀寫程序的設(shè)計(jì)中,要注意對(duì)CH375的延時(shí)操作,滿足CH375的時(shí)序要求。
音頻驅(qū)動(dòng)的設(shè)計(jì)主要是針對(duì)VS1003的初始化設(shè)置和實(shí)現(xiàn)音頻數(shù)據(jù)流的傳輸,并對(duì)應(yīng)用層提供API接口,這里完成了音頻播放功能程序的設(shè)計(jì)。
在該程序設(shè)計(jì)中,首先對(duì)LM1138和VS1003控制接口的(MISO﹑MOSI﹑SCK﹑CS﹑Demand) 引腳進(jìn)行相應(yīng)配置,VS1003初始化配置完成后,開始等待系統(tǒng)的播放標(biāo)志置位,播放標(biāo)志為“0”時(shí),重新初始化 VS1003,播放標(biāo)志為“1”時(shí),接收到系統(tǒng)的播放消息,使能SPI接口,選擇將要播放的數(shù)據(jù)包,把音頻數(shù)據(jù)寫入SPI的緩沖存儲(chǔ)區(qū),然后再發(fā)送給VS1003的數(shù)據(jù)寄存器,當(dāng)音頻數(shù)據(jù)發(fā)送完成后,開始由VS1003處理這些音頻數(shù)據(jù),實(shí)現(xiàn)模擬音頻數(shù)據(jù)的輸出,該函數(shù)能夠流暢地完成音頻播放功能[4]。
系統(tǒng)的應(yīng)用程序主流程如圖6所示。
圖6 應(yīng)用程序主流程
系統(tǒng)主任務(wù)啟動(dòng)后,先初始化人機(jī)界面庫(kù)函數(shù),它提供了操作界面的按鍵中斷處理函數(shù)以及LCD的顯示函數(shù);再讀取初始系統(tǒng)配置數(shù)據(jù),如本地IP、服務(wù)器IP、用戶賬號(hào)、密碼等,完成網(wǎng)絡(luò)、音頻編解碼以及存儲(chǔ)等模塊的初始化;然后,主任務(wù)再創(chuàng)建多個(gè)子任務(wù),包括ENC28J60task,CH375task,VS1003task,humaninterfacetask,接著進(jìn)入消息循環(huán),消息循環(huán)是整個(gè)應(yīng)用程序的核心部分,通過(guò)消息循環(huán),系統(tǒng)不斷獲取用戶操作消息,并做出相應(yīng)處理,實(shí)現(xiàn)系統(tǒng)功能;當(dāng)收到一個(gè)退出消息時(shí),系統(tǒng)強(qiáng)制主任務(wù)跳出消息循環(huán),關(guān)閉播放器操作界面,系統(tǒng)退出應(yīng)用程序[2]。
系統(tǒng)調(diào)試成功后,可流暢地從服務(wù)器中下載音頻數(shù)據(jù),保存到外接USB設(shè)備中,然后再通過(guò)音頻解碼從音響播放出來(lái)。圖7為該系統(tǒng)主界面,系統(tǒng)音質(zhì)良好,達(dá)到設(shè)計(jì)要求。
圖7 播放主界面
本系統(tǒng)設(shè)計(jì)采用基于ARM Cortex-M3的嵌入式器件LM3S1138作為主控制器件,采用ENC28J60作為網(wǎng)絡(luò)接口器件,在μC/OS-II平臺(tái)上構(gòu)建一個(gè)實(shí)時(shí)的網(wǎng)絡(luò)播放系統(tǒng)[7-8]。該系統(tǒng)能夠?qū)崿F(xiàn)網(wǎng)絡(luò)點(diǎn)播功能。如將ENC28J60更成為具有USB接口的無(wú)線網(wǎng)卡,則該系統(tǒng)還具有無(wú)線網(wǎng)絡(luò)功能。而隨著以太網(wǎng)技術(shù)的深入發(fā)展,將嵌入式系統(tǒng)與網(wǎng)絡(luò)結(jié)合,在嵌入式實(shí)時(shí)操作系統(tǒng)中引入TCP/IP協(xié)議棧,以支持嵌入式設(shè)備接入網(wǎng)絡(luò),成為嵌入式領(lǐng)域重要的研究方向,且對(duì)于一些基于網(wǎng)絡(luò)接口的嵌入式系統(tǒng)都將具有廣泛的應(yīng)用前景。
[1]ARM.Cortex-M3 technical reference manual[EB/OL].2008.http://infocenter.arm.com/help/topic/com.arm.doc.ddi0337e/DDI0337E_cortex_m3_r1p1_trm.pdf.
[2]邵貝貝.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ[M].北京:北京航空航天大學(xué)出版社,2003.
[3]Luminary Micro.Stellaris peripheral driver library user’s guide[EB/OL].2008.http://www.cs.put.poznan.pl/wswitala/download/pdf/PDL-LM3S-uvision-UG-1716.pdf.
[4]孫天亮,陳偉元,王豪才.基于ARM核的音頻編解碼器單器件系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2001(10):68-71.
[5]劉 淼.嵌入式系統(tǒng)接口設(shè)計(jì)與驅(qū)動(dòng)程序開發(fā)[M].北京:北京航空航天大學(xué)出版社,2006.
[6]譚浩強(qiáng).C程序設(shè)計(jì)[M].2版.北京:清華大學(xué)出版社,2002
[7]伍興艷,皮亦鳴.一種嵌入式MP3音頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2008,16(10):32-33.
[8]朱維杰.基于BU9435的嵌入式MP3播放模塊設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009,17(2):8-10.
Embedded network display system based on ARM Cortex-M3
WANG Kun,PI Yi-ming
(Department of Electronic Engineering,UEST of China,Chengdu610054,China)
Aiming at the common embedded multimedia system without network function,an embedded hardware platform program for the network display system is presented.This system design uses LM3S1138 with ARM Cortex-M3 as the main controller,uses USB controller CH375,Ethernet controller ENC28J60 and audio-decoder VS1003 as the periphery chips,and uses μC/OS as operation system.The method of the system software design is given,including the device diver design and application program design.In the test,this system design downloads and plays the music on the net fluently,it is widely used in house electrical appliances,car electronics products and public broadcasting.
embedded system;ARM Cortex-M3;Ethernet interface;API;application program
TP393
A
1674-6236(2010)01-0071-03
2009-07-21 稿件編號(hào):200907070
廣東省教育部產(chǎn)學(xué)研結(jié)合項(xiàng)目(2008B090500230)
王 坤(1984—),男,湖北黃岡人,碩士研究生。研究方向:雷達(dá)信號(hào)處理。