}html
14。如何將OUT文件轉換爲16進制的文件格式?
DSP 的開發軟件集成了一個程序,能夠從執行文件OUT轉換到編程器能夠接受的格式,使得編程器能夠用次文件燒寫EPROM或Flash。對於C2000的程序爲DSPHEX;對於C3x程序爲HEX30;對於C54x程序爲HEX500;對於C55x程序爲HEX55;對於C6x程序爲Hex6x。以C32爲例基本格式爲:
sample.out -x
-memwidth 8 -bootorg 900000h
-iostrb 0h
-strb0 03f0000h -strb1 01f0000h -o sample.hex
ROMS {
EPROM: org = 0x900000,len=0x02000,romwidth=8
}
SECTIONS {
.text: paddr=boot
.data: paddr=boot
}
15。爲何CCS須要安裝Driver?
CCS是開放的軟件平臺,它能夠支持不一樣的硬件接口,所以不一樣的硬件接口必須經過標準的Driver同CCS鏈接。
16。Link的cmd文件的做用是什麼?
Link的cmd文件用於DSP代碼的定位。因爲DSP的編譯器的編譯結果是未定位的,DSP沒有操做系統來定位執行代碼,每一個客戶設計的DSP系統的配置也不盡相同,所以須要用戶本身定義代碼的安裝位置。以C5000爲例,基本格式爲:
-o sample.out
-m sample.map
-stack 100
sample.obj meminit.obj
-l rts.lib
MEMORY {
PAGE 0: VECT: origin = 0xff80, length 0x80
PAGE 0: PROG: origin = 0x2000, length 0x400
PAGE 1: DATA: origin = 0x800, length 0x400
}
SECTIONS {
.vectors : {} >PROG PAGE 0
.text : {} >PROG PAGE 0
.data : {} >PROG PAGE 0
.cinit : {} >PROG PAGE 0
.bss : {} >DATA PAGE 1
}
17。DSP的C語言同主機C語言的主要區別?
1) DSP的C語言是標準的ANSI C,它不包括同外設聯繫的擴展部分,如屏幕繪圖等。但在CCS中,爲了方便調試,能夠將數據經過prinf命令虛擬輸出到主機的屏幕上。
2)DSP的C語言的編譯過程爲,C編譯爲ASM,再由ASM編譯爲OBJ。所以C和ASM的對應關係很是明確,很是便於人工優化。
3)DSP的代碼須要絕對定位;主機的C的代碼有操做系統定位。
4)DSP的C的效率較高,很是適合於嵌入系統。
18。爲何在CCS下編譯工具工做不正常?
在CCS下有部分客戶會碰到編譯工具工做不正常,常見錯誤爲:
1)autoexec.bat的路徑「out of memory」。修改autoexec.bat,清除無用的PATH路徑。
2)編譯的輸出文件(OUT文件)寫保護,沒法覆蓋。刪除或修改輸出文件的屬性。
3)Windows有問題。從新安裝windows。
4)Windows下有程序對CCS有影響。建議用一「乾淨」的計算機。
19。在CCS下,如何選擇有效的存儲器空間?
CCS下的存儲器空間最好設置同你的硬件,沒有的存儲器不要有效。這樣便於調試,CCS會發現你調入程序時或程序運行時,是否訪問了無效地址。
1)在GEL文件中設置。參見CCS中的示例。
2)在Option菜單下,選擇Memory Map選項,根據你的硬件設置。注意必定要將Enable Memory Mapping置爲使能。
20。在CCS下,OUT文件加載時提示「Data verification failed...」的緣由?
Link的CMD文件分配的地址同GEL或設置的有效地址空間不符。中斷向量定位處或其它代碼、數據段定位處,沒有RAM,沒法加載OUT文件。解決方法:
1)調整Link的CMD文件,使得定位段處有RAM。
2)調整存儲器設置,使得RAM區有效。
21。爲何要使用BIOS?
1)BIOS是Basic I/O System的簡稱,是基本的輸入、輸出管理。
2)用於管理任務的調度,程序實時分析,中斷管理,跟蹤管理和實時數據交換。
3)BIOS是基本的實時系統,使用BIOS能夠方便地實現多任務、多進程的時間管理。
4)BIOS是eXpress DSP的標準平臺,要使用eXpress DSP技術,必須使用BIOS。
22。DSP發展動態
1.TMS320C2000 TMS320C2000系列包括C24x和C28x系列。C24x系列建議使用LF24xx系列替代C24x系列,LF24xx系列的價格比C24x便宜,性能高於C24x,並且LF24xxA具備加密功能。 C28x系列主要用於大存儲設備管理,高性能的控制場合。
2.TMS320C3x TMS320C3x系列包括C3x和VC33,主要推薦使用VC33。C3x系列是TI浮點DSP的基礎,不可能停產,但價格不會進一步下調。
3.TMS320C5x TMS320C5x系列已不推薦使用,建議使用C24x或C5000系列替代。
4.TMS320C5000 TMS320C5000系列包括C54x和C55x系列。其中VC54xx還不斷有新的器件出現,如:TMS320VC5471(DSP+ARM7)。 C55x系列是TI的第三代DSP,功耗爲VC54xx的1/6,性能爲VC54xx的5倍,是一個正在發展的系列。 C5000系列是目前TI DSP的主流DSP,它涵蓋了從低檔到中高檔的應用領域,目前也是用戶最多的系列。
5.TMS320C6000 TMS320C6000系列包括C62xx、C67xx和C64xx。此係列是TI的高檔DSP系列。其中C62xx系列是定點的DSP,系列芯片種類較豐富,是主要的應用系列。 C67xx系列是浮點的DSP,用於須要高速浮點處理的領域。 C64xx系列是新發展,性能是C62xx的10倍。
6.OMAP系列 是TI專門用於多媒體領域的芯片,它是C55+ARM9,性能卓越,很是適合於手持設備、Internet終端等多媒體應用。
23。5V/3.3V如何混接?
TI DSP的發展同集成電路的發展同樣,新的DSP都是3.3V的,但目前還有許多外圍電路是5V的,所以在DSP系統中,常常有5V和3.3V的DSP混接問題。在這些系統中,應注意:
1)DSP輸出給5V的電路(如D/A),無需加任何緩衝電路,能夠直接鏈接。
2)DSP輸入5V的信號(如A/D),因爲輸入信號的電壓>4V,超過了DSP的電源電壓,DSP的外部信號沒有保護電路,須要加緩衝,如 74LVC245等,將5V信號變換成3.3V的信號。
3)仿真器的JTAG口的信號也必須爲3.3V,不然有可能損壞DSP。
24。爲何要片內RAM大的DSP效率高?
目前DSP發展的片內存儲器RAM愈來愈大,要設計高效的DSP系統,就應該選擇片內RAM較大的DSP。片內RAM同片外存儲器相比,有如下優勢:
1)片內RAM的速度較快,能夠保證DSP無等待運行。
2)對於C2000/C3x/C5000系列,部分片內存儲器能夠在一個指令週期內訪問兩次,使得指令能夠更加高效。
3)片內RAM運行穩定,不受外部的干擾影響,也不會干擾外部。
4)DSP片內多總線,在訪問片內RAM時,不會影響其它總線的訪問,效率較高。
25。爲何DSP從5V發展成3.3V?
超大規模集成電路的發展從1um,發展到目前的0.1um,芯片的電源電壓也隨之下降,功耗也隨之下降。DSP也一樣從5V發展到目前的 3.3V,核心電壓發展到1V。目前主流的DSP的外圍均已發展爲3.3V,5V的DSP的價格和功耗都價格,以逐漸被3.3V的DSP取代。
26。如何選擇DSP的電源芯片?
TMS320LF24xx:TPS7333QD,5V變3.3V,最大500mA。
TMS320VC33: TPS73HD318PWP,5V變3.3V和1.8V,最大750mA。
TMS320VC54xx:TPS73HD318PWP,5V變3.3V和1.8V,最大750mA; TPS73HD301PWP,5V變3.3V和可調,最大750mA。
TMS320VC55xx:TPS73HD301PWP,5V變3.3V和可調,最大750mA。
TMS320C6000: PT6931,TPS56000,最大3A。
27。軟件等待的如何使用?
DSP的指令週期較快,訪問慢速存儲器或外設時需加入等待。等待分硬件等待和軟件等待,每個系列的等待不徹底相同。
1)對於C2000系列: 硬件等待信號爲READY,高電平時不等待。 軟件等待由WSGR寄存器決定,能夠加入最多7個等待。其中程序存儲器和數據存儲器及I/O能夠分別設置。
2)對於C3x系列: 硬件等待信號爲/RDY,低電平是不等待。 軟件等待由總線控制寄存器中的SWW和WTCNY決定,能夠加入最多7個等待,但等待是不分段的,除了片內以外全空間有效。
3)對於C5000系列: 硬件等待信號爲READY,高電平時不等待。 軟件等待由SWWCR和SWWSR寄存器決定,能夠加入最多14個等待。其中程序存儲器、控制程序存儲器和數據存儲器及I/O能夠分別設置。
4)對於C6000系列(只限於非同步存儲器或外設): 硬件等待信號爲ARDY,高電平時不等待。 軟件等待由外部存儲器接口控制寄存器決定,總線訪問外部存儲器或設備的時序能夠設置,能夠方便的同異步的存儲器或外設接口。
28。中斷向量爲何要重定位?
爲了方便DSP存儲器的配置,通常DSP的中斷向量能夠從新定位,便可以經過設置寄存器放在存儲器空間的任何地方。 注意:C2000的中斷向量不能重定位。
29。DSP的最高主頻能從芯片型號中得到嗎?
TI的DSP最高主頻能夠從芯片的型號中得到,但每個系列不必定相同。
1)TMS320C2000系列:
TMS320F206-最高主頻20MHz。
TMS320C203/C206-最高主頻40MHz。
TMS320F24x-最高主頻20MHz。
TMS320LF24xx-最高主頻30MHz。
TMS320LF24xxA-最高主頻40MHz。
TMS320LF28xx-最高主頻150MHz。
2)TMS320C3x系列:
TMS320C30:最高主頻25MHz。
TMS320C31PQL80:最高主頻40MHz。
TMS320C32PCM60:最高主頻30MHz。
TMS320VC33PGE150:最高主頻75MHz。
3)TMS320C5000系列:
TMS320VC54xx:最高主頻160MHz。
TMS320VC55xx:最高主頻300MHz。
4)TMS320C6000系列:
TMS320C62xx:最高主頻300MHz。
TMS320C67xx:最高主頻230MHz。
TMS320C64xx:最高主頻720MHz。
30。DSP能夠降頻使用嗎?
能夠,DSP的主頻均有必定的工做範圍,所以DSP都可以降頻使用。
31。如何選擇DSP的外部存儲器?
DSP的速度較快,爲了保證DSP的運行速度,外部存儲器須要具備必定的速度,不然DSP訪問外部存儲器時須要加入等待週期。
1)對於C2000系列: C2000系列只能同異步的存儲器直接相接。 C2000系列的DSP目前的最高速度爲150MHz。建議能夠用的存儲器有:
CY7C199-15:32K×8,15ns,5V;
CY7C1021-12:64K×16,15ns,5V; CY7C1021V33-12:64K×16,15ns,3.3V。
2)對於C3x系列: C3x系列只能同異步的存儲器直接相接。 C3x系列的DSP的最高速度,5V的爲40MHz,3.3V的爲75MHz,爲保證DSP無等待運行,分別須要外部存儲器的速度<25ns和<12ns。建議能夠用的存儲器有:
ROM: AM29F400-70:256K×16,70ns,5V,加入一個等待;
AM29LV400-55(SST39VF400):256K×16,55ns,3.3V,加入兩個等待(目前沒有更快的Flash)。
SRAM: CY7C199-15:32K×8,15ns,5V;
CY7C1021-15:64K×16,15ns,5V;
CY7C1009-15:128K×8,15ns,5V;
CY7C1049-15:512K×8,15ns,5V;
CY7C1021V33-15:64K×16,15ns,3.3V;
CY7C1009V33-15:128K×8,15ns,3.3V;
CY7C1041V33-15:256k×16,15ns,3.3V。
3)對於C54x系列: C54x系列只能同異步的存儲器直接相接。 C54x系列的DSP的速度爲100MHz或160MHz,爲保證DSP無等待運行,須要外部存儲器的速度<10ns或<6ns。建議能夠用的存儲器有:
ROM: AM29LV400-55(SST39VF400):256K×16,55ns,3.3V,加入5或9個等待(目前沒有更快的Flash)。
SRAM: CY7C1021V33-12:64K×16,12ns,3.3V,加入一個等待;
CY7C1009V33-12:128K×8,12ns,3.3V,加入一個等待。
4)對於C55x和C6000系列: TI的DSP中只有C55x和C6000能夠同同步的存儲器相連,同步存儲器能夠保證系統的數據交換效率更高。
ROM: AM29LV400-55(SST39VF400):256K×16,55ns,3.3V。
SDRAM: HY57V651620BTC-10S:64M,10ns。
SBSRAM: CY7C1329-133AC,64k×32;
CY7C1339-133AC,128k×32。
ios
FIFO:CY7C42x5V-10ASC,32k/64k×18。算法
32。DSP芯片有多大的驅動能力?
DSP的驅動能力較強,能夠不加驅動,鏈接8個以上標準TTL門。
33。調試TMS320C2000系列的常見問題?
1)單步能夠運行,連續運行時總回0地址: Watchdog沒有關,連續運行復位DSP回到0地址。
2)OUT文件不能load到片內flash中: Flash不是RAM,不能用簡單的寫指令寫入,須要專門的程序寫入。CCS和C Source Debuggerload命令,不能對flash寫入。 OUT文件只能load到片內RAM,或片外RAM中。
3)在flash中如何加入斷點: 在flash中能夠用單步調試,也能夠用硬件斷點的方法在flash中加入斷點,軟件斷點是不能加在ROM中的。硬件斷點,設置存儲器的地址,當訪問該地址時產生中斷。
4)中斷向量: C2000的中斷向量不可重定位,所以中斷向量必須放在0地址開始的flash內。在調試系統時,代碼放在RAM中,中斷向量也必須放在flash內。
34。調試TMS320C3x系列的常見問題?
1)TMS320C32的存儲器配置: TMS320C32的程序存儲器能夠配置爲16位或32位;數據存儲器能夠配置爲8位、16位或32位。
2)TMS320VC33的PLL控制: TMS320VC33的PLL控制端只能接1.8V,不能接3.3V或5V。
35。如何調試多片DSP?
對於有MPSD仿真口的DSP(TMS320C30/C31/C32),不能用一套仿真器同時調試,每次只能調試其中的一個DSP;對於有JTAG仿真口的DSP,能夠將JTAG串接在一塊兒,用一套仿真器同時調試多個DSP,每一個DSP能夠用不一樣的名字,在不一樣的窗口中調試。注意:若是在JTAG和DSP間加入驅動,必定要用快速的門電路,不能使用如LS的慢速門電路。
36。在DSP系統中爲何要使用CPLD?
DSP的速度較快,要求譯碼的速度也必須較快。利用小規模邏輯器件譯碼的方式,已不能知足DSP系統的要求。同時,DSP系統中也常常須要外部快速部件的配合,這些部件每每是專門的電路,有可編程器件實現。 CPLD的時序嚴格,速度較快,可編程性好,很是適合於實現譯碼和專門電路。
37。DSP系統構成的經常使用芯片有哪些?
1)電源: TPS73HD3xx,TPS7333,TPS56100,PT64xx...
2)Flash: AM29F400,AM29LV400,SST39VF400...
3)SRAM: CY7C1021,CY7C1009,CY7C1049...
4)FIFO: CY7C425,CY7C42x5...
5)Dual port: CY7C136,CY7C133,CY7C1342...
6)SBSRAM: CY7C1329,CY7C1339...
7)SDRAM: HY57V651620BTC...
8)CPLD: CY37000系列,CY38000系列,CY39000系列...
9)PCI: PCI2040,CY7C09449...
10)USB: AN21xx,CY7C68xxx...
11)Codec:TLV320AIC23,TLV320AIC10...
12)A/D,D/A:ADS7805,TLV2543...
38。什麼是boot loader?
DSP的速度儘快,EPROM或flash的速度較慢,而DSP片內的RAM很快,片外的RAM也較快。爲了使DSP充分發揮它的能力,必須將程序代碼放在RAM中運行。爲了方便的將代碼從ROM中搬到RAM中,在不帶flash的DSP中,TI在出廠時固化了一段程序,在上電後完成從ROM或外設將代碼搬到用戶指定的RAM中。此段程序稱爲「boot loader」。
38。TMS320C3x如何boot?
在MC/MP管腳爲高時,C3x進入boot狀態。C3x的boot loader在reset時,判斷外部中斷管腳的電平。根據中斷配置決定boot的方式爲存儲器加載仍是串口加載,其中ROM的地址能夠爲三個中的一個,ROM能夠爲8位。
39。Boot有問題如何解決?
1)仔細檢查boot的控制字是否正確。
2)仔細檢查外部管腳設置是否正確。
3)仔細檢查hex文件是否轉換正確。
4)用仿真器跟蹤boot過程,分析錯誤緣由。
40。DSP爲何要初始化?
DSP在RESET後,許多的寄存器的初值通常同用戶的要求不一致,例如:等待寄存器,SP,中判定位寄存器等,須要經過初始化程序設置爲用戶要求的數值。 初始化程序的主要做用:
1)設置寄存器初值。
2)創建中斷向量表。
3)外圍部件初始化。
41。DSP有哪些數學庫及其它應用軟件?
TI公司爲了方便客戶開發DSP,在它的網站上提供了許多程序的示例和應用程序,如MATH庫,FFT,FIR/IIR等,能夠在TI的網頁免費下載。
42。如何得到DSP專用算法?
TI有許多的Third Party能夠經過DSP上的多種算法軟件。能夠經過TI的網頁搜索你所需的算法,找到經過算法的公司,同相應的公司聯繫。注意這些算法都是要付費的。
43。eXpressDSP是什麼?
eXpressDSP是一種實時DSP軟件技術,它是一種DSP編程的標準,利用它能夠加快你開發DSP軟件的速度。以往DSP軟件的開發沒有任何標準,不一樣的人寫的程序通常沒法鏈接在一塊兒。DSP軟件的調試工具也很是不方便。使得DSP軟件的開發每每滯後於硬件的開發。 eXpressDSP集成了CCS(Code Composer Studio)開發平臺,DSP BIOS實時軟件平臺,DSP算法標準和第三方支持四部分。利用該技術,可使你的軟件調試,軟件進程管理,軟件的互通及算法的得到,都便的容易。這樣就能夠加快你的軟件開發進程。
1)CCS是eXpressDSP的基礎,所以你必須首先擁有CCS軟件。
2)DSP BIOS是eXpressDSP的基本平臺,你必須學會全部DSP BIOS。
3)DSP算法標準能夠保證你的程序能夠方便的同其它利用eXpressDSP技術的程序鏈接在一塊兒。同時也保證你的程序的延續性。
44。爲何要用DSP?
3G技術和internate的發展,要求處理器的速度愈來愈高,體積愈來愈小,DSP的發展正好能知足這一發展的要求。由於,傳統的其它處理器都有不一樣的缺陷。MCU的速度較慢;CPU體積較大,功耗較高;嵌入CPU的成本較高。 DSP的發展,使得在許多速度要求較高,算法較複雜的場合,取代MCU或其它處理器,而成本有可能更低。
45。如何選擇DSP?
選擇DSP能夠根據如下幾方面決定:
1)速度: DSP速度通常用MIPS或FLOPS表示,即百萬次/秒鐘。根據您對處理速度的要求選擇適合的器件。通常選擇處理速度不要太高,速度高的DSP,系統實現也較困難。
2)精度: DSP芯片分爲定點、浮點處理器,對於運算精度要求很高的處理,可選擇浮點處理器。定點處理器也可完成浮點運算,但精度和速度會有影響。
3)尋址空間: 不一樣系列DSP程序、數據、I/O空間大小不一,與普通MCU不一樣,DSP在一個指令週期內能完成多個操做,因此DSP的指令效率很高,程序空間通常不會有問題,關鍵是數據空間是否知足。數據空間的大小能夠經過DMA的幫助,藉助程序空間擴大。
4)成本: 通常定點DSP的成本會比浮點DSP的要低,速度也較快。要得到低成本的DSP系統,儘可能用定點算法,用定點DSP。
5)實現方便: 浮點DSP的結構實現DSP系統較容易,不用考慮尋址空間的問題,指令對C語言支持的效率也較高。
6)內部部件:根據應用要求,選擇具備特殊部件的DSP。如:C2000適合於電機控制;OMAP適合於多媒體等。
46。DSP同MCU相比的特色?
1)DSP的速度比MCU快,主頻較高。
2)DSP適合於數據處理,數據處理的指令效率較高。
3)DSP均爲16位以上的處理器,不適合於低檔的場合。
4)DSP能夠同時處理的事件較多,系統級成本有可能較低。
5)DSP的靈活性較好,大多數算法均可以軟件實現。
6)DSP的集成度較高,可靠性較好。
47。DSP同嵌入CPU相比的特色?
1)DSP是單片機,構成系統簡單。
2)DSP的速度快。
3)DSP的成本較低。
4)DSP的性能高,能夠處理較多的任務。
48。如何編寫C2000片內Flash?
DSP中的Flash的編寫方法有三中:
1.經過仿真器編寫:在咱們的網頁上有相關的軟件,在銷售仿真器時咱們也提供相關軟件。其中 LF240x的編寫能夠在CCS中加入一個插件,F24x的編寫須要在windows98下的DOS窗中進行。具體步驟見軟件中的readme。有幾點須要注意: a.必須爲MC方式; b.F206的工做頻率必須爲20MHz; c.F240須要根據PLL修改C240_CFG.I文件。建議外部時鐘爲20MHz。 d.LF240x也須要根據PLL修改文件。 d.若是編寫有問題,能夠用BFLWx.BAT修復。
2.提供串口編寫:TI的網頁上有相關軟件。注意只能編寫一次,由於編寫程序會破壞串口通訊程序。
3.在你的程序中編寫:TI的網頁上有相關資料。
49。如何編寫DSP外部的Flash?
DSP的外部Flash編寫方法:
1.經過編程器編寫:將OUT文件經過HEX轉換程序轉換爲編程器能夠接受的格式,再由編程器編寫。
2.經過DSP軟件編寫:您須要根據Flash的說明,編寫Flash的編寫程序,將應用程序和編寫Flash的程序分別load到RAM中,運行編寫程序編寫。
50。對於C5000,大於48K的程序如何BOOT?
對於C5000,片內的BOOT程序在上電後將數據區的內容,搬移到程序區的RAM中,所以FLASH必須在RESET後放在數據區。因爲C5000,數據區的空間有限,一次BOOT的程序不能對於48K。解決的方法以下:
1.在RESET後,將FLASH譯碼在數據區,RAM放在程序區,片內BOOT程序將程序BOOT到RAM中。
2.用戶初試化程序發出一個I/O命令(如XF),將FLASH譯碼到程序區的高地址。開放數據區用於其它的RAM。
3.用戶初試化程序中包括第二次BOOT程序(此程序必須用戶本身編寫),將FLASH中沒有BOOT的其它代碼搬移到RAM中。
4.開始運行用戶處理程序。
51。DSP外接存儲器的控制方式
對於通常的存儲器具備RD、WR和CS等控制信號,許多DSP(C3x、C5000)都沒有控制信號直接鏈接存儲器,通常採用的方式以下:
1.CS有地址線和PS、DS或STRB譯碼產生;
2./RD=/STRB+/R/W; 3./WR=/STRB+R/W。
52。GEL文件的功能?
GEL文件的功能同emuinit.cmd的功能基本相同,用於初始化DSP。但它的功能比emuinit的功能有所加強,GEL在CCS下有一個菜單,能夠根據DSP的對象不一樣,設置不一樣的初始化程序。以TMS320LF2407爲例:
#define SCSR1 0x7018 ;定義scsr1寄存器
#define SCSR2 0X7019 ;定義scsr2寄存器
#define WDKEY 0x7025 ;定義wdkey寄存器
#define WDNTR 0x7029 ;定義wdntr寄存器
StartUp() ; 開始函數
{
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); 定義數據空間從0000-10000可讀寫
GEL_MapAdd(0xffff,2,1,1,1); 定義i/o 空間0xffff可讀寫
GEL_MapOn(); 存儲空間打開
GEL_MemoryFill(0xffff,2,1,0x40); 在i/o空間添入數值40h
*(int *)SCSR1=0x0200; 給scsr1寄存器賦值
*(int *)SCSR2=0x000C; 給scsr2寄存器賦值,在這裏能夠進行mp/mc方式的轉換
*(int *)WDNTR=0x006f; 給wdntr寄存器賦值
*(int *)WDKEY=0x055; 給wdkey寄存器賦值
*(int *)WDKEY=0x0AA; 給wdkey寄存器賦值
}
53。使用TI公司模擬器件與DSP結合使用的好處。
1)在使用TI公司的DSP的同時,使用TI公司的模擬能夠和DSP進行無縫鏈接。器件與器件之間不須要任何的鏈接或轉接器件。這樣即減小了板卡的尺寸,也下降了開發難度。
2)同爲TI公司的產品,不少器件能夠固定搭配使用。少了器件選型的煩惱
3)TI在CCS中提供插件,能夠用於DSP和模擬器件的開發,很是方便。
54。C語言中能夠嵌套匯編語言?
能夠。在ANSI C標準中的標準用法就是用C語言編寫主程序,用匯編語言編寫子程序,中斷服務程序,一些算法,而後用C語言調用這些彙編程序,這樣效率會相對比較高,在定點DSP系統中能否實現浮點運算。
固然能夠,由於DSP均可以用C,只要是可使用c語言的場合均可以實現浮點運算。
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便可。注意當串聯DSP比較多的時候,信號線要適當的增長驅動。
55。include頭文件(.h)的主要做用
頭文件,通常用於定義程序中的函數、參數、變量和一些宏單元,同庫函數配合使用。所以,在使用庫時,必須用相應的頭文件說明。
DSP中斷向量的位置
1)2000系列dsp的中斷向量只能從0000H處開始。因此在咱們調試程序的時候,要把DSP選擇爲MP(微處理器方式),把片內的Flash屏蔽掉,免去每次更改程序都要從新燒寫Flash工做。
2)3x系列dsp的中斷向量也只能在固定的地址。
3)5000,6000系列dsp的中斷向量能夠從新定位。可是它只能被從新定位到Page0範圍內的任何空間。
56。有源晶振與晶體的區別,應用範圍及用法
1)晶體須要用DSP片內的振盪器,在datasheet上有建議的鏈接方法。晶體沒有電壓的問題,能夠適應於任何DSP,建議用晶體。
2)有源晶振不須要DSP的內部振盪器,信號比較穩定。有源晶振用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。
57。程序常常跑飛的緣由
1)程序沒有結尾或不是循環的程序。
2)nmi管腳沒有上拉。
3)在看門狗動做的時候程序會常常跑飛。
4)程序編制不當也會引發程序跑飛。
5)硬件系統有問題。
58。並行FLASH引導的一點經驗-阿哲
最近BBS上關於FLASH和BOOT的討論很活躍,我也屢次來此請教。前幾天自制的DSP板引導成功,早就打算寫寫這方面的東西。我用的 DSP是5416,以其爲核心,作了一個相對獨立的子系統(硬件、軟件、算法),目前都已基本作好。下面把在FLASH引導方面作的工做向你們彙報一下,但願能對你們有所幫助。本人經驗和文筆都有限,寫的很差請你們諒解。 硬件環境:
DSP:TMS320VC5416PGE160
FLASH:SST39VF400A-70-4C-EK 都是貼片的,FLASH映射在DSP數據空間的0x8000-0xFFFF
軟件環境: CCS v2.12.01
主程序(要燒入FLASH的程序): DEBUG版,程序佔用空間0x28000-0x2FFFF(片內SARAM),中斷向量表在0x0080-0x00FF(片內DARAM),數據空間使用0x0100-0x7FFF(片內DARAM)。由於FLASH是貼片的,因此須要本身編一個數據搬移程序,把要主程序搬移到FLASH中。在寫入FLASH數據時,還應寫入引導表的格式數據。最後在數據空間的0xFFFF處寫入引導表的起始地址(這裏爲0x8000)。
搬移程序: DEBUG版,程序空間0x38000-0x3FFFF(片內SARAM),中斷向量表在0x7800-0x78FF(片內DARAM),數據空間使用 0x5000-0x77FF(片內DARAM)。 搬移程序不能使用與主程序的程序空間和中斷向量表重合的物理空間,以避免覆蓋。燒寫時,同時打開主程序和搬移程序的PROJECT,先LOAD主程序,再LOAD搬移程序,而後執行搬移程序,燒寫OK! 附:搬移程序(僅供參考)
volatile unsigned int *pTemp=(unsigned int *)0x7e00; unsigned int iFlashAddr;
int iLoop; /* 在引導表頭存放並行引導關鍵字 */
iFlashAddr=0x8000;
WriteFlash(iFlashAddr,0x10aa);
iFlashAddr++; /* 初始化SWWSR值 */
WriteFlash(iFlashAddr,0x7e00);
iFlashAddr++; /* 初始化BSCR值 */
WriteFlash(iFlashAddr,0x8006);
iFlashAddr++; /* 程序執行的入口地址 */
WriteFlash(iFlashAddr,0x0002);
iFlashAddr++;
WriteFlash(iFlashAddr,0x8085);
iFlashAddr++; /* 程序長度 */
WriteFlash(iFlashAddr,0x7f00);
iFlashAddr++; /* 程序要裝載到的地址 */
WriteFlash(iFlashAddr,0x0002);
iFlashAddr++;
WriteFlash(iFlashAddr,0x8000);
iFlashAddr++;
for (iLoop=0;iLoop<0x7f00;iLoop++)
{ /* 從程序空間讀數據,放到暫存單元 */
asm(" pshm al");
asm(" pshm ah");
asm(" rsbx cpl");
asm(" ld #00fch,dp");
asm(" stm #0000h, ah");
asm(" MVDM _iLoop, al");
asm(" add #2800h,4,a");
asm(" reada 0h");
asm(" popm ah");
asm(" popm al");
asm(" ssbx cpl"); /* 把暫存單元內容寫入FLASH */
WriteFlash(iFlashAddr,*pTemp);
iFlashAddr++; } /* 中斷向量表長度 */
WriteFlash(iFlashAddr,0x0080);
iFlashAddr++; /* 中斷向量表裝載地址 */
WriteFlash(iFlashAddr,0x0000);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0080);
iFlashAddr++;
for (iLoop=0;iLoop<0x0080;iLoop++) { /* 從程序空間讀數據,放到暫存單元 */
asm(" pshm al");
asm(" pshm ah");
asm(" rsbx cpl");
asm(" ld #00fch,dp");
asm(" stm #0000h, ah");
asm(" MVDM _iLoop, al");
asm(" add #0080h,0,a");
asm(" reada 0h");
asm(" popm ah");
asm(" popm al");
asm(" ssbx cpl"); /* 把暫存單元內容寫入FLASH */
WriteFlash(iFlashAddr,*pTemp);
iFlashAddr++;
} /* 寫入引導表結束標誌 */
WriteFlash(iFlashAddr,0x0000);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0000); /* 在數據空間的0xFFFF寫入引導表起始地址 */
iFlashAddr=0xffff;
WriteFlash(iFlashAddr,0x8000);
59。關於LF2407A的FLASH燒寫問題的幾點說明
TI如今關於LF24x寫入FLASH的工具最新爲c2000flashprogsw_v112。能夠支持LF240七、LF2407a、 LF2401及相關的LF240x系列。建議使用此版本。在http: //focus.ti.com/docs/tool/toolfolder.jhtml?PartNumber=C24XSOFTWARE上能夠下載到這個工具。咱們仿真器自帶的光盤中也有此燒寫程序。 在使用這個工具時注意:
一,先解壓,再執行setup.exe。
2、進入cc中,在tools圖標下有燒寫工具;
一、關於FLASH時鐘的選擇,此燒寫工具默認最高頻率進行FLASH的操做。根據目標系統的工做主頻從新要進行PLL設置。方法:先在advance options下面的View Config file中修改倍頻。存盤後,在相應的目錄下(tic2xx\algos\相應目錄)運行buildall.bat就能夠完成修改了。再進行相應的操做便可。
二、如果你所選的頻率不是最高頻率,還須要設定你自已的timings.xx來代替系統默認的最高頻率的timings.xx。例如 LF2407a的默認文件是timings.40。Timings.xx能夠利用include\timings.xls的excel工做表來生成。而後在advance options下面的View Config file中修改相應的位置。存盤後,在相應的目錄下運行buildall.bat就能夠完成修改了。
三、對於TMS320LF240XA系列,還要注意:因爲這些DSP的FLASH具備加密功能,加密地址爲程序空間的0x40-0X43H,程序禁止寫入此空間,若是寫了,此空間的數據被認爲是加密位,斷電後進入保護FLASH狀態,使FLASH不可從新操做,從而使DSP報廢,燒寫完畢後必定要進行Program passwords的操做,若是不作加密操做就默認最後一次寫入加密位的數據做爲密碼。
四、2407A不能用DOS下的燒寫軟件燒寫,必須用c2000flashprogsw_v112軟件燒寫;
五、建議以下:
1)、通常調試時,在RAM中進行;
2)、程序燒寫時,避開程序空間0x40-0x43H加密區,程序最好小於32k;
3)、每次程序燒寫完後,將word0,word1,word2,word3分別輸入本身的密碼,再點擊 Program password,若是加密成功,提示Program is arrayed,若是0x40-0x43h中寫入的是ffff,認爲處於調試狀態,flash不會加密;
4)、斷電後,下次從新燒寫時須要往word0~word3輸入已設的密碼,再unlock,成功後能夠從新燒寫了;
六、VCPP管腳接在+5V上,是應直接接的,中間不要加電阻。
七、具體事宜請閱讀相應目錄下的readme1,readme2幫助文件。
8.注意*.cmd文件的編寫時應該避開40-43H單元,好多客戶因爲沒有注意到這裏而把FALSH加密。
60。如何設置硬件斷點?
在profiler ->profile point -> break point
c54x的外部中斷是電平響應仍是沿響應?
是沿響應,準確的說,它要檢測到100(一個clk的高和兩個clk的低)的變化才能夠。
參考程序,裏面好象都要 disable wachdog,不知道爲何?
watchdog是一個計數器,溢出時會復位你的DSP,不disable的話,你的系統會動不動就reset。
61。時鐘電路選擇原則
1,系統中要求多個不一樣頻率的時鐘信號時,首選可編程時鐘芯片;
2,單一時鐘信號時,選擇晶體時鐘電路;
3,多個同頻時鐘信號時,選擇晶振;
4,儘可能使用DSP片內的PLL,下降片外時鐘頻率,提升系統的穩定性;
5,C6000、C55十、C5409A、C541六、C5420、C5421和C5441等DSP片內無振盪電路,不能用晶體時鐘電路;
6,VC540一、VC540二、VC5409和F281x等DSP時鐘信號的電平爲1.8V,建議採用晶體時鐘電路
62。C程序的代碼和數據如何定位
1,系統定義:
.cinit 存放C程序中的變量初值和常量;
.const 存放C程序中的字符常量、浮點常量和用const聲明的常量;
.switch 存放C程序中switch語句的跳針表;
.text 存放C程序的代碼;
.bss 爲C程序中的全局和靜態變量保留存儲空間;
.far 爲C程序中用far聲明的全局和靜態變量保留空間;
.stack 爲C程序系統堆棧保留存儲空間,用於保存返回地址、函數間的參數傳遞、存儲局部變量和保存中間結果;
.sysmem 用於C程序中malloc、calloc和realloc函數動態分配存儲空間
2,用戶定義:
#pragma CODE_SECTION (symbol, "section name");
#pragma DATA_SECTION (symbol, "section name")
cmd文件
由3部分組成:
1)輸入/輸出定義:.obj文件:連接器要連接的目標文件;.lib文件:連接器要連接的庫文件;.map文件:連接器生成的交叉索引文件;.out文件:連接器生成的可執行代碼;連接器選項
2)MEMORY命令:描述系統實際的硬件資源
3)SECTIONS命令:描述「段」如何定位
63。爲何要設計CSL?
1,DSP片上外設種類及其應用日趨複雜
2,提供一組標準的方法用於訪問和控制片上外設
3,免除用戶編寫配置和控制片上外設所必需的定義和代碼
64。什麼是CSL?
1,用於配置、控制和管理DSP片上外設
2,已爲C6000和C5000系列DSP設計了各自的CSL庫
3,CSL庫函數大多數是用C語言編寫的,並已對代碼的大小和速度進行了優化
4,CSL庫是可裁剪的:即只有被使用的CSL模塊纔會包含進應用程序中
5,CSL庫是可擴展的:每一個片上外設的API相互獨立,增長新的API,對其餘片上外設沒有影響
65。CSL的特色
1,片上外設編程的標準協議:定義一組標準的APIs:函數、數據類型、宏;
2,對硬件進行抽象,提取符號化的片上外設描述:定義一組宏,用於訪問和創建寄存器及其域值
3,基本的資源管理:對多資源的片上外設進行管理;
4,已集成到DSP/BIOS中:經過圖形用戶接口GUI對CSL進行配置;
5,使片上外設容易使用:縮短開發時間,增長可移植.
66。爲何須要電平變換?
1)DSP系統中不免存在5V/3.3V混合供電現象;
2)I/O爲3.3V供電的DSP,其輸入信號電平不容許超過電源電壓3.3V;
3)5V器件輸出信號高電平可達4.4V;
4)長時間超常工做會損壞DSP器件;
5)輸出信號電平通常無需變換
67。電平變換的方法
1,總線收發器(Bus Transceiver):
經常使用器件: SN74LVTH245A(8位)、SN74LVTH16245A(16位)
特色:3.3V供電,需進行方向控制,
延遲:3.5ns,驅動:-32/64mA,
輸入容限:5V
應用:數據、地址和控制總線的驅動
2,總線開關(Bus Switch)
經常使用器件:SN74CBTD3384(10位)、SN74CBTD16210(20位)
特色:5V供電,無需方向控制
延遲:0.25ns,驅動能力不增長
應用:適用於信號方向靈活、且負載單一的應用,如McBSP等外設信號的電平變換
3,2選1切換器(1 of 2 Multiplexer)
經常使用器件:SN74CBT3257(4位)、SN74CBT16292(12位)
特色:實現2選1,5V供電,無需方向控制
延遲:0.25ns,驅動能力不增長
應用:適用於多路切換信號、且要進行電平變換的應用,如雙路複用的McBSP
4,CPLD
3.3V供電,但輸入容限爲5V,而且延遲較大:>7ns,適用於少許的對延遲要求不高的輸入信號
5,電阻分壓
10KΩ和20KΩ串聯分壓,5V×20÷(10+20)≈3.3V
68。未用的輸入/輸出引腳的處理
1,未用的輸入引腳不能懸空不接,而應將它們上拉活下拉爲固定的電平
1)關鍵的控制輸入引腳,如Ready、Hold等,應固定接爲適當的狀態,Ready引腳應固定接爲有效狀態,Hold引腳應固定接爲無效狀態
2)無鏈接(NC)和保留(RSV)引腳,NC 引腳:除非特殊說明,這些引腳懸空不接,RSV引腳:應根據數據手冊具體決定接仍是不接
3)非關鍵的輸入引腳,將它們上拉或下拉爲固定的電平,以下降功耗
2,未用的輸出引腳能夠懸空不接
3,未用的I/O引腳:若是確省狀態爲輸入引腳,則做爲非關鍵的輸入引腳處理,上拉或下拉爲固定的電平;若是確省狀態爲輸出引腳,則能夠懸空不接 編程