Blackfin處理器是ADI公司與Intel公司于2003年4月聯(lián)合推出的一系列DSP產品,主要面向嵌入式音頻、視頻和通信等領域,除了具有強大的信號處理性能和理想的電源效率,還集成了32位的RISC精簡指令集。ADSP-BF533是目前Blackfin系列數字信號處理器中性能最高的一款,具有600MHz的主頻,雙16位的MAC(乘加器)和兩個40位的ALU(算術邏輯單元),4個8位的視頻處理單元,8個算術寄存器,10個地址尋址單元。DSP集成了148K字節(jié)的片內RAM,并具有豐富的外部接口,如SDRAM、通用并行數據口、SPI、PPI、同步和異步串口等。
MSP430F149是工業(yè)級閃存型16位RISC MCU,具有功耗極低、片上資源豐富等特點,同樣非常適合掌上設備使用。
本系統(tǒng)為軟件無線電掌上設備平臺,采用了BF533+MSP430F149的雙處理器模式:B F533主要完成寬帶擴頻信號的快速捕獲跟蹤和解碼功能;MSP430完成的功能包括USB控制器接口、射頻控制和DSP引導、監(jiān)控等,如圖1所示。
圖1 系統(tǒng)結構簡圖
MSP430通過USB控制器同PC機建立通信,整個系統(tǒng)作為一個USB設備被PC機訪問。天線接收射頻信號進行直接下變頻,經AD轉換后進入BF533。DSP程序存放在MSP430F149片內FLASH ROM中。
MSP430F149和BF533通過SPI總線連接,在解決DSP程序引導問題的同時,也實現了DSP的實時監(jiān)控。
Blackfin 應用程序引導過程
開發(fā)Blackfin 應用程序的一般過程如圖2所示。
圖2 Blackfin 引導文件生成過程
DSP應用程序編寫和調試通常在ADI公司的集成開發(fā)環(huán)境VisualDSP++下完成。在軟件設計階段,可使用硬件仿真器Summit ICE通過JTAG(邊界掃描測試接口)同目標處理器連接進行調試開發(fā)。VisualDSP++會將用戶應用程序代碼編譯生成DSP可執(zhí)行文件(.DXE),并通過JTAG口裝入目標處理器的內存。
在設計獨立的目標系統(tǒng)時,必須考慮用戶程序的引導方式和相應的外部存儲器,通過VisualDSP++產生與存儲器類型相應的引導文件(.LDR),將引導文件燒錄到外部存儲器中。最后,通過某種引導模式將引導文件裝載到DSP內存并執(zhí)行。
BF533內部有一段固化的引導程序(Boot ROM),見圖3。硬件復位后進入引導進程,執(zhí)行存放在Boot ROM中的引導程序。首先,通過對兩個專用引導模式選擇引腳BMODE[1:0]的采樣,決定BF533將以何種方式裝載用戶應用程序代碼/數據。然后,按照用戶選擇的格式引導應用程序并執(zhí)行。
圖3 Blackfin應用程序引導過程
BF533共有4種程序引導模式,表1顯示了引腳BMODE[1:0]的值和引導模式的關系。
對任何一種模式,引導程序會根據模式引腳選擇的外部程序存儲器的類型,先讀出一個10個字節(jié)的文件頭(Header)。文件頭由4個字節(jié)的目的地址、4個字節(jié)的傳輸數據數量(字節(jié)數)和2個字節(jié)的控制標志組成。如果用戶程序或數據需要放在DSP內存的不同地址塊,可以采用分塊引導的方式來進行數據加載,每個塊(Block)用不同的文件頭描述。一旦所有的塊裝載完畢,處理器將結束引導進程,并從L1指令存儲器的起始地址(0xFFA00000)開始執(zhí)行放在這里的用戶代碼。文件頭中控制標志描述了塊的一些屬性。圖4是引導時的數據流和文件頭格式。
圖4 BF533的引導數據流和文件頭格式
SPI引導時序
SPI總線由三條信號線組成:串行時鐘(SCLK)、串行數據輸出(SDO)、串行數據輸入(SDI)。SPI總線可以實現多個SPI設備互相連接。提供SPI串行時鐘的SPI設備為SPI主機或主設備(Master),其他設備為SPI從機或從設備(Slave)。將各個設備的串行時鐘引腳接在一起,主設備的數據輸出接從設備的數據輸入MOSI(Master Out Slave In),從設備的數據輸入接主設備的數據輸出MISO(Master In Slave Out)。
由于MSP430和BF533的SPI口均可軟件配置為主或從設備,因此通過同樣的連接方法既可使BF533為主機,又可使MSP430為主機。
程序引導時,BF533是主機,串行時鐘由BF533提供,監(jiān)控過程中MSP430是主機,通過SPI口控制BF533,與引導時相比,硬件連接沒有改變,只是MSP430和BF533各提
供一個通用IO引腳用作握手信號,用來避免MSP430在DSP忙時中斷DSP。
在本系統(tǒng)中,BF533引導模式設為從16位串行SPI存儲器引導。BF533上電或硬件復位后,SPI接口默認為主模式,并提供頻率為500KHz的串行時鐘。引導時序最初的幾個周期是:從第一個SPI時鐘周期開始,BF533在MOSI引腳上產生讀SPI的串行EEPROM命令字節(jié),其值為0x03。這個值對于SPI串行EEPROM而言,是讀存儲器命令。存儲器應從下一個時鐘節(jié)拍開始將存儲器內數據串行送到BF533的MISO引腳上。由圖4可知,首先送出的應該是塊1的目的地址信息0xFFA00000。讀出這個值之后,DSP內部會對該值進行判斷,如果目的地址不是DSP內存區(qū)域內的有效地址,BF533將重復發(fā)送讀SPI EEPROM命令字節(jié)并判斷地址有效性這一過程。如果讀入的地址有效,將會啟動讀存儲器時序,再發(fā)送一個讀SPI 串行EEPROM命令字節(jié):先讀入文件頭,再讀入引導內容。
設計中應特別考慮MSP430軟件以確保由MSP430F149的SPI接口產生的引導時序和從EEPROM引導時的時序相同。根據筆者開發(fā)經驗,BF53x系列正式版本具有相同的SPI引導時序,但測試版本芯片的SPI時序與正式版有所差異。
DSP實時監(jiān)控與程序在線升級
在DSP程序運行的過程中,通常我們需要知道它的運行狀況。因此需要建立一種機制用來實現對DSP內存區(qū)域的實時讀寫操作,即完成程序的實時監(jiān)控。
在BF533應用程序設計中,設置BF533的SPI口為從模式。在引導完成之后,設置MSP430的SPI口為主模式,而引導進去的BF533用戶應用程序開始執(zhí)行,從而在MSP430和BF533之間建立了主從的SPI通信。
此外,MSP430通過USB接口器件PDIUSBD12連接到PC機。監(jiān)控命令由PC機或鍵盤操作發(fā)起,MSP430響應PC機通過USB總線下發(fā)的命令或鍵盤命令,再根據命令類型進行操作。監(jiān)控命令分為兩類:
(1)PC機或鍵盤對MSP430的控制命令。命令通過USB總線或鍵盤傳到MSP430,MSP430響應命令并執(zhí)行相應操作。此類命令包括:升級DSP程序、下載數據到FLASH、外圍控制等。
(2)PC機或鍵盤對DSP的控制命令。這類命令可由PC機通過USB總線或鍵盤操作下達到MSP430,也可由MSP430直接發(fā)起,命令接受方是DSP。此類命令主要有兩個:讀DSP內存區(qū)域和寫DSP內存區(qū)域。命令由命令包和數據包組成,讀命令包主要包括命令代碼、目的地址、讀出長度以及校驗字。在發(fā)出讀命令包后,如果收到DSP正確的響應,就發(fā)出跟讀出長度相應的數據包,每發(fā)一個數據包就將收到DSP返回的一包數據。寫命令包主要包括命令代碼、目的地址、寫入長度以及校驗字。在發(fā)出寫命令包后,如果收到DSP的正確響應,就將欲寫的數據打包送出,如果寫入成功,就會收到DSP的正確響應。
MSP430具有60K字節(jié)的片上FLASH程序存儲器,除了自身程序占用的程序空間,還可空出約48K字節(jié)的空間。本系統(tǒng)中,這部分空閑空間用來存放待引導的DSP程序。MSP430的FLASH存儲器具有分段擦除和編程功能,最小擦除單位是512(0x200)字節(jié)。其FLASH ROM除了可以用專門的開發(fā)工具進行編程操作外,還可以自編程實現DSP程序的在線升級。
結語
通過MSP430F149直接對ADSP-BF533進行程序引導和實時監(jiān)控,與通常使用串行EEPROM引導相比,避免了燒寫EEPROM這一中間過程,減少了電路復雜度。在同樣的電路連接上既實現了引導功能,又實現了監(jiān)控功能。此外,通過MSP430靈活的軟件編程,還使系統(tǒng)具有引導時機可靈活掌握、DSP程序可在線升級等特點。