TMS320VC54系列EPROM的加載實現(xiàn)
摘要:文中介紹了TMS320VC5000系列DSP的各種加載方法。并結合實例,著重介紹了其中C5402的EPROM加載方式和實現(xiàn)過程,提出了實際中應注意的問題。另外,也對8位EPROM加載過程及自舉表作了詳細的介紹。
本文引用地址:http://www.ex-cimer.com/article/242321.htm關鍵詞:數字信號處理器(DSP) 程序加載 TMS320VC54 自舉表
DSP芯片(數字信號處理器)已成為人們日益關注并得到迅速發(fā)展的具有前關沿技術的一種集成電路,而且已得到越來越廣泛的應用。TI公司推出的5000系列DSP具有高性能、低功耗等優(yōu)良性能,一推出就得到了用戶的歡迎。5000系列DSP被廣泛應用于電信、雷達、儀器儀表、圖像處理等許多方面。其應用范圍的廣泛性決定了必須有靈活多樣的加載方式與之相適應。正因為如此,它的加載方式也較單片機的加載要復雜的多。為了能讓讀者對DSP的各種加載方法有個初步的了解和今后應用的方便,本文立足實際經驗,簡單介紹了各種加載方法,并較為詳細地介紹了EPROM并行加載方法及應注意的問題。
1 DSP的各種加載方式
C5000系列可提供的加載方式有以下幾種:
●主機端口(HPI)加載
程序的執(zhí)行代碼由主機通過主機接口(HPI)加載到DSP的片內存儲器;
●并行加載
加載程序通過外部并行總線從數據空間讀取自舉表,自舉表內包含有程序代碼部分、每部分代碼的目的地址、加載成功后程序的執(zhí)行地址以及其它一些配置信息;
●標準串口加載
加載程序通過多通道緩沖串口(McBSP)來接收自舉表,并根據自舉表中的信息來加載代碼。McBSP0支持16位的串行接收方式,McBSP1支持8位的串行接收方式;
●8位或16位I/O加載
加載程序通過使用異步握手協(xié)議從I/O的OH口讀取自舉表;
●8位串口EEPROM加載
加載程序從一個連接到McBSP1的串行EEPROM來接收數據。
2 C5000的加載過程
C5000系列加載程序已固化在ROM內。在硬件復位期間,如果DSP的MP引腳為高是平,系統(tǒng)就從外部程序存儲器FF80H執(zhí)行用戶程序;若MP為低電平,系統(tǒng)則從片內ROM的FF80H開始執(zhí)行程序,同時選擇加載方式。C5000的具體加載過程如下:
(1)首先,在自舉加載前對其進行初始化,其中包括:使中斷無效(INTM=1),內部RAM映射到程序/數據區(qū)(OVLY=1),對程序和數據區(qū)均設置七個等待狀態(tài)等。
(2)檢查INT2,決定是否從HPI中載。主機接口(HPI)是利用INT2進行自舉加載的。如果沒有INT2信號,說明不是HPI加載。
(3)檢查INT3決定是否進行串行EEPROM加載。如果DSP檢測到INT3信號,則進行串行EEPROM加載,否則轉到(4)。
(4)從I/O空間的FFFFH處讀取源地址,如果是有效的地址,則進行并行加載;否則從數據空間的FFFFH處讀取源地址,如果地址有效,也可進行并行加載;若兩種情況都不是則轉到(5)。
(5)初始化串口,置XF為低。若McBSP1接收到一個數據,先檢查是否是有效的關鍵字,若是則通過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的片外數據區(qū),用戶程序是通過片內固化的加載程序讀入到片內程序區(qū)來完成加載的。
3 8位EPROM加載過程
當檢測到不是串行EEPROM加載時,加載程序則轉入并行加載方式。此時加載程序從并口(外部存儲器)傳輸代碼到程序空間,支持8位和16位加載。另外,程序也可自動配置SWWSR(軟件等待狀態(tài)寄存器)和BSCR(分區(qū)轉換控寄存器),使之與不同加載方式相適應,從而使DSP能與不同速率的EPROM相連接??紤]到高速器件與低速器件的匹配問題,加載程序使用默認的七個等待周期。
加載程序能從I/O空間的0FFFFH和數據空間的0FFFFH處獲取代碼的首地址。通常,從數據空間獲取代碼的首地址較方便。因為在數據空間不需要另擴I/O空間,同時又可增加電路改動的靈活性。對5402來說,自舉表可以位于4000H~FFFFH處的任何位置。圖2詳細描述了EPROM加載過程。
應當注意的是:如果不用并行加載方式,D0必須通過一個小的上拉電阻置為高電平,以此來避免加載程序從數據空間讀到0AAH關鍵字。另外,加載程序事先并不知道存儲器的寬度,所以它要同時檢查存儲器的低位(0FFFFH)和高位(0FFFFH)以獲取正確的源地址。
4 自舉表
自舉表的頭部是關鍵字(08AA或10AA),加載程序就是根據它來判斷是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)寄存器進行初始的程序段。
評論