新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > TMS320VC54系列EPROM的加載實現(xiàn)

TMS320VC54系列EPROM的加載實現(xiàn)

作者: 時間:2006-05-07 來源:網絡 收藏

摘要:文中介紹了TMS320VC5000系列的各種加載方法。并結合實例,著重介紹了其中C5402的EPROM加載方式和實現(xiàn)過程,提出了實際中應注意的問題。另外,也對8位EPROM加載過程及自舉表作了詳細的介紹。

本文引用地址:http://www.butianyuan.cn/article/242321.htm

關鍵詞:器() 程序加載 TMS320VC54 自舉表

芯片(器)已成為人們日益關注并得到迅速發(fā)展的具有前關沿技術的一種集成電路,而且已得到越來越廣泛的應用。TI公司推出的5000系列DSP具有高性能、低功耗等優(yōu)良性能,一推出就得到了用戶的歡迎。5000系列DSP被廣泛應用于電信、雷達、儀器儀表、圖像處理等許多方面。其應用范圍的廣泛性決定了必須有靈活多樣的加載方式與之相適應。正因為如此,它的加載方式也較單片機的加載要復雜的多。為了能讓讀者對DSP的各種加載方法有個初步的了解和今后應用的方便,本文立足實際經驗,簡單介紹了各種加載方法,并較為詳細地介紹了EPROM并行加載方法及應注意的問題。

1 DSP的各種加載方式

C5000系列可提供的加載方式有以下幾種:

●主機端口(HPI)加載

程序的執(zhí)行代碼由主機通過主機接口(HPI)加載到DSP的片內存儲器;

●并行加載

加載程序通過外部并行總線從數(shù)據(jù)空間讀取自舉表,自舉表內包含有程序代碼部分、每部分代碼的目的地址、加載成功后程序的執(zhí)行地址以及其它一些配置信息;

●標準串口加載

加載程序通過多通道緩沖串口(McBSP)來接收自舉表,并根據(jù)自舉表中的信息來加載代碼。McBSP0支持16位的串行接收方式,McBSP1支持8位的串行接收方式;

●8位或16位I/O加載

加載程序通過使用異步握手協(xié)議從I/O的OH口讀取自舉表;

●8位串口EEPROM加載

加載程序從一個連接到McBSP1的串行EEPROM來接收數(shù)據(jù)。

2 C5000的加載過程

C5000系列加載程序已固化在ROM內。在硬件復位期間,如果DSP的MP引腳為高是平,系統(tǒng)就從外部程序存儲器FF80H執(zhí)行用戶程序;若MP為低電平,系統(tǒng)則從片內ROM的FF80H開始執(zhí)行程序,同時選擇加載方式。C5000的具體加載過程如下:

(1)首先,在自舉加載前對其進行初始化,其中包括:使中斷無效(INTM=1),內部RAM映射到程序/數(shù)據(jù)區(qū)(OVLY=1),對程序和數(shù)據(jù)區(qū)均設置七個等待狀態(tài)等。

(2)檢查INT2,決定是否從HPI中載。主機接口(HPI)是利用INT2進行自舉加載的。如果沒有INT2信號,說明不是HPI加載。

(3)檢查INT3決定是否進行串行EEPROM加載。如果DSP檢測到INT3信號,則進行串行EEPROM加載,否則轉到(4)。

(4)從I/O空間的FFFFH處讀取源地址,如果是有效的地址,則進行并行加載;否則從數(shù)據(jù)空間的FFFFH處讀取源地址,如果地址有效,也可進行并行加載;若兩種情況都不是則轉到(5)。

(5)初始化串口,置XF為低。若McBSP1接收到一個數(shù)據(jù),先檢查是否是有效的關鍵字,若是則通過McBSP1進行串口加載,否則檢查McBSP0,其過程與McBSP1相同。

(6)檢測BID引腳是否為低,若為低再檢查是否為有效的關鍵字,若是則進行I/O加載,否則檢測是否是有效的入口點,若是,則轉入入口點,若都不是則跳到(5)。

下面通過一個具體的例子來詳細介紹一下EPROM并行加載過程,DSP選用TMS320VC5402(5402提供4k 16bit的掩模ROM),EPROM選用27C256。

由TMS320V5402和27C256所構成的程序加載電路如圖1所示。圖中74LVC245的作用是將27C256輸出的TTL電平轉換成TMS320VC5402能接收的電平。它還對DSP起到保護作用。若去掉274LVXC245,則會燒壞5402。

27C256的輸出使能控制線(OE)用來控制器件的有效或無效(雙側相互隔離)。

74LS08將27C256的地址定為8000H~FFFFH。LVC245的DIR端接DSP的R/W端。27C256垢CS端接74LS08的譯碼輸出,OE端接低電平信號。在這種加載方式中,EPROM是作為TMS320VC5402的片外數(shù)據(jù)區(qū),用戶程序是通過片內固化的加載程序讀入到片內程序區(qū)來完成加載的。

3 8位EPROM加載過程

當檢測到不是串行EEPROM加載時,加載程序則轉入并行加載方式。此時加載程序從并口(外部存儲器)傳輸代碼到程序空間,支持8位和16位加載。另外,程序也可自動配置SWWSR(軟件等待狀態(tài)寄存器)和BSCR(分區(qū)轉換控寄存器),使之與不同加載方式相適應,從而使DSP能與不同速率的EPROM相連接。考慮到高速器件與低速器件的匹配問題,加載程序使用默認的七個等待周期。

加載程序能從I/O空間的0FFFFH和數(shù)據(jù)空間的0FFFFH處獲取代碼的首地址。通常,從數(shù)據(jù)空間獲取代碼的首地址較方便。因為在數(shù)據(jù)空間不需要另擴I/O空間,同時又可增加電路改動的靈活性。對5402來說,自舉表可以位于4000H~FFFFH處的任何位置。圖2詳細描述了EPROM加載過程。

應當注意的是:如果不用并行加載方式,D0必須通過一個小的上拉電阻置為高電平,以此來避免加載程序從數(shù)據(jù)空間讀到0AAH關鍵字。另外,加載程序事先并不知道存儲器的寬度,所以它要同時檢查存儲器的低位(0FFFFH)和高位(0FFFFH)以獲取正確的源地址。

4 自舉表

自舉表的頭部是關鍵字(08AA或10AA),加載程序就是根據(jù)它來判斷是16位還是8位加載方式;接著的兩個字是SWWSR和BSCR的值;第四和第五個字程序代碼的入口點(即加載以后程序執(zhí)行的首地址);接著是第一段代碼的長度以及它的目的地址;緊跟著是另一段代碼;依此類推,最后是0000H,這是自舉表的結束標志。表1為自舉表的結構。

表1 自舉表的結構圖

08AAh or 10AAh
Initialize value of SWWSR 16
Initizlixe value of BSCR 16
Entry point (XPC)7
Entry point(PC)16
Size of first section 16
Destination of first section (XPC)7
Destination of first section (PC)16
Code word(1)16
Code word(N)16
Size of last section 16
Destination of last section(XPC)7
Destination of section (PC)16
Code word(1)16
 
Code word(N)16
0000h

筆者將結合實例,介紹一下自舉表的建立。

假設用戶編制的源程序文件為radar.asm,鏈連器命令文件為radar.cmd,生成的COFF文件為radar.out,最后生成的INTEL的十六進制文件為radar.hex,用戶可以通過EPROM編程器將它燒錄到EPROM中。

(1)首先,使用編譯器對應用程序進行編譯。值得注意的是必須在編譯器的命令行上加-V548選項,若遺忘了這個選項,以后HEX轉換工具將會產生C54早期版本的自舉表,而不提供任何錯誤與警告信息。這個錯誤極其隱蔽,務必注意。

例:asm500radar.asm-1-s-x-v548

(2)第二步,對第一步產生的目標文件進行鏈接。在鏈接過程中,鏈接器將各個目標文件合并,并完成以下工作:

●將各個段配置到目標系統(tǒng)的存儲器;

●對各個符號和段進行重新定位,并給它們指定一個最終的地址;

●解決輸入文件之間未定義的外部引用。

例:Lnk500 radar.cmd-o radar.out

(3)最后,運行HEX代碼轉換工產生自舉表。十六進制轉換程序可以很方便的將COFF目標文件轉換成TI,INTEL,MOTOROLA或TEKTRONIX公司的目標文件格式。轉換后生成的文件下載到EPROM編程器。

例:Hex500 radar.out -I - o radar.hex - memwidth 8 -romwidth 8 -boot -bootorg 0x0000

注意:為了保證加載的成功率,用戶編制的程序代碼前面應加上對DSP的各個狀態(tài)寄存器進行初始的程序段。



評論


相關推薦

技術專區(qū)

關閉