一種基于EFSL的嵌入式MP3播放器設(shè)計(jì)方法
存放在。MP3Playerefslinc目錄下的debug.h文件支持半主機(jī)調(diào)試功能。通過(guò)相關(guān)代碼可以設(shè)置所有調(diào)試消息并通過(guò)JTAG調(diào)試器的I/O終端窗口進(jìn)行顯示。通過(guò)。MP3Playerefslconf下的config.h配置文件,可以設(shè)置RAM 內(nèi)存使用水平和緩沖區(qū)大小。
2.2.5 配置系統(tǒng)文件
由于文件初始化需要良好的LPC2148運(yùn)行環(huán)境,需要把LPC2148提高到最大性能(60Hz),同時(shí)需要開(kāi)啟PLL功能,設(shè)置IRQ 中斷管理定時(shí)器為0和VPB分頻器為1.同時(shí)Philips_LPC2148_Startup.s必須包括相關(guān)預(yù)處理編譯指令。要在IDE中設(shè)置編譯器指令,只需要在項(xiàng)目瀏覽器窗口選擇Philips_LPC2148_Startup.s的文件,然后選擇預(yù)處理選項(xiàng)卡,并填寫(xiě)預(yù)處理器定義此屬性。
2.2.6 編譯批處理文件
要進(jìn)行編譯批處理文件,需要具備兩個(gè)文件,一個(gè)是項(xiàng)目文件MP3Player,一個(gè)是針對(duì)ARM 的RowleyCross Studio文件Rowley Associates Limited.Cross-Works for ARM 1.6文件中有可以自行批處理文件:
build_all_debug.bat,build_all_release.bat.
3 系統(tǒng)流程
系統(tǒng)啟動(dòng)后,先初始化硬件模塊。由LPC2148讀取SD卡的一些基本信息,如容量、扇區(qū)大小、FAT表及根目錄所在的啟始扇區(qū)等。通過(guò)獲得這些信息后,就可以找出SD卡是否有可以播放的音樂(lè)文件。若有音樂(lè)文件,微處理器將通過(guò)SPI總線(xiàn)方式讀出該文件的音頻信息,并將歌曲的碼流信息送入到VS1003芯片中,通過(guò)VS1003芯片解碼以及其內(nèi)含的高質(zhì)量的立體DAC和耳機(jī)驅(qū)動(dòng)電路,實(shí)現(xiàn)MP3歌曲的播放功能,軟件系統(tǒng)流程圖如圖3所示。
圖3 軟件系統(tǒng)流程圖
4 調(diào) 試
Main.c文件(源代碼略)顯示MP3播放器的工作過(guò)程。init_IO()函數(shù)LPC2148定時(shí)器0進(jìn)行初始化,使之產(chǎn)生周期性的中斷,并啟動(dòng)了一些數(shù)據(jù)結(jié)構(gòu)。周期性中斷速率要與解碼器數(shù)據(jù)流一樣,然后由efs_init(efs,″″)進(jìn)行MP3文件調(diào)用,若找不到文件則會(huì)通過(guò)JTAG interface 接口向CrossStudio IDE 傳入“Could not open filesystem”參數(shù),否則正常顯示文件信息。其文件處理結(jié)果顯示如圖4所示。通過(guò)調(diào)試顯示信息可知能正常顯示文件信息。另經(jīng)過(guò)實(shí)物制作并測(cè)試,此MP3播放器能流暢播放SD 卡中的MP3文件,驗(yàn)證了本設(shè)計(jì)是正確可行的。
圖4 調(diào)試終端顯示信息
5 結(jié) 語(yǔ)
本文基于開(kāi)源軟件項(xiàng)目EFSL設(shè)計(jì)了一款MP3播放器,介紹了播放器系統(tǒng)的硬件架構(gòu)和軟件架構(gòu)以及EFSL相關(guān)碼源移植和修改。通過(guò)CrossWorks forARM 1.6軟件調(diào)試,驗(yàn)證了設(shè)計(jì)的可行性。整個(gè)設(shè)計(jì)體現(xiàn)了EFSL碼源移植簡(jiǎn)單、配置方便的優(yōu)點(diǎn)。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論