<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TMS320VC5402外部并行引導(dǎo)裝載方法的研究

          TMS320VC5402外部并行引導(dǎo)裝載方法的研究

          作者: 時間:2007-03-09 來源:網(wǎng)絡(luò) 收藏
          [b] 摘要:分析了TMS320VC5402 DSP的引導(dǎo)裝載過程,給出了兩個外部并行引導(dǎo)裝載的典型電路。針對這兩個電路設(shè)計了可脫離Flash燒寫器的仿真器在線編程裝載方法,并得到了實驗驗證。 關(guān)鍵詞:DSP引導(dǎo)裝載 在線編程裝載 虛擬擴展程序空間 DSP 所謂引導(dǎo)方式就是指單片機(MCU)系統(tǒng)復(fù)位時,其系統(tǒng)軟件代碼所取得的方式。對于單片機來說,它使用復(fù)位矢量方式從程序空間的固定地址處開始取得指令代碼。如果所需代碼來自程序空間外部,則引導(dǎo)過程無法進行。TMS320VC5402 DSP內(nèi)部ROM中的引導(dǎo)裝載程序Bootloader使系統(tǒng)上電后能自動將程序代碼從外部如Flash、Eprom、主機引導(dǎo)裝載到DSP內(nèi)部或者外部程序存儲器中脫機運行。這樣的設(shè)計有三個突出點:一是程序代碼可以存儲在片外相對慢速、非易失性器件中,而裝載運行于高速器件;二是提供多種裝載方式,使得DSP可以靈活應(yīng)用到不同系統(tǒng);三是省去對DSP片內(nèi)ROM進行掩膜編程操作,節(jié)省大量費用。 引導(dǎo)裝載程序根據(jù)不同的系統(tǒng)要求提供了多種裝載模式,主要包括并行I/O口引導(dǎo)裝載、串行口引導(dǎo)裝載、HPI引導(dǎo)裝載、外部并行引導(dǎo)裝載等模式,并且兼容8位和16位字引導(dǎo)裝載方式。 1 引導(dǎo)裝載程序分析 TMS320VC5402內(nèi)部4K字的ROM程序位于0xF000~0xFFFF程序空間,包括引導(dǎo)裝載程序、μ律和A律擴充表、正弦對照表、工廠測試碼和中斷向量表。其中,引導(dǎo)裝載程序位于0xF800~0xFBFF空間。復(fù)位時,如果TMS320VC5402處在微計算機方式MP/MC=0,則片內(nèi)ROM中的引導(dǎo)裝載程序就會被執(zhí)行。引導(dǎo)裝載程序在決定采用何種裝載模式之前,首先對CPU狀態(tài)寄存器進行初始化。初始化工作包括:禁止可屏蔽中斷INTM=1,內(nèi)部DARAM映射到程序/數(shù)據(jù)區(qū)OVLY=1,對程序和數(shù)據(jù)區(qū)均設(shè)置為7個等待狀態(tài)。初始化完成后,引導(dǎo)裝載程序執(zhí)行裝載模式判斷。判斷的順序是:HPI模式、SPI模式、外部并行模式、標準串口模式、并行I/O模式。圖1說明了整個裝載模式的判斷流程。圖1 引導(dǎo)裝載模式選擇流程2 外部并行裝載電路的設(shè)計 由圖1可知,外部并行裝載時引導(dǎo)裝載程序先讀I/O空間FFFFh,判斷是否是有效的并行裝載模式;如果FFFFh處為非有效值,則讀數(shù)據(jù)空間FFFFh,判斷是否是有效的并行裝載模式。對于外部并行裝載,要求裝載時Flash位于數(shù)據(jù)空間。下面給出兩種實際應(yīng)用過的并行裝載電路,如圖2所示。 圖2(a)適用于程序運行時不要求大數(shù)據(jù)空間的系統(tǒng)。若對DS(數(shù)據(jù)空間選擇)信號與A15地址線譯碼,Flash占用數(shù)據(jù)空間的8000h~FFFFh共32K空間,因此程序代碼的存儲區(qū)大小不能超過32K。當然,若對A15、A14與DS譯碼,Flash也可將整個片外48K的數(shù)據(jù)空間作為程序代碼的存放區(qū)。 圖2(b)將Flash分為16頁,每頁64K,Flash的片選信號CE利用DSP的A16~A19、通用I/O引腳XF以及程序/數(shù)據(jù)空間選擇DS/PS信號譯碼獲得。圖2b所示系統(tǒng)上電后,XF=1,譯碼后Flash的0頁映射到數(shù)據(jù)空間,此時引導(dǎo)裝載程序可利用它正確裝載;裝載完畢后,DSP從程序代碼的入口地址開始執(zhí)行,此時DSP設(shè)置XF=1,DSP利用內(nèi)部DARAM或者外部SRAM作為程序和數(shù)據(jù)空間存儲器,Flash的0頁被屏蔽而無法再操作,Flash的1~15頁作為DSP擴展程序存儲器使用。這樣設(shè)計系統(tǒng)電路有如下好處:由于裝載時與系統(tǒng)程序運行時數(shù)據(jù)空間的物理存儲器分離,系統(tǒng)程序可利用全部64K的數(shù)據(jù)空間;程序運行時程序代碼存儲器被屏蔽,保證了裝載程序的安全性;擴展程序空間可作為數(shù)據(jù)暫存或永久存儲空間,滿足了數(shù)據(jù)處理系統(tǒng)的要求。當然,也可使用單片64K的Flash作為程序代碼存儲器,以SRAM作為程序擴展空間存儲器。圖2 外部并行裝載典型電路3 外部并行裝載的仿真器在線編程 DSP引導(dǎo)裝載程序從外部數(shù)據(jù)存儲器(Flash)中讀取引導(dǎo)裝載表,并且裝載程序代碼到DSP片內(nèi)或片外程序存儲器。Flash中存儲的是引導(dǎo)裝載表。它的結(jié)構(gòu)如表1所示。要使用TMS320VC5402的引導(dǎo)裝載功能,必須利用Hex轉(zhuǎn)換工具生成一個如表1所示結(jié)構(gòu)的包含引導(dǎo)裝載操作所需的全部數(shù)據(jù)項的引導(dǎo)裝載表。表中第一個字08AAh/10AAh代表8/16位并行裝載模式。表1 引導(dǎo)裝載表結(jié)構(gòu) 08AAh或者10AAhSWWSR寄存器初始化值BSCR寄存初始化值程序入口地址XPC程序入口地址指(PC)第一程序塊大小第一個程序塊目標地址XPC第一個程序塊目標地址指針程序代碼1……程序代碼N最后程序塊大小最后程序塊目標地址XPC最后程序塊目標地址指針程序代碼1……程序代碼N代碼結(jié)束標志0000h 通常的DSP獨立系統(tǒng)都需要利用Flash燒寫器將引導(dǎo)裝載表寫入Flash中,對于采用表貼封裝的Flash器件,燒寫器無法寫入數(shù)據(jù)。為了解決這個問題,采用仿真器在線編程方式將引導(dǎo)裝載表數(shù)據(jù)寫入Flash,它具有節(jié)約開發(fā)成本、減小器件尺寸、編程靈活的特點。 對于圖2a所示的系統(tǒng),在仿真器仿真狀態(tài)下,將引導(dǎo)裝載表讀入DSP數(shù)據(jù)區(qū)的0000h~7FFFh空間,然后使用Flash在線編程方法將數(shù)據(jù)寫入Flash中,最后在Flash的FFFFh處寫入引導(dǎo)裝載表在Flash中的起始地址。編程完畢,復(fù)位系統(tǒng)即可實現(xiàn)裝載過程。 對于圖2(b)所示的系統(tǒng),仿真器在線編程則要復(fù)雜得多。由于在仿真狀態(tài)下,程序空間與Flash的0頁空間重疊,Flash的0頁被屏蔽,程序無法操作到Flash的存儲空間。為此,程序?qū)ⅲ疲欤幔螅璧模绊摽臻g作為“虛擬擴展程序空間”,以便程序?qū)懭胍龑?dǎo)裝載表。具體實現(xiàn)過程是:設(shè)置外部控制信號=1,此時譯碼電路將A18地址線信號取反,虛擬擴展程序空間開放。Flash的0頁空間虛擬成為擴展程序空間的040000h~04FFFFh空間。這樣,仿真器在線編程040000h~04FFFFh空間即相當于對Flash的0頁編程。編程完畢后,設(shè)置外部控制信號=0,復(fù)位系統(tǒng)后即可實現(xiàn)裝載過程。 本文分析了TMS320VC5402的引導(dǎo)裝載程序的裝載過程,給出了兩個經(jīng)常使用的外部并行裝載典型電路。針對兩個典型電路設(shè)計了仿真器在線編程裝載方法。利用此方法實現(xiàn)了一個以128K%26;#215;16bit的SRAM作為程序和數(shù)據(jù)空間,以1M%26;#215;16bit的Flash作為擴展程序空間和系統(tǒng)程序代碼存儲器的系統(tǒng)。該系統(tǒng)無需Flash燒寫器進行Flash數(shù)據(jù)寫入,并且完全利用了TMS320VC5402的全部存儲空間,充分發(fā)揮了DSP的效能。 [/b]

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();