- 相關(guān)推薦
利用Flash實(shí)現DSP對多個(gè)程序有選擇的加載
摘要:主要介紹一種利用Flash存儲器實(shí)現雙DSP系統對多份用戶(hù)代碼有選擇的上電加載的方法。其中,重點(diǎn)介紹M29W800AB Flash的使用和編程方法,TMS320VC54X DSP的上電自動(dòng)引導過(guò)程,以及HPI模式和并行模式加載用戶(hù)代碼的方法。引 言
在TMS320C54X系列DSP系統的開(kāi)發(fā)中,由于DSP片內只有ROM和RAM存儲器,如要將用戶(hù)代碼寫(xiě)入ROM中,必須要由DSP芯片廠(chǎng)家來(lái)完成;但這樣做用戶(hù)就不能再更改代碼,很不實(shí)用。由于RAM在DSP掉電后不能再保存數據,因此,常常利用EPROM、Flash等一些外部存儲器來(lái)存放用戶(hù)代碼。在DSP上電工作后,利用DSP提供的boot機制,再將程序下載到DSP RAM中運行。如果使用EPROM外部存儲器存放用戶(hù)代碼,需要用代碼轉換工具將用戶(hù)代碼轉換為二進(jìn)制目標文件,然后用編程器將其燒寫(xiě)進(jìn)EPROM;而如果使用Flash存儲器存放用戶(hù)代碼,則可直接使用DSP仿真器和CCS(Code Composer Studio )仿真環(huán)境進(jìn)行在線(xiàn)編程,使用靈活方便,不再需要其它編程設備。在某一以太網(wǎng)通信系統中,我們就采用Flash存儲器來(lái)實(shí)現多份用戶(hù)代碼的有選擇加載。下面就以此系統為例介紹對TMS320VC54X DSP的一種用戶(hù)代碼加載的方法。
1 系統構架
??此通信系統基于802.3以太網(wǎng)標準,用以實(shí)現各終端之間的話(huà)音和其它數據的通信,以及實(shí)現局域網(wǎng)內終端與外界的話(huà)音和數據通信。為節約開(kāi)發(fā)成本,提高系統的可擴展性、通用性和靈活性,我們對每個(gè)網(wǎng)內終端采用同樣的硬件架構,通過(guò)使用不同的軟件代碼而使其實(shí)現不同的功能,發(fā)揮不同的作用。
??每一通信終端由2塊DSP芯片、1塊網(wǎng)卡、1塊CPLD和1塊FPGA以及Flash存儲器等器件組成可擴展的基本結構。其中,以TMS320VC5410 DSP作為主CPU,負責系統的邏輯控制和一般數據傳輸;以MS320VC5416 DSP作為從CPU,負責話(huà)音的編解碼和回聲消除、語(yǔ)音檢測等工作。2塊DSP之間通過(guò)主機接口(HPI)進(jìn)行通信。為了實(shí)現代碼的有選擇下載,可由FPGA配置一端口作為撥碼開(kāi)關(guān),使用戶(hù)通過(guò)調節撥碼開(kāi)關(guān),可以有選擇地下載存儲于Flash中的用戶(hù)代碼,其結構如圖1所示。
??配置撥碼開(kāi)關(guān)是為了擴充系統的功能,以實(shí)現一個(gè)硬件平臺的多種用途。我們可以將實(shí)現不同功能的多份用戶(hù)代碼都寫(xiě)入Flash存儲器中存放,通過(guò)硬件撥碼開(kāi)關(guān)的設置,選擇其中一份用戶(hù)代碼下載執行。在系統上電加載用戶(hù)代碼時(shí),系統先從Flash下載FPGA配置程序,然后通過(guò)FPGA讀出撥碼開(kāi)關(guān)的值,再根據此值從Flash中選擇對應的5410 DSP用戶(hù)代碼加載;而5416 DSP的用戶(hù)代碼加載是在5410代碼加載完成,啟動(dòng)運行后由5410程序從Flash中讀出相應的5416代碼,再通過(guò)HPI加載到5416的,以此實(shí)現5416 DSP的代碼加載與啟動(dòng)。
2 M29W800AB Flash存儲器介紹及使用
??在此系統中,我們選用的是M29W800AB Flash存儲器,其容量為512K×16位, 分為16頁(yè),每頁(yè)32K。其中,第0頁(yè)有4個(gè)模塊:0x00~0x1fff、0x2000~0x2fff、0x3000~0x3fff、0x4000~0x7fff。其余各頁(yè),每頁(yè)為1個(gè)模塊,共有19個(gè)模塊。
??對Flash的操作要靠寫(xiě)入一系列特定的地址和數據序列來(lái)完成。在每次對Flash寫(xiě)入之前,要對其原來(lái)的內容進(jìn)行擦除。Flash的擦除包括塊擦除和芯片擦除兩種。塊擦除是對一個(gè)模塊進(jìn)行擦除,芯片擦除是擦除整個(gè)Flash的內容。因此,對Flash的操作,是以模塊為基本單元的。對Flash的操作由指令決定,其必須滿(mǎn)足Flash的時(shí)序要求,每條指令需要1~6個(gè)不等的指令周期。主要操作指令包括讀數據指令、編程指令、復位指令、自動(dòng)選擇指令和擦除指令。每個(gè)指令周期由一個(gè)命令構成,每個(gè)命令代碼所執行的任務(wù)如表1所列。
表1 Flash的命令說(shuō)明
??下面以M29W800AB Flash的塊擦除指令為例,具體說(shuō)明Flash的操作時(shí)序:塊擦除指令需要6個(gè)總線(xiàn)周期,先以2個(gè)解鎖周期開(kāi)始,然后是1個(gè)擦除建立周期,接下來(lái)又是2個(gè)解鎖周期,最后是1個(gè)擦除確認周期,其指令時(shí)序如表2所列。
表2 Flash擦除指令說(shuō)明
??其C語(yǔ)言程序設計代碼如下:
#define flash ((volatile unsigned int*)0x8000)
Block_Erase(ADDR){
flash[0x5555] = 0x00AA;
【利用Flash實(shí)現DSP對多個(gè)程序有選擇的加載】相關(guān)文章:
一種基于CAN總線(xiàn)的DSP程序加載技術(shù)03-20
TMS320C6x DSP的FLASH引導方法研究與實(shí)現03-18
利用ISA總線(xiàn)實(shí)現對DSP芯片VC5402的軟配置03-19
FFT算法的研究與DSP實(shí)現03-07
利用進(jìn)程間通信實(shí)現程序自我保護分析03-09
利用DSP控制直流無(wú)刷電機03-18
CF卡與雙核DSP的實(shí)現03-18