- 相關推薦
TMS320VC5416并行自舉的巧妙實現
摘要:提出了一種巧妙實現DSP并行自舉的方法,即采用“兩次下載法”,利用DSP自身對FLASH編程,以實現DSP的并行自舉。這種在系統編程的DSP自舉實現方式無需文件轉換,簡單靈活。以TI公司的TMS320VC5416和閃爍存儲器SST39VF200為例,介紹了該方法的具體實現過程。隨著信息技術的飛速發展,數字信號處理器(DSP)得到了廣泛的應用,F今的高速DSP內存不再基于FLASH結構,而是采用存取速度更快的RAM結構。DSP掉電后其內部RAM中的程序和數據將全部丟失,所以在脫離仿真器的環境中,DSP芯片每次上電后必須自舉,將外部存儲區的執行代碼通過某種方式搬移到內部存儲區,并自動執行。目前應用非常廣泛的是TI公司的5000系列DSP,常用的自舉方式有并行自舉、串行自舉、主機接口(HPI)自舉和I/O自舉。HPI自舉需要有一個主機(如單片機)進行干預,雖然可以通過這個主機對DSP內部工作情況進行監控,但電路復雜、成本高;串口自舉代碼加載速度慢;I/O自舉僅占用一個端口地址,代碼加哉速度快,但一般的外部存儲器都需要接口芯片來滿足DSP的自舉時序,故電路復雜,成本高;并行自舉加載速度快,雖然需要占用DSP數據區的部分地址,但無需增加其它接口芯片,電路簡單。因此在TI公司的5000系列DSP中,并行自舉得到了廣泛的應用。
將可執行代碼燒錄到外部存儲器,傳統的做法是通過編程器完成。先利用CCS軟件中的hex500.exe文件將要寫入的*.out文件轉換成編程器能夠識別的*.hex文件格式,再用編程器將轉換后的*.hex文件燒錄到外部EEROM中。然后,隨著芯片制造工藝的不斷提高,芯片集成度越來越高,存儲器正向小型化、貼片式的方向發展,很多貼片封裝的存儲器很難用編程器編程,更不可能頻繁插拔。與傳統的EEROM相比,FLASH存儲器具有支持在線擦寫且擦寫次數多、速度快、功耗低、容量大、價格低廉等優點。目前在很多FLASH芯片采用3.3V單電源供電,與DSP連接時無需采用電平轉換芯片,因此電路連接簡單。在系統編程,利用系統本身的DSP直接對外掛的FLASH存儲器編程,節省了編程器的費用和開發時間、使得DSP執行代碼可以在線更新。
這里,在可執行代碼的FLASH燒錄方面,不再采用hex500.exe文件對*.out文件進行轉換,而是妙巧妙地采用“兩次下載法”,利用DSP對FLASH的寫操作將可執行代碼直接寫到外掛FLASH中去。
本文以一片TMS320VC5416外掛一片SST69VF200 FLASH存儲器為例,介紹如何通過DSP對FLASH在系統編程,以實現DSP并行自舉的具體方法,并給出了DSP的C程序部分源碼。
1 DSP和FLASH構成的自舉系統
DSP在自舉過程中,是將外部的存儲區當作數據存儲區來訪問的。因此在設計時,雖然FLASH內部存儲的是代碼,但對于DSP而言依然是數據。由于TMS320VC5416的數據總線是16位的,所以選用16位總線接口的FLASH存儲器。數據區中的0x0000~0x7FFF對應為DSP內存的RAM區,所以DSP要對外部的FLASH操作只能訪問0x8000~0xFFF的32K字存儲區。
DSP自舉系統的基本連接如圖1所示。自舉系統中的選用的FLASH為SST公司的SS39VF200,該FLASH存儲器為128K字容量,16位總線接口。為了簡化起見,圖中沒有對FLASH進行分頁處理,僅僅是把它當成外部數據存儲區來處理。由于SS39VF200的讀信號OE和寫信號WE是分開的,且寫信號的優先級高于讀信號,而DSP的讀寫共用一個引腳,所以將DSP的讀寫信號與FLASH的寫信號相連接,而將其讀信號OE直接接地,FLASH的片選信號CE直接與DSP的數據區選擇信號OE相連接,這表明將FLASH作為DSP的數據存儲區進行訪問。如上所述,DSP只能訪問外部數據區的0x8000~0xFFF區域的數據,因此對于39VF200而言,可以將最高位地址A16直接接地。對于上述電路連接方法,39VF200存儲器從0x0000開始的32K的空間是無法訪問的。
2 TMS320VC5416對SST39VF200的在系統編程
2.1 SS39VF200芯片介紹
SST39VF200的操作不像一般的RAM和ROM,除了讀數據的過程一樣外,其它的操作都不相同,必須按照一定的順序來執行。
2.2 TMS320VC5416對SST39VF200的編程操作
通常,在對FLASH進行編程之前,必須將FLASH中待寫的區域進行擦除,然后才能進行編程操作。需要注意的是,每次對FLASH發出操作命令后,必須等到FLASH完成本次操作才能發送下一個操作命令。判斷FLASH執行命令完畢的方式有兩種,一是利用數據位D7判斷,如果FLASH尚未完成操作,則讀該位總是為低,完成操作后該位變成高;二是利用數據位D6判斷,如果FLASH尚未完成操作,則相鄰兩次讀到的D6位的值不同。當兩次讀到的D6位的值都是一樣的,表明FLASH完成了本次操作。
下面以數據位D6判斷操作完成與否,說明TMS320VC5416對SST39VF200寫操作的具體過程,其它操作過程與該過程基本相同。
Void Word_Program(uint * Ad,uint DQ) //Ad為編程地址,DQ為編程數據
{
uint *Ad_Temp,Temp1,Temp2; //定義臨時地址指針和數據變量
Ad_Temp=(uint *)(0x55555); //第一個寫周期
*Ad_Temp=0x5555; //給地址0x5555,寫數據0x00AA
Ad_Temp=(uint *)(0x2AAA); //第二個寫周期
*Ad_Temp=0x0055; //給地址0x2AAA,寫數據0x0055
Ad_Temp=(uint *)(0x5555); //第三個寫周期
*Ad_Temp=0x00A0; //給地址0x5555寫數據0x00A0
【TMS320VC5416并行自舉的巧妙實現】相關文章:
TMS320C5410燒寫Flash實現并行自舉引導03-18
在DSP處理器上并行實現ATR算法03-18
基于TMS320VC5416的FIR數字濾波器設計與實現03-07
ADSP-218X的IDMA接口自舉設計03-18
面向并行工程的DFC與DTC辨析*03-18
夢想與實現03-18
淺議水電施工中并行工程集約管理03-18