天天看點

面試可能會問到的問題dSP

  • 1.如何選擇外部時鐘?

    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的指令周期較快,通路慢速存儲器或外設時需加入等待。等待分硬體等待和軟體等待,每一個系列的等待不完全相同。

    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的基本要求

    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)對于Simulator,需要選擇不同的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-XDSUSB,必須連接配接目标闆,安裝Readme中的步驟,将I/O口設為240/280/320/340,USB連接配接後,主機将自動激活相應的Driver。 4)對于SEED-XDSPCI,安裝Readme中的步驟,将I/O口設為240/280/320/340,PCI接口闆插入主機後,主機将自動激活相應的Driver。 5)對于Simulator,需要選擇不同的CFG檔案,以模拟不同的DSP。 6)對于C5402 DSK,将I/O口設為378或278。 7)對于C6211/6711 DSK,将I/O口設為378或278。 8)對于C6201/C6701 EVM,将I/O口設為0。

    2. 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程式為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

    }

    DSP仿真器為什麼必須連接配接目标系統(Target)?

    DSP的仿真器同單片機的不同,仿真器中沒有DSP,提供IEEE标準的JTAG口對DSP進行仿真調試,是以仿真器必須有仿真對象,及目标系統。目标系統就是你的産品,上面必須有DSP。仿真器提供JTAG同目标系統的DSP相接,通過DSP實作對整個目标系統的調試。

    仿真工作正常對于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連接配接。

    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程式為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

    }

    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的效率較高,非常适合于嵌入系統。

    為什麼在CCS下編譯工具工作不正常?

    在CCS下有部分客戶會碰到編譯工具工作不正常,常見錯誤為: 1)autoexec.bat的路徑“out of memory”。修改autoexec.bat,清除無用的PATH路徑。 2)編譯的輸出檔案(OUT檔案)寫保護,無法覆寫。删除或修改輸出檔案的屬性。 3)Windows有問題。重新安裝windows。 4)Windows下有程式對CCS有影響。建議用一“幹淨”的計算機。

    在CCS下,如何選擇有效的存儲器空間?

    CCS下的存儲器空間最好設定同你的硬體,沒有的存儲器不要有效。這樣便于調試,CCS會發現你調入程式時或程式運作時,是否通路了無效位址。 1)在GEL檔案中設定。參見CCS中的示例。 2)在Option菜單下,選擇Memory Map選項,根據你的硬體設定。注意一定要将Enable 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是基本的實時系統,使用BIOS可以友善地實作多任務、多程序的時間管理。 4)BIOS是eXpress DSP的标準平台,要使用eXpress DSP技術,必須使用BIOS。

    3. DSP晶片有多大的驅動能力?

    DSP的驅動能力較強,可以不加驅動,連接配接8個以上标準TTL門。

    調試TMS320C2000系列的常見問題?

    1)單步可以運作,連續運作時總回0位址: Watchdog沒有關,連續運作複位DSP回到0位址。

    2)OUT檔案不能load到片内flash中: Flash不是RAM,不能用簡單的寫指令寫入,需要專門的程式寫入。CCS和C Source Debugger中的load指令,不能對flash寫入。 OUT檔案隻能load到片内RAM,或片外RAM中。

    3)在flash中如何加入斷點: 在flash中可以用單步調試,也可以用硬體斷點的方法在flash中加入斷點,軟體斷點是不能加在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。

    4. 如何調試多片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

    面試可能會問到的問題dSP

    http://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)仔細檢查hex檔案是否轉換正确。 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程式設計的标準,利用它可以加快你開發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技術的程式連接配接在一起。同時也保證你的程式的延續性。

    為什麼要用DSP?

    3G技術和internate的發展,要求處理器的速度越來越高,體積越來越小,DSP的發展正好能滿足這一發展的要求。因為,傳統的其它處理器都有不同的缺陷。MCU的速度較慢;CPU體積較大,功耗較高;嵌入CPU的成本較高。 DSP的發展,使得在許多速度要求較高,算法較複雜的場合,取代MCU或其它處理器,而成本有可能更低。

    5. 使用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-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++;

    WriteFlash(iFlashAddr,0x7e00);

    iFlashAddr++;

    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");

    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");

    WriteFlash(iFlashAddr,*pTemp);

    iFlashAddr++;

    }

    WriteFlash(iFlashAddr,0x0000);

    iFlashAddr++;

    WriteFlash(iFlashAddr,0x0000);

    iFlashAddr=0xffff;

    WriteFlash(iFlashAddr,0x8000);

    6. 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引腳:如果确省狀态為輸入引腳,則作為非關鍵的輸入引腳處理,上拉或下拉為固定的電平;如果确省狀态為輸出引腳,則可以懸空不接

dsp

繼續閱讀