隨著網絡應用的普及,為普通嵌入式系統增加網絡功能,能更好滿足消費者對網絡資源的需求。這里采用基于ARM Cortex-M3的微控制器LM3S1138實現一種具備網絡功能的播放終端系統,該系統不僅具有良好的播放效果,還可從網絡音樂服務器上點播音樂并實時播放。 1 網絡播放系統的設計方案 該網絡播放系統由服務器、用戶終端和音響設備組成。其中,服務器通過以太網提供音樂資源,用戶終端通過網絡下載音頻數據再實現音頻解碼,音響設備實現音樂播放。圖1給出該系統設計框圖。 該系統設計采用基于ARM Cortex-M3的控制器LM3Sll38作為主控制器。該控制器改進了代碼密度,減少中斷延時,實現Thumb-2指令集,并具有更低功耗,適用于嵌入式微處理器;網絡模塊采用以太網控制器ENC602J28;音頻編解碼器采用VSl003,該器件擁有自主產權的DSP處理器核,具有高性能、低功耗等特性;并采用USB總線接口器件CH375擴展存儲模塊。支持海量存儲。 將嵌入式實時操作系統μC/OS-II移植到主處理器上,實現多任務的調度管理。系統工作時,通過操作播放器上的配置按鈕,設置服務器和用戶終端的相關網絡配置,點擊播放器中的連接按鈕,發送連接服務器請求,服務器收到用戶終端的連接請求,驗證終端帳號正確后開始網絡連接,向用戶傳送點播的資源列表,用戶終端在播放器界面顯示列表,此時,用戶可以選擇點播的歌曲,然后將音樂文件下載到存儲設備中,下載完畢后,服務器關閉網絡連接,播放器就可播放已下載歌曲。 2 系統硬件模塊設計 2.1 以太網接口 ENC28J60是獨立的以太網控制器,采用業界標準的SPI串行接口,具有10 Mb/s SPI接口,符合IEEE802.3協議,內置10 Mb/s以太網物理層器件(PHY)及介質訪問控制器(MAC)。另外,它還具有可編程8 KB雙端口SRAM緩沖器,此緩沖存儲器具有靈活可靠的數據管理機制,以高效方式進行信息包的存儲、檢索和修改,以減輕主控器件的內存負荷。 圖2為網絡接口硬件連接示意圖。ENC28J60通過SPI總線實現與LM3Sll38的數據傳輸,CS為片選信號,SCLK為時鐘信號,MOSI/MISO為數據傳輸串口。此外,ENC28J60還與網絡變壓器HR901l70A相連,引出剛45接口。 2.2音頻接口 VSl003音頻編解碼器為VSl0XX系列第3代產品,包括MP3/WMA/MIDI解碼和ADPCM編碼2個單器件。其內置有高性能、低功耗的DSP處理核(VSDSP),工作內存,可供用戶程序使用的5.5 KB RAM,串行SPI總線接口,高質量的采樣頻率可調的過采樣D/A轉換器以及16位的過采樣A/D轉換器。圖3為音頻編解碼器模塊硬件連接示意圖,VSl003采用SPI總線與LM3Sll38實現通信。其中,SCLK為輸入時鐘,CS為片選信號,MOSI/MISO為數據串口,Demand為命令有效信號,VSl003外接音頻輸出設備。 2.3 USB控制接口 CH375是一款支持USB-HOST主機方式和USB-DE-VICE/SLAVE從設備方式的器件,主機端點輸入和輸出緩沖區各64字節,支持常用的12 Mb/s全速USB設備,支持USB設備的控制傳輸、批量傳輸、中斷傳輸。內置固件處理海量存儲設備的專用通訊協議,支持Bulk-Only傳輸協議和 SCSI,UFI,RBC或等效命令集的USB存儲設備。 圖4為USB控制接口模塊硬件連接示意圖,CH375通過UART串口與LM3S1138傳輸數據,*****為中斷信號,TXD/RXD為數據傳輸串口,CH375連接USB存儲設備。 3 系統軟件設計 μ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-Ⅱ基于LM3S的移植代碼,包括OS_CPU_C.C,OS_CPU_A.A,OS_CPU.C等3個必要文件;驅動庫層是直接面向硬件設備層,它是硬件設備和應用程序之間的樞紐,直接與系統底層的硬件設備打交道,按照硬件設備的具體工作方式讀寫設備寄存器。將寄存器的數據與應用軟件交互,ENC28J60、VSl003和CH375的驅動函數都在該層。 3.1網絡驅動程序 本系統采用ENC28J60以太網控制器,需編寫網絡設備驅動程序,實現低層網絡接口及硬件函數驅動。該驅動程序設計主要包含網卡的初始化和數據的發送接收。 網卡初始化的驅動程序包括定義發送緩沖區大小、發送緩沖區數、ENC28J60的片選信號、ENC28J60的復位引腳以及網卡自檢。具體程序代碼如下: 網卡數據傳輸的驅動程序包括申請IP地址,建立與服務器的連接,以及數據的接收和發送等,圖5為其程序流程。 3.2文件系統 文件系統是一種以結構化格式存儲和信息檢索的實現方法,可使用戶方便快捷的管理存儲數據。文件系統一般包括 FAT32/16,NTFS,ext2/3,NFS等,本設計采用FATl6,可支持2 GB的最大分區,用于管理U盤中的音頻文件,該文件系統的實現主要針對USB接口器件CH375進行驅動開發。 在CH375驅動設計中,先實現FAT32/16文件系統層,再實現文件級API應用層。文件系統層采用CH375開發商提供的U盤文件級子程序庫來實現,CH375的 U盤文件級子程序庫具有以下特性;支持常用的FAT16和FAT32文件系統,磁盤容量可達100 GB以上,支持多級子目錄。支持8.3格式的大寫字母和中文文件名,支持小寫字母或長文件名,支持文件打開、刪除、讀寫以及搜索等。文件系統移植好后,再進行API應用層驅動設計。應用層驅動包括CH375引腳配置、文件讀寫緩沖區配置、CH375讀寫程序的設計。在讀寫程序的設計中,要注意對CH375的延時操作,滿足CH375的時序要求。 3.3音頻驅動程序 音頻驅動的設計主要是針對VSl003的初始化設置和實現音頻數據流的傳輸,并對應用層提供API接口,這里完成了音頻播放功能程序的設計。 在該程序設計中,首先對LMll38和VSl003控制接口的(MISO、MOSI、SCK、CS、Demand)引腳進行相應配置,VSl003初始化配置完成后,開始等待系統的播放標志置位,播放標志為“0”時,重新初始化VSl003,播放標志為“l”時,接收到系統的播放消息,使能SPI接口,選擇將要播放的數據包,把音頻數據寫入SPI的緩沖存儲區,然后再發送給VSl003的數據寄存器,當音頻數據發送完成后,開始由 VSl003處理這些音頻數據,實現模擬音頻數據的輸出。該函數能夠流暢地完成音頻播放功能。 3.4用戶應用程序 系統的應用程序主流程如圖6所示。 系統主任務啟動后,先初始化人機界面庫函數,它提供了操作界面的按鍵中斷處理函數以及LCD的顯示函數;再讀取初始系統配置數據,如本地IP、服務器IP、用戶賬號、密碼等,完成網絡、音頻編解碼以及存儲等模塊的初始化;然后,主任務再創建多個子任務,包括ENC28-J60task,CH375task,VSl003task,humaninteRFacetask,接著進入消息循環,消息循環是整個應用程序的核心部分,通過消息循環,系統不斷獲取用戶操作消息,并做出相應處理,實現系統功能;當收到一個退出消息時,系統強制主任務跳出消息循環,關閉播放器操作界面,系統退出應用程序。 4 系統測試及分析 系統調試成功后,可流暢地從服務器中下載音頻數據,保存到外接USB設備中,然后再通過音頻解碼從音響播放出來。圖7為該系統主界面,系統音質良好,達到設計要求。 5 結束語 本系統設計采用基于ARM Cortex-M3的嵌入式器件LM3S1138作為主控制器件,采用ENC28J60作為網絡接口器件,在μC/OS-II平臺上構建一個實時的網絡播放系統。該系統能夠實現網絡點播功能。如將ENC28J60更成為具有USB接口的無線網卡,則該系統還具有無線網絡功能。而隨著以太網技術的深入發展,將嵌入式系統與網絡結合,在嵌入式實時操作系統中引入TCP/IP協議棧,以支持嵌入式設備接入網絡,成為嵌入式領域重要的研究方向,且對于一些基于網絡接口的嵌入式系統都將具有廣泛的應用前景。 |