<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TMS320VC54系列EPROM的加載實(shí)現

TMS320VC54系列EPROM的加載實(shí)現

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/242321.htm

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

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

1 DSP的各種加載方式

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

●主機端口(HPI)加載

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

●并行加載

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

●標準串口加載

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

●8位或16位I/O加載

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

●8位串口EEPROM加載

加載程序從一個(gè)連接到McBSP1的串行EEPROM來(lái)接收數據。

2 C5000的加載過(guò)程

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

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

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

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

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

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

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

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

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

27C256的輸出使能控制線(xiàn)(OE)用來(lái)控制器件的有效或無(wú)效(雙側相互隔離)。

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

3 8位EPROM加載過(guò)程

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

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

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

4 自舉表

自舉表的頭部是關(guān)鍵字(08AA或10AA),加載程序就是根據它來(lái)判斷是16位還是8位加載方式;接著(zhù)的兩個(gè)字是SWWSR和BSCR的值;第四和第五個(gè)字程序代碼的入口點(diǎn)(即加載以后程序執行的首地址);接著(zhù)是第一段代碼的長(cháng)度以及它的目的地址;緊跟著(zhù)是另一段代碼;依此類(lèi)推,最后是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

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

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

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

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

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

●將各個(gè)段配置到目標系統的存儲器;

●對各個(gè)符號和段進(jìn)行重新定位,并給它們指定一個(gè)最終的地址;

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

例:Lnk500 radar.cmd-o radar.out

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

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>