1)SEED-XDS同TI的XDS-510完全兼容,可以完全替代XDS-510。 2)SEED-XDSPP同TI的XDS-5
10PP完全兼容,可以完全替代XDS-510PP。 3)SEED-XDSUSB和SEED-XDSPCI是合衆達獨創的
產品,它們具有SEED-XDS的全部功能,更加便於使用。 4)SEED仿真器的JTAG/MPSD仿真電
纜不同於TI,無需另外投資,可以方便更換。 5)SEED的仿真器同TI的仿真器一樣,可以仿
真所有TI的DSP和ARM。
DSP仿真器爲什麼必須連接目標系統(Target)?
DSP的仿真器同單片機的不同,仿真器中沒有DSP,提供IEEE標準的JTAG口對DSP進行仿真調
試,所以仿真器必須有仿真對象,及目標系統。目標系統就是你的產品,上面必須有DSP。
仿真器提供JTAG同目標系統的DSP相接,通過DSP實現對整個目標系統的調試。
SEED-XDS仿真器安裝的常見問題?
請認真閱讀“安裝手冊”。常見問題是硬件的I/O口地址同主機的聲卡或網卡有衝突,你可
以改變仿真器的I/O口地址,也可以改變聲卡或網卡的I/O口地址
仿真工作正常對於DSP的基本要求
1)DSP電源和地連接正確。 2)DSP時鐘正確。 3)DSP的主要控制信號,如RS和HOLD信號接高
電平。 4)C2000的watchdog關掉。 5)不可屏蔽中斷NMI上拉高電平。
CCS或Emurst運行時提示“Can't Initialize Target DSP”
1)仿真器連接是否正常? 2)仿真器的I/O設置是否正確? 3)XDSPP仿真器的電源是否正確
? 4)目標系統是否正確? 5)仿真器是否正常?6)DSP工作的基本條件是否具備。
建議使用目標板測試。
爲什麼CCS需要安裝Driver?
CCS是開放的軟件平臺,它可以支持不同的硬件接口,因此不同的硬件接口必須通過標準的
Driver同CCS連接。
Driver安裝的常見問題?
請認真閱讀“安裝手冊”和Driver盤中的Readme。 1)對於SEED-XDS,安裝Readme中的步驟
,將I/O口設爲240/280/320/340。 2)對於SEED-XDSPP,安裝Readme中的步驟,將I/O口設
爲378或278。3)對於SEED-XDSUSB,必須連接目標板,安裝Readme中的步驟,將I/O口設爲
A,USB連接後,主機將自動激活相應的Driver。 4)對於SEED-XDSPCI,安裝Readme中的步
驟,將I/O口設爲240,PCI接口板插入主機後,主機將自動激活相應的Driver。 5)對於Si
mulator,需要選擇不同的CFG文件,以模擬不同的DSP。 6)對於C5402 DSK,將I/O口設爲
請認真閱讀“安裝手冊”和Driver盤中的Readme。 1)對於SEED-XDS,安裝Readme中的步驟
,將I/O口設爲240/280/320/340。 2)對於SEED-XDSPP,安裝Readme中的步驟,將I/O口設
爲378或278。注意主機BIOS中並口的型式必須同xds510pp.ini中一致。 3)對於SEED-XDSU
SB,必須連接目標板,安裝Readme中的步驟,將I/O口設爲240/280/320/340,USB連接後,
主機將自動激活相應的Driver。 4)對於SEED-XDSPCI,安裝Readme中的步驟,將I/O口設爲
240/280/320/340,PCI接口板插入主機後,主機將自動激活相應的Driver。 5)對於Simul
ator,需要選擇不同的CFG文件,以模擬不同的DSP。 6)對於C5402 DSK,將I/O口設爲378
或278。 7)對於C6211/6711 DSK,將I/O口設爲378或278。 8)對於C6201/C6701 EVM,將I/O口設
爲0。
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
}
如何將OUT文件轉換爲16進制的文件格式?
DSP的開發軟件集成了一個程序,可以從執行文件OUT轉換到編程器可以接受的格式,使得
編程器可以用次文件燒寫EPROM或Flash。對於C2000的程序爲DSPHEX;對於C3x程序爲HEX3
0;對於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
}
DSP的C語言同主機C語言的主要區別?
1)DSP的C語言是標準的ANSI C,它不包括同外設聯繫的擴展部分,如屏幕繪圖等。但在CC
S中,爲了方便調試,可以將數據通過prinf命令虛擬輸出到主機的屏幕上。 2)DSP的C語言
的編譯過程爲,C編譯爲ASM,再由ASM編譯爲OBJ。因此C和ASM的對應關係非常明確,非常
便於人工優化。 3)DSP的代碼需要絕對定位;主機的C的代碼有操作系統定位。 4)DSP的C
的效率較高,非常適合於嵌入系統。
爲什麼在CCS下編譯工具工作不正常?
在CCS下有部分客戶會碰到編譯工具工作不正常,常見錯誤爲: 1)autoexec.bat的路徑“
out of memory”。修改autoexec.bat,清除無用的PATH路徑。 2)編譯的輸出文件(OUT文
件)寫保護,無法覆蓋。刪除或修改輸出文件的屬性。 3)Windows有問題。重新安裝wind
ows。 4)Windows下有程序對CCS有影響。建議用一“乾淨”的計算機。
在CCS下,如何選擇有效的存儲器空間?
CCS下的存儲器空間最好設置同你的硬件,沒有的存儲器不要有效。這樣便於調試,CCS會
發現你調入程序時或程序運行時,是否訪問了無效地址。 1)在GEL文件中設置。參見CCS中
的示例。 2)在Option菜單下,選擇Memory Map選項,根據你的硬件設置。注意一定要將E
nable Memory Mapping置爲使能。
在CCS下,OUT文件加載時提示“Data verification failed...”的原因?
Link的CMD文件分配的地址同GEL或設置的有效地址空間不符。中斷向量定位處或其它代碼
、數據段定位處,沒有RAM,無法加載OUT文件。解決方法: 1)調整Link的CMD文件,使得
定位段處有RAM。 2)調整存儲器設置,使得RAM區有效。
爲什麼要使用BIOS?
1)BIOS是Basic I/O System的簡稱,是基本的輸入、輸出管理。 2)用於管理任務的調度,
程序實時分析,中斷管理,跟蹤管理和實時數據交換。 3)BIOS是基本的實時系統,使用B
IOS可以方便地實現多任務、多進程的時間管理。 4)BIOS是eXpress DSP的標準平臺,要使
用eXpress DSP技術,必須使用BIOS。
[ Last edited by lxn801012 on 2005-10-31 at 10:51 ]
【論壇瀏覽】 【我來說兩句】 【打印】 【大】 【中】 【小】 【關閉】
相關評論
作者: lxn801012 發佈日期: 2005-10-31
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終端等多媒體應用。
5V/3.3V如何混接?
TI DSP的發展同集成電路的發展一樣,新的DSP都是3.3V的,但目前還有許多外圍電路是5
V的,因此在DSP系統中,經常有5V和3.3V的DSP混接問題。在這些系統中,應注意: 1)DS
P輸出給5V的電路(如D/A),無需加任何緩衝電路,可以直接連接。 2)DSP輸入5V的信號
(如A/D),由於輸入信號的電壓>4V,超過了DSP的電源電壓,DSP的外部信號沒有保護電
路,需要加緩衝,如74LVC245等,將5V信號變換成3.3V的信號。 3)仿真器的JTAG口的信號
也必須爲3.3V,否則有可能損壞DSP。
爲什麼要片內RAM大的DSP效率高?
目前DSP發展的片內存儲器RAM越來越大,要設計高效的DSP系統,就應該選擇片內RAM較大
的DSP。片內RAM同片外存儲器相比,有以下優點: 1)片內RAM的速度較快,可以保證DSP無
等待運行。 2)對於C2000/C3x/C5000系列,部分片內存儲器可以在一個指令週期內訪問兩
次,使得指令可以更加高效。 3)片內RAM運行穩定,不受外部的干擾影響,也不會干擾外
部。 4)DSP片內多總線,在訪問片內RAM時,不會影響其它總線的訪問,效率較高。
爲什麼DSP從5V發展成3.3V?
超大規模集成電路的發展從1um,發展到目前的0.1um,芯片的電源電壓也隨之降低,功耗
也隨之降低。DSP也同樣從5V發展到目前的3.3V,核心電壓發展到1V。目前主流的DSP的外
圍均已發展爲3.3V,5V的DSP的價格和功耗都價格,以逐漸被3.3V的DSP取代。
如何選擇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。
軟件等待的如何使用?
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,高電平時不等
待。 軟件等待由外部存儲器接口控制寄存器決定,總線訪問外部存儲器或設備的時序可以
設置,可以方便的同異步的存儲器或外設接口。
中斷向量爲什麼要重定位?
爲了方便DSP存儲器的配置,一般DSP的中斷向量可以重新定位,即可以通過設置寄存器放
在存儲器空間的任何地方。 注意:C2000的中斷向量不能重定位。
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。
DSP可以降頻使用嗎?
可以,DSP的主頻均有一定的工作範圍,因此DSP均可以降頻使用。
如何選擇外部時鐘?
DSP的內部指令週期較高,外部晶振的主頻不夠,因此DSP大多數片內均有PLL。但每個系列
不盡相同。
1)TMS320C2000系列:
TMS320C20x:PLL可以÷2,×1,×2和×4,因此外部時鐘可以爲5MHz-40MHz。
TMS320F240:PLL可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5和×9,因此
外部時鐘可以爲2.22MHz-40MHz。
TMS320F241/C242/F243:PLL可以×4,因此外部時鐘爲5MHz。 TMS320LF24xx:PLL可以由
RC調節,因此外部時鐘爲4MHz-20MHz。
TMS320LF24xxA:PLL可以由RC調節,因此外部時鐘爲4MHz-20MHz。
2)TMS320C3x系列:
TMS320C3x:沒有PLL,因此外部主頻爲工作頻率的2倍。
TMS320VC33:PLL可以÷2,×1,×5,因此外部主頻可以爲12MHz-100MHz。
3)TMS320C5000系列:
TMS320VC54xx:PLL可以÷4,÷2,×1-32,因此外部主頻可以爲0.625MHz-50MHz。
TMS320VC55xx:PLL可以÷4,÷2,×1-32,因此外部主頻可以爲6.25MHz-300MHz。
4)TMS320C6000系列:
TMS320C62xx:PLL可以×1,×4,×6,×7,×8,×9,×10和×11,因此外部主頻可以
爲11.8MHz-300MHz。
TMS320C67xx:PLL可以×1和×4,因此外部主頻可以爲12.5MHz-230MHz。
TMS320C64xx:PLL可以×1,×6和×12,因此外部主頻可以爲30MHz-720MHz
如何選擇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,加入兩個等待(目前沒有更快的Fl
ash)。
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的速度爲100
MHz或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。
FIFO:CY7C42x5V-10ASC,32k/64k×18。
DSP芯片有多大的驅動能力?
DSP的驅動能力較強,可以不加驅動,連接8個以上標準TTL門。
作者: lxn801012 發佈日期: 2005-10-31
調試TMS320C2000系列的常見問題?
1)單步可以運行,連續運行時總回0地址: Watchdog沒有關,連續運行復位DSP回到0地址
。
2)OUT文件不能load到片內flash中: Flash不是RAM,不能用簡單的寫指令寫入,需要專門
的程序寫入。CCS和C Source Debugger中的load命令,不能對flash寫入。 OUT文件只能l
oad到片內RAM,或片外RAM中。
3)在flash中如何加入斷點: 在flash中可以用單步調試,也可以用硬件斷點的方法在fla
sh中加入斷點,軟件斷點是不能加在ROM中的。硬件斷點,設置存儲器的地址,當訪問該地
址時產生中斷。
4)中斷向量: C2000的中斷向量不可重定位,因此中斷向量必須放在0地址開始的flash內
。在調試系統時,代碼放在RAM中,中斷向量也必須放在flash內。
調試TMS320C3x系列的常見問題?
1)TMS320C32的存儲器配置: TMS320C32的程序存儲器可以配置爲16位或32位;數據存儲器
可以配置爲8位、16位或32位。
2)TMS320VC33的PLL控制: TMS320VC33的PLL控制端只能接1.8V,不能接3.3V或5V。
如何調試多片DSP?
對於有MPSD仿真口的DSP(TMS320C30/C31/C32),不能用一套仿真器同時調試,每次只能
調試其中的一個DSP; 對於有JTAG仿真口的DSP,可以將JTAG串接在一起,用一套仿真器同
時調試多個DSP,每個DSP可以用不同的名字,在不同的窗口中調試。 注意:如果在JTAG和
DSP間加入驅動,一定要用快速的門電路,不能使用如LS的慢速門電路。
在DSP系統中爲什麼要使用CPLD?
DSP的速度較快,要求譯碼的速度也必須較快。利用小規模邏輯器件譯碼的方式,已不能滿
足DSP系統的要求。 同時,DSP系統中也經常需要外部快速部件的配合,這些部件往往是專
門的電路,有可編程器件實現。 CPLD的時序嚴格,速度較快,可編程性好,非常適合於實
現譯碼和專門電路。
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...
具體資料見www.ti.com,www.cypress.com
什麼是boot loader?
DSP的速度儘快,EPROM或flash的速度較慢,而DSP片內的RAM很快,片外的RAM也較快。爲
了使DSP充分發揮它的能力,必須將程序代碼放在RAM中運行。爲了方便的將代碼從ROM中搬
到RAM中,在不帶flash的DSP中,TI在出廠時固化了一段程序,在上電後完成從ROM或外設
將代碼搬到用戶指定的RAM中。此段程序稱爲“boot loader”。
TMS320C3x如何boot?
在MC/MP管腳爲高時,C3x進入boot狀態。C3x的boot loader在reset時,判斷外部中斷管腳
的電平。根據中斷配置決定boot的方式爲存儲器加載還是串口加載,其中ROM的地址可以爲
三個中的一個,ROM可以爲8位。
Boot有問題如何解決?
1)仔細檢查boot的控制字是否正確。 2)仔細檢查外部管腳設置是否正確。 3)仔細檢查he
x文件是否轉換正確。 4)用仿真器跟蹤boot過程,分析錯誤原因。
DSP爲什麼要初始化?
DSP在RESET後,許多的寄存器的初值一般同用戶的要求不一致,例如:等待寄存器,SP,
中斷定位寄存器等,需要通過初始化程序設置爲用戶要求的數值。 初始化程序的主要作用
: 1)設置寄存器初值。 2)建立中斷向量表。 3)外圍部件初始化。
DSP有哪些數學庫及其它應用軟件?
TI公司爲了方便客戶開發DSP,在它的網站上提供了許多程序的示例和應用程序,如MATH庫
,FFT,FIR/IIR等,可以在TI的網頁免費下載。
如何獲得DSP專用算法?
TI有許多的Third Party可以通過DSP上的多種算法軟件。可以通過TI的網頁搜索你所需的
算法,找到通過算法的公司,同相應的公司聯繫。注意這些算法都是要付費的。
eXpressDSP是什麼?
eXpressDSP是一種實時DSP軟件技術,它是一種DSP編程的標準,利用它可以加快你開發DS
P軟件的速度。 以往DSP軟件的開發沒有任何標準,不同的人寫的程序一般無法連接在一起
。DSP軟件的調試工具也非常不方便。使得DSP軟件的開發往往滯後於硬件的開發。 eXpre
ssDSP集成了CCS(Code Composer Studio)開發平臺,DSP BIOS實時軟件平臺,DSP算法標準
和第三方支持四部分。利用該技術,可以使你的軟件調試,軟件進程管理,軟件的互通及
算法的獲得,都便的容易。這樣就可以加快你的軟件開發進程。
1)CCS是eXpressDSP的基礎,因此你必須首先擁有CCS軟件。
2)DSP BIOS是eXpressDSP的基本平臺,你必須學會所有DSP BIOS。
3)DSP算法標準可以保證你的程序可以方便的同其它利用eXpressDSP技術的程序連接在一起
。同時也保證你的程序的延續性。
爲什麼要用DSP?
3G技術和internate的發展,要求處理器的速度越來越高,體積越來越小,DSP的發展正好
能滿足這一發展的要求。因爲,傳統的其它處理器都有不同的缺陷。MCU的速度較慢;CPU
體積較大,功耗較高;嵌入CPU的成本較高。 DSP的發展,使得在許多速度要求較高,算法
較複雜的場合,取代MCU或其它處理器,而成本有可能更低。
如何選擇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
適合於多媒體等。
要了解DSP芯片的性能,本網中的"DSP及相關器件"中有介紹。
DSP同MCU相比的特點?
1)DSP的速度比MCU快,主頻較高。
2)DSP適合於數據處理,數據處理的指令效率較高。
3)DSP均爲16位以上的處理器,不適合於低檔的場合。
4)DSP可以同時處理的事件較多,系統級成本有可能較低。
5)DSP的靈活性較好,大多數算法都可以軟件實現。
6)DSP的集成度較高,可靠性較好。
DSP同嵌入CPU相比的特點?
1)DSP是單片機,構成系統簡單。 2)DSP的速度快。 3)DSP的成本較低。 4)DSP的性能高,
可以處理較多的任務。
如何編寫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的網頁上有相關資料。
作者: lxn801012 發佈日期: 2005-10-31
如何編寫DSP外部的Flash?
DSP的外部Flash編寫方法:
1.通過編程器編寫:將OUT文件通過HEX轉換程序轉換爲編程器可以接受的格式,再由編程
器編寫。
2.通過DSP軟件編寫:您需要根據Flash的說明,編寫Flash的編寫程序,將應用程序和編寫
Flash的程序分別load到RAM中,運行編寫程序編寫。
對於C5000,大於48K的程序如何BOOT?
對於C5000,片內的BOOT程序在上電後將數據區的內容,搬移到程序區的RAM中,因此FLAS
H必須在RESET後放在數據區。由於C5000,數據區的空間有限,一次BOOT的程序不能對於4
8K。解決的方法如下:
1.在RESET後,將FLASH譯碼在數據區,RAM放在程序區,片內BOOT程序將程序BOOT到RAM中
。
2.用戶初試化程序發出一個I/O命令(如XF),將FLASH譯碼到程序區的高地址。開放數據
區用於其它的RAM。
3.用戶初試化程序中包括第二次BOOT程序(此程序必須用戶自己編寫),將FLASH中沒有B
OOT的其它代碼搬移到RAM中。
4.開始運行用戶處理程序。
DSP外接存儲器的控制方式
對於一般的存儲器具有RD、WR和CS等控制信號,許多DSP(C3x、C5000)都沒有控制信號直
接連接存儲器,一般採用的方式如下:
1.CS有地址線和PS、DS或STRB譯碼產生;
2./RD=/STRB+/R/W; 3./WR=/STRB+R/W。
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寄存器賦值
}
使用TI公司模擬器件與DSP結合使用的好處。
1)在使用TI公司的DSP的同時,使用TI公司的模擬可以和DSP進行無縫連接。器件與器件之
間不需要任何的連接或轉接器件。這樣即減少了板卡的尺寸,也降低了開發難度。
2)同爲TI公司的產品,很多器件可以固定搭配使用。少了器件選型的煩惱
3)TI在CCS中提供插件,可以用於DSP和模擬器件的開發,非常方便。
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比較多的時候,信號線要適當的增加驅動。
include頭文件(.h)的主要作用
頭文件,一般用於定義程序中的函數、參數、變量和一些宏單元,同庫函數配合使用。因
此,在使用庫時,必須用相應的頭文件說明。
DSP中斷向量的位置
1)2000系列dsp的中斷向量只能從0000H處開始。所以在我們調試程序的時候,要把DSP選擇
爲MP(微處理器方式),把片內的Flash屏蔽掉,免去每次更改程序都要重新燒寫Flash工
作。
2)3x系列dsp的中斷向量也只能在固定的地址。
3)5000,6000系列dsp的中斷向量可以重新定位。但是它只能被重新定位到Page0範圍內的
任何空間。
有源晶振與晶體的區別,應用範圍及用法
1)晶體需要用DSP片內的振盪器,在datasheet上有建議的連接方法。晶體沒有電壓的問題
,可以適應於任何DSP,建議用晶體。 2)有源晶振不需要DSP的內部振盪器,信號比較穩定
。有源晶振用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。
程序經常跑飛的原因
1)程序沒有結尾或不是循環的程序。
2)nmi管腳沒有上拉。
3)在看門狗動作的時候程序會經常跑飛。
4)程序編制不當也會引起程序跑飛。
5)硬件系統有問題。
並行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-0
x78FF(片內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);
關於LF2407A的FLASH燒寫問題的幾點說明
TI現在關於LF24x寫入FLASH的工具最新爲c2000flashprogsw_v112。可以支持LF2407、LF2
407a、LF2401及相關的LF240x系列。建議使用此版本。http://focus.ti.com/docs/tool/
toolf...er=C24XSOFTWARE上可以下載到這個工具。我們仿真器自帶的光盤中也有此燒寫程
序。 在使用這個工具時注意:
一,先解壓,再執行setup.exe。
二、進入cc中,在tools圖標下有燒寫工具;
1、關於FLASH時鐘的選擇,此燒寫工具默認最高頻率進行FLASH的操作。根據目標系統的工
作主頻重新要進行PLL設置。方法:先在advance options下面的View Config file中修改
倍頻。存盤後,在相應的目錄下(tic2xx/algos/相應目錄)運行buildall.bat就可以完成
修改了。再進行相應的操作即可。
2、若是你所選的頻率不是最高頻率,還需要設定你自已的timings.xx來代替系統默認的最
高頻率的timings.xx。例如LF2407a的默認文件是timings.40。Timings.xx可以利用inclu
de/timings.xls的excel工作表來生成。然後在advance options下面的View Config file
中修改相應的位置。存盤後,在相應的目錄下運行buildall.bat就可以完成修改了。
3、對於TMS320LF240XA系列,還要注意:由於這些DSP的FLASH具有加密功能,加密地址爲
程序空間的0x40-0X43H,程序禁止寫入此空間,如果寫了,此空間的數據被認爲是加密位
,斷電後進入保護FLASH狀態,使FLASH不可重新操作,從而使DSP報廢,燒寫完畢後一定要
進行Program passwords的操作,如果不做加密操作就默認最後一次寫入加密位的數據作爲
密碼。
4、2407A不能用DOS下的燒寫軟件燒寫,必須用c2000flashprogsw_v112軟件燒寫;
5、建議如下:
1)、一般調試時,在RAM中進行;
2)、程序燒寫時,避開程序空間0x40-0x43H加密區,程序最好小於32k;
3)、每次程序燒寫完後,將word0,word1,word2,word3分別輸入自己的密碼,再點擊 Pr
ogram password,如果加密成功,提示Program is arrayed,如果0x40-0x43h中寫入的是
ffff,認爲處於調試狀態,flash不會加密;
4)、斷電後,下次重新燒寫時需要往word0~word3輸入已設的密碼,再unlock,成功後可
以重新燒寫了;
6、VCPP管腳接在+5V上,是應直接接的,中間不要加電阻。
7、具體事宜請閱讀相應目錄下的readme1,readme2幫助文件。
8.注意*.cmd文件的編寫時應該避開40-43H單元,好多客戶由於沒有注意到這裏而把FALSH
加密。
如何設置硬件斷點?
在profiler ->profile point -> break point
c54x的外部中斷是電平響應還是沿響應?
是沿響應,準確的說,它要檢測到100(一個clk的高和兩個clk的低)的變化纔可以。
參考程序,裏面好象都要 disable wachdog,不知道爲什麼?
watchdog是一個計數器,溢出時會復位你的DSP,不disable的話,你的系統會動不動就re
set。
時鐘電路選擇原則
1,系統中要求多個不同頻率的時鐘信號時,首選可編程時鐘芯片;
2,單一時鐘信號時,選擇晶體時鐘電路;
3,多個同頻時鐘信號時,選擇晶振;
4,儘量使用DSP片內的PLL,降低片外時鐘頻率,提高系統的穩定性;
5,C6000、C5510、C5409A、C5416、C5420、C5421和C5441等DSP片內無振盪電路,不能用晶
體時鐘電路;
6,VC5401、VC5402、VC5409和F281x等DSP時鐘信號的電平爲1.8V,建議採用晶體時鐘電路
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命令:描述“段”如何定位
爲什麼要設計CSL?
1,DSP片上外設種類及其應用日趨複雜
2,提供一組標準的方法用於訪問和控制片上外設
3,免除用戶編寫配置和控制片上外設所必需的定義和代碼
什麼是CSL?
1,用於配置、控制和管理DSP片上外設
2,已爲C6000和C5000系列DSP設計了各自的CSL庫
3,CSL庫函數大多數是用C語言編寫的,並已對代碼的大小和速度進行了優化
4,CSL庫是可裁剪的:即只有被使用的CSL模塊纔會包含進應用程序中
5,CSL庫是可擴展的:每個片上外設的API相互獨立,增加新的API,對其他片上外設沒有影
響
CSL的特點
1,片上外設編程的標準協議:定義一組標準的APIs:函數、數據類型、宏;
2,對硬件進行抽象,提取符號化的片上外設描述:定義一組宏,用於訪問和建立寄存器及其
域值
3,基本的資源管理:對多資源的片上外設進行管理;
4,已集成到DSP/BIOS中:通過圖形用戶接口GUI對CSL進行配置;
5,使片上外設容易使用:縮短開發時間,增加可移植.
爲什麼需要電平變換?
1)DSP系統中難免存在5V/3.3V混合供電現象;
2)I/O爲3.3V供電的DSP,其輸入信號電平不允許超過電源電壓3.3V;
3)5V器件輸出信號高電平可達4.4V;
4)長時間超常工作會損壞DSP器件;
5)輸出信號電平一般無需變換
電平變換的方法
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
未用的輸入/輸出引腳的處理
1,未用的輸入引腳不能懸空不接,而應將它們上拉活下拉爲固定的電平
1)關鍵的控制輸入引腳,如Ready、Hold等,應固定接爲適當的狀態,Ready引腳應固定接
爲有效狀態,Hold引腳應固定接爲無效狀態
2)無連接(NC)和保留(RSV)引腳,NC 引腳:除非特殊說明,這些引腳懸空不接,RSV引
腳:應根據數據手冊具體決定接還是不接
3)非關鍵的輸入引腳,將它們上拉或下拉爲固定的電平,以降低功耗
2,未用的輸出引腳可以懸空不接
3,未用的I/O引腳:如果確省狀態爲輸入引腳,則作爲非關鍵的輸入引腳處理,上拉或下拉
爲固定的電平;如果確省狀態爲輸出引腳,則可以懸空不接
<script src="http://utrack.hexun.com/track/track.js"></script> src="http://utrack.hexun.com/ftrack.htm?calc_l=http%3A//warmfall.blog.hexun.com/2571458_d.html&time=1224555517419&calc_r=http%3A//blog.csdn.net/guanchanghui/archive/2006/09/05/1178764.aspx&isiframed=2&sflag=2" frameborder="0" width="0" height="0"> <script language=javascript src="http://im.hexun.com/bevent.aspx?cururl=http://blog.hexun.com%2f2571458_d.html"></script> <script src="http://www.google-analytics.com/urchin.js" type=text/javascript> </script> <script type=text/javascript> _uacct = "UA-2706087-1"; urchinTracker(); </script> <script type=text/javascript> var dom1; dom1 = document.getElementById("SelfHtmlPrepare").innerHTML; document.getElementById("SelfHtml").innerHTML = dom1; document.getElementById("SelfHtmlPrepare").innerHTML=""; document.getElementById("SelfHtml").style.display="none"; </script>