|
1.在RESET后,將FLASH譯碼在數(shù)據(jù)區(qū),RAM放在程序區(qū),片內(nèi)BOOT程序?qū)⒊绦駼OOT到RAM中。 2.用戶初試化程序發(fā)出一個I/O命令(如XF),將FLASH譯碼到程序區(qū)的高地址。開放數(shù)據(jù)區(qū)用于其它的RAM。 3.用戶初試化程序中包括第二次BOOT程序(此程序必須用戶自己編寫),將FLASH中沒有BOOT的其它代碼搬移到RAM中。 4.開始運行用戶處理程序。
三十四.DSP外接存儲器的控制方式 對于一般的存儲器具有RD、WR和CS等控制信號,許多DSP(C3x、C5000)都沒有控制信號直接連接存儲器,一般采用的方式如下: 1.CS有地址線和PS、DS或STRB譯碼產(chǎn)生; 2./RD=/STRB+/R/W; 3./WR=/STRB+R/W。
三十五.GEL文件的功能? GEL文件的功能同emuinit.cmd的功能基本相同,用于初始化DSP。但它的功能比emuinit的功能有所增強,GEL在CCS下有一個菜單,可以根據(jù)DSP的對象不同,設置不同的初始化程序。以TMS320LF2407為例: #define SCSR1 0x7018 ;定義scsr1寄存器 #define SCSR2 0X7019 ;定義scsr2寄存器 #define WDKEY 0x7025 ;定義wdkey寄存器 #define WDNTR 0x7029 ;定義wdntr寄存器 StartUp() ; 開始函數(shù) { GEL_MapReset(); ; 存儲空間復位 GEL_MapAdd(0x0000,0,0x7fff,1,1); 定義程序空間從0000-7fff 可讀寫 GEL_MapAdd(0x8000,0,0x7000,1,1); 定義程序空間從8000-f000 可讀寫 GEL_MapAdd(0x0000,1,0x10000,1,1); 定義數(shù)據(jù)空間從0000-10000可讀寫 GEL_MapAdd(0xffff,2,1,1,1); 定義i/o 空間0xffff可讀寫 GEL_MapOn(); 存儲空間打開 GEL_MemoryFill(0xffff,2,1,0x40); 在i/o空間添入數(shù)值40h *(int *)SCSR1=0x0200; 給scsr1寄存器賦值 *(int *)SCSR2=0x000C; 給scsr2寄存器賦值,在這里可以進行mp/mc方式的轉(zhuǎn)換 *(int *)WDNTR=0x006f; 給wdntr寄存器賦值 *(int *)WDKEY=0x055; 給wdkey寄存器賦值 *(int *)WDKEY=0x0AA; 給wdkey寄存器賦值 }
三十六.使用TI公司模擬器件與DSP結合使用的好處。 1)在使用TI公司的DSP的同時,使用TI公司的模擬可以和DSP進行無縫連接。器件與器件之間不需要任何的連接或轉(zhuǎn)接器件。這樣即減少了板卡的尺寸,也降低了開發(fā)難度。 2)同為TI公司的產(chǎn)品,很多器件可以固定搭配使用。少了器件選型的煩惱 3)TI在CCS中提供插件,可以用于DSP和模擬器件的開發(fā),非常方便。
三十七.C語言中可以嵌套匯編語言? 可以。在ANSI C標準中的標準用法就是用C語言編寫主程序,用匯編語言編寫子程序,中斷服務程序,一些算法,然后用C語言調(diào)用這些匯編程序,這樣效率會相對比較高
三十八.在定點DSP系統(tǒng)中可否實現(xiàn)浮點運算? 當然可以,因為DSP都可以用C,只要是可以使用c語言的場合都可以實現(xiàn)浮點運算。
三十九.JTAG頭的使用會遇到哪些情況? 1)DSP的CLKOUT沒有輸出,工作不正常。 2)Emu0,Emu1需要上拉。 3)TCK的頻率應該為10M。 4)在3.3V DSP中,PD腳為3.3V 供電,但是仿真器上需要5V電壓供電,所以PP仿真器盒上需要單獨供電。 4)仿真多片DSP。在使用菊花鏈的時候,第一片DSP的TDO接到第二片DSP的TDI即可。注意當串聯(lián)DSP比較多的時候,信號線要適當?shù)脑黾域?qū)動。
四十.include頭文件(.h)的主要作用 頭文件,一般用于定義程序中的函數(shù)、參數(shù)、變量和一些宏單元,同庫函數(shù)配合使用。因此,在使用庫時,必須用相應的頭文件說明。
四十一.DSP中斷向量的位置 1)2000系列dsp的中斷向量只能從0000H處開始。所以在我們調(diào)試程序的時候,要把DSP選擇為MP(微處理器方式),把片內(nèi)的Flash屏蔽掉,免去每次更改程序都要重新燒寫Flash工作。 2)3x系列dsp的中斷向量也只能在固定的地址。 3)5000,6000系列dsp的中斷向量可以重新定位。但是它只能被重新定位到Page0范圍內(nèi)的任何空間。
四十二.有源晶振與晶體的區(qū)別,應用范圍及用法 1)晶體需要用DSP片內(nèi)的振蕩器,在datasheet上有建議的連接方法。晶體沒有電壓的問題,可以適應于任何DSP,建議用晶體。 2)有源晶振不需要DSP的內(nèi)部振蕩器,信號比較穩(wěn)定。有源晶振用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。
四十三.程序經(jīng)常跑飛的原因 1)程序沒有結尾或不是循環(huán)的程序。 2)nmi管腳沒有上拉。 3)在看門狗動作的時候程序會經(jīng)常跑飛。 4)程序編制不當也會引起程序跑飛。 5)硬件系統(tǒng)有問題。
四十四.并行FLASH引導的一點經(jīng)驗 最近BBS上關于FLASH和BOOT的討論很活躍,我也多次來此請教。前幾天自制的DSP板引導成功,早就打算寫寫這方面的東西。我用的DSP是5416,以其為核心,做了一個相對獨立的子系統(tǒng)(硬件、軟件、算法),目前都已基本做好。 下面把在FLASH引導方面做的工作向大家匯報一下,希望能對大家有所幫助。本人經(jīng)驗和文筆都有限,寫的不好請大家諒解。 硬件環(huán)境: DSP:TMS320VC5416PGE160 FLASH:SST39VF400A-70-4C-EK 都是貼片的,F(xiàn)LASH映射在DSP數(shù)據(jù)空間的0x8000-0xFFFF 軟件環(huán)境: CCS v2.12.01 主程序(要燒入FLASH的程序): DEBUG版,程序占用空間0x28000-0x2FFFF(片內(nèi)SARAM),中斷向量表在0x0080-0x00FF(片內(nèi)DARAM),數(shù)據(jù)空間使用0x0100-0x7FFF(片內(nèi)DARAM)。 因為FLASH是貼片的,所以需要自己編一個數(shù)據(jù)搬移程序,把要主程序搬移到FLASH中。在寫入FLASH數(shù)據(jù)時,還應寫入引導表的格式數(shù)據(jù)。最后在數(shù)據(jù)空間的0xFFFF處寫入引導表的起始地址(這里為0x8000)。
|