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