王 坤,皮亦鳴
(電子科技大學 電子工程學院,四川 成都 610054)
基于ARM Cortex-M3的嵌入式網絡播放系統
王 坤,皮亦鳴
(電子科技大學 電子工程學院,四川 成都 610054)
針對一般嵌入式播放系統無網絡功能,提出一種網絡播放系統硬件平臺設計方案。該方案采用ARM Cortex-M3構架的LM3S1138作為主控制器,以USB控制器CH375﹑網絡器件ENC28J60和音頻解碼器VS1003作為外圍器件,采用μC/OS作為操作系統。并給出系統軟件的設計方法,包括設備驅動程序設計和應用程序設計。通過測試,該系統能流暢下載和播放網絡歌曲,并能廣泛應用于家電產品、車載電子產品和公共廣播場所。
嵌入式系統;ARM Cortex-M3;以太網接口;API;應用程序
隨著網絡應用的普及,為普通嵌入式系統增加網絡功能,能更好滿足消費者對網絡資源的需求。這里采用基于ARM Cortex-M3的微控制器LM3S1138實現一種具備網絡功能的播放終端系統,該系統不僅具有良好的播放效果,還可從網絡音樂服務器上點播音樂并實時播放。
該網絡播放系統由服務器﹑用戶終端和音響設備組成。其中,服務器通過以太網提供音樂資源,用戶終端通過網絡下載音頻數據再實現音頻解碼,音響設備實現音樂播放。圖1給出該系統設計框圖。

圖1 網絡播放系統設計框圖
該系統設計采用基于ARM Cortex-M3的控制器LM3S1138作為主控制器。該控制器改進了代碼密度,減少中斷延時,實現Thumb-2指令集,并具有更低功耗,適用于嵌入式微處理器[1];網絡模塊采用以太網控制器ENC60J28;音頻編解碼器采用VS1003,該器件擁有自主產權的DSP處理器核,具有高性能﹑低功耗等特性;并采用USB總線接口器件CH375擴展存儲模塊,支持海量存儲。
將嵌入式實時操作系統μC/OS-II移植到主處理器上,實現多任務的調度管理[2]。系統工作時,通過操作播放器上的配置按鈕,設置服務器和用戶終端的相關網絡配置,點擊播放器中的連接按鈕,發送連接服務器請求,服務器收到用戶終端的連接請求,驗證終端帳號正確后開始網絡連接,向用戶傳送點播的資源列表,用戶終端在播放器界面顯示列表,此時,用戶可以選擇點播的歌曲,然后將音樂文件下載到存儲設備中,下載完畢后,服務器關閉網絡連接,播放器就可播放已下載歌曲。
ENC28J60是獨立的以太網控制器,采用業界標準的SPI串行接口,具有10 Mb/s SPI接口,符合IEEE802.3協議,內置10 Mb/s以太網物理層器件(PHY)及介質訪問控制器(MAC)。另外,它還具有可編程8 KB雙端口SRAM緩沖器,此緩沖存儲器具有靈活可靠的數據管理機制,以高效方式進行信息包的存儲、檢索和修改,以減輕主控器件的內存負荷。
圖2為網絡接口硬件連接示意圖。ENC28J60通過SPI總線實現與LM3S1138的數據傳輸,CS為片選信號,SCLK為時鐘信號,MOSI/MISO為數據傳輸串口。此外,ENC28J60還與網絡變壓器HR901170A相連,引出RJ45接口。

圖2 網絡接口硬件連接
VS1003音頻編解碼器為VS10XX系列第3代產品,包括MP3/WMA/MIDI解碼和ADPCM編碼2個單器件。其內置有高性能﹑低功耗的DSP處理核(VSDSP),工作內存,可供用戶程序使用的5.5 KB RAM,串行SPI總線接口,高質量的采樣頻率可調的過采樣D/A轉換器以及16位的過采樣A/D轉換器。圖3為音頻編解碼器模塊硬件連接示意圖,VS1003采用SPI總線與LM3S1138實現通信。其中,SCLK為輸入時鐘,CS為片選信號,MOSI/MISO為數據串口,Demand為命令有效信號,VS1003外接音頻輸出設備[4]。

圖3 音頻編解碼模塊硬件連接
CH375是一款支持USB-HOST主機方式和USB-DEVICE/SLAVE從設備方式的器件,主機端點輸入和輸出緩沖區各64字節,支持常用的12 Mb/s全速USB設備,支持USB設備的控制傳輸﹑批量傳輸﹑中斷傳輸。內置固件處理海量存儲設備的專用通訊協議,支持Bulk-Only傳輸協議和SCSI,UFI,RBC或等效命令集的USB存儲設備。
圖4為USB控制接口模塊硬件連接示意圖,CH375通過UART串口與LM3S1138傳輸數據,INT為中斷信號,TXD/RXD為數據傳輸串口,CH375連接USB存儲設備。

圖4 USB控制接口模塊硬件連接
μC/OS-II是專門為嵌入式應用設計的實時操作系統內核,其具有以下優點:源代碼公開,代碼結構清晰,注釋詳盡,組織有條理,具有良好的可擴展性和可移植性,最多可以管理60個任務。該系統移植的μC/OS-II由用戶層﹑中間件層﹑μC/OS-II源碼層﹑μC/OS-II移植層和驅動庫組成。用戶層存放用戶代碼及設置,其中Main.c是用戶編寫任務處,Main.h定義堆棧大小及優先級;中間件層Middleware存放UART﹑SPI等串口通信中間件和 TCP/IP協議棧 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個必要文件;驅動庫層是直接面向硬件設備層,它是硬件設備和應用程序之間的樞紐,直接與系統底層的硬件設備打交道,按照硬件設備的具體工作方式讀寫設備寄存器,將寄存器的數據與應用軟件交互,ENC28J60﹑VS1003和CH375的驅動函數都在該層。
本系統采用ENC28J60以太網控制器,需編寫網絡設備驅動程序,實現低層網絡接口及硬件函數驅動。該驅動程序設計主要包含網卡的初始化和數據的發送接收[5]。
網卡初始化的驅動程序包括定義發送緩沖區大小﹑發送緩沖區數﹑ENC28J60的片選信號﹑ENC28J60的復位引腳以及網卡自檢。具體程序代碼如下[6]:
#define MAC_TX_BUFFER_SIZE (600) //定義發送緩沖區大小
#define MAC_TX_BUFFER_COUNT(1) //定義發送緩沖區數
#define LM1138_CS_ENC28J60 GPIO_PIN_3//ENC28J60的片選信號PA.3
#defineLM1138_RESET_ENC28J60 GPIO_PIN_1 //ENC28J60的復位引腳
Void ENC28J60_PowerOn_Init(void) //ENC28J60 上電初始化函數
網卡數據傳輸的驅動程序包括申請IP地址,建立與服務器的連接,以及數據的接收和發送等,圖5為其程序流程。

圖5 網卡數據傳輸流程
文件系統是一種以結構化格式存儲和信息檢索的實現方法,可使用戶方便快捷的管理存儲數據。文件系統一般包括 FAT32/16,NTFS,ext2/3,NFS 等,本設計采用 FAT16,可支持2 GB的最大分區,用于管理U盤中的音頻文件,該文件系統的實現主要針對USB接口器件CH375進行驅動開發。
在CH375驅動設計中,先實現FAT32/16文件系統層,再實現文件級API應用層。文件系統層采用CH375開發商提供的U盤文件級子程序庫來實現,CH375的U盤文件級子程序庫具有以下特性:支持常用的FAT16和FAT32文件系統,磁盤容量可達100 GB以上,支持多級子目錄,支持8.3格式的大寫字母和中文文件名,支持小寫字母或長文件名,支持文件打開、刪除、讀寫以及搜索等。文件系統移植好后,再進行API應用層驅動設計。應用層驅動包括CH375引腳配置、文件讀寫緩沖區配置、CH375讀寫程序的設計。在讀寫程序的設計中,要注意對CH375的延時操作,滿足CH375的時序要求。
音頻驅動的設計主要是針對VS1003的初始化設置和實現音頻數據流的傳輸,并對應用層提供API接口,這里完成了音頻播放功能程序的設計。
在該程序設計中,首先對LM1138和VS1003控制接口的(MISO﹑MOSI﹑SCK﹑CS﹑Demand) 引腳進行相應配置,VS1003初始化配置完成后,開始等待系統的播放標志置位,播放標志為“0”時,重新初始化 VS1003,播放標志為“1”時,接收到系統的播放消息,使能SPI接口,選擇將要播放的數據包,把音頻數據寫入SPI的緩沖存儲區,然后再發送給VS1003的數據寄存器,當音頻數據發送完成后,開始由VS1003處理這些音頻數據,實現模擬音頻數據的輸出,該函數能夠流暢地完成音頻播放功能[4]。
系統的應用程序主流程如圖6所示。

圖6 應用程序主流程
系統主任務啟動后,先初始化人機界面庫函數,它提供了操作界面的按鍵中斷處理函數以及LCD的顯示函數;再讀取初始系統配置數據,如本地IP、服務器IP、用戶賬號、密碼等,完成網絡、音頻編解碼以及存儲等模塊的初始化;然后,主任務再創建多個子任務,包括ENC28J60task,CH375task,VS1003task,humaninterfacetask,接著進入消息循環,消息循環是整個應用程序的核心部分,通過消息循環,系統不斷獲取用戶操作消息,并做出相應處理,實現系統功能;當收到一個退出消息時,系統強制主任務跳出消息循環,關閉播放器操作界面,系統退出應用程序[2]。
系統調試成功后,可流暢地從服務器中下載音頻數據,保存到外接USB設備中,然后再通過音頻解碼從音響播放出來。圖7為該系統主界面,系統音質良好,達到設計要求。

圖7 播放主界面
本系統設計采用基于ARM Cortex-M3的嵌入式器件LM3S1138作為主控制器件,采用ENC28J60作為網絡接口器件,在μC/OS-II平臺上構建一個實時的網絡播放系統[7-8]。該系統能夠實現網絡點播功能。如將ENC28J60更成為具有USB接口的無線網卡,則該系統還具有無線網絡功能。而隨著以太網技術的深入發展,將嵌入式系統與網絡結合,在嵌入式實時操作系統中引入TCP/IP協議棧,以支持嵌入式設備接入網絡,成為嵌入式領域重要的研究方向,且對于一些基于網絡接口的嵌入式系統都將具有廣泛的應用前景。
[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]邵貝貝.嵌入式實時操作系統μC/OS-Ⅱ[M].北京:北京航空航天大學出版社,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核的音頻編解碼器單器件系統[J].單片機與嵌入式系統應用,2001(10):68-71.
[5]劉 淼.嵌入式系統接口設計與驅動程序開發[M].北京:北京航空航天大學出版社,2006.
[6]譚浩強.C程序設計[M].2版.北京:清華大學出版社,2002
[7]伍興艷,皮亦鳴.一種嵌入式MP3音頻點播系統的設計與實現[J].電子設計工程,2008,16(10):32-33.
[8]朱維杰.基于BU9435的嵌入式MP3播放模塊設計[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 稿件編號:200907070
廣東省教育部產學研結合項目(2008B090500230)
王 坤(1984—),男,湖北黃岡人,碩士研究生。研究方向:雷達信號處理。