基于DSP TMS320F206的仿真調試
TMS320F206(以下簡(jiǎn)稱(chēng)F206)是C2XX系列DSP中的一個(gè)產(chǎn)品,其獨有的片內32KB的閃速存儲器FLASH使其仿真調試與眾不同。F206帶有程序、數據和I/O三個(gè)相互獨立的存儲空間,每個(gè)存儲空間均為64K×16位,其中片內雙訪(fǎng)問(wèn)RAM為544字(288字用于數據,另256字可用于程序/數據),片內FLASH為32K字,片內單訪(fǎng)問(wèn)RAM為4.5K字,其具體分布如表1所示。
F206的仿真調試
● F206仿真調試的特點(diǎn)
F206的仿真調試器沒(méi)有采用傳統的插入仿真的方法,而是通過(guò)仿真器與DSP芯片上的幾個(gè)仿真引腳間通信實(shí)現,F206具有符合IEEE1149.1標準的JTAG邏輯掃描電路,掃描仿真不僅克服了因仿真電纜過(guò)長(cháng)而引起的信號失真,而且克服了傳統單片機“插入式”仿真方式脫機運行時(shí)就出錯的缺點(diǎn)。利用聞亭公司生產(chǎn)的EPP_XDS510仿真器進(jìn)行系統的在線(xiàn)仿真調試,其一端與計算機的并口相連,另一端通過(guò)一雙列14腳的仿真插頭與F206通信。
● 問(wèn)題的提出
如果所要進(jìn)行仿真的硬件裝置沒(méi)有外部存儲器,此種情況下如何實(shí)現仿真呢?若將程序完全定位至8000H開(kāi)始的片上SARAM內,則與F206中斷向量表應該定位至0000H相矛盾,從而中斷進(jìn)一步程序將不可能正確運行;若將程序完全定位至0000H開(kāi)始的FLASH內,雖保證了中斷進(jìn)一步程序可以正確運行,但是由于在FLASH內無(wú)法設置斷點(diǎn),所以此種情況下不能順利進(jìn)行仿真調試;若將中斷向量表定位至0000H的FLASH內,將程序的其他部分定位至8000H內,可以保證中斷進(jìn)一步程序的正確執行,也可以在SARAM內設置斷點(diǎn),似乎是一種可行的方法,但是程序每改動(dòng)一點(diǎn),也就意味著(zhù)中斷向量表也要做相應的修改,即要再次將中斷向量表燒寫(xiě)到FLASH內,不僅麻煩而且對FLASH也有損傷。
● 問(wèn)題的解決
針對以上種種方案存在的弊端,筆者提出了一種行之有效的解決辦法,那就是將中斷向量表和程序都定位至8000H開(kāi)始的SARAM內,而在0000H燒寫(xiě)進(jìn)一定的跳轉語(yǔ)句,這樣既保證了中斷的正確執行,程序斷點(diǎn)的調試,同時(shí)對FLASH也只要進(jìn)行一次燒寫(xiě)即可。
首先完成跳轉語(yǔ)句的燒寫(xiě)。F206的FLASH燒寫(xiě)必須具備如下幾個(gè)前提:FLASH燒寫(xiě)工作只能在WIN98操作系統下完成,在WIN2000操作系統下將會(huì )顯示窗口初始化失敗,被強行關(guān)閉;時(shí)鐘頻率必須為20MHz。
相應的CMD文件為:
MEMORY
{ PAGE 0: VECB :org= 0000h,length=40h
......
PAGE 1:
......
}
SECTIONS
{ vectorb : {} > VECB PAGE 0
......
}
相應的vectorb的程序為如下。
*File: vectorb.h *
*File defines Interrupt vector labels *
.global _c_int0
.global _c_int1
.global _c_int2
.global _c_int3
.sect vectorb
b 8000h ;硬件復位c_int0
b 8002h ;外部中斷1 /INT1
b 8004h ;外部中斷2 INT2/INT3
b 8006h ;定時(shí)器中斷
nop
nop
b 8000h
b 8000h ;保留
b 8000h ;保留
b 8000h ;保留
nop
nop
b 8000h
b 8000h
b 8000h
b 8000h
假設燒寫(xiě)程序在E:LOADEPP目錄下,則將上述工程編譯并建立形成的TZ.OUT文件也復制到同樣的E:LOADEPP目錄下,然后執行如下燒寫(xiě)語(yǔ)句。
評論