教學(xué)課件·《DSP原理及應(yīng)用》1_第1頁
教學(xué)課件·《DSP原理及應(yīng)用》1_第2頁
教學(xué)課件·《DSP原理及應(yīng)用》1_第3頁
教學(xué)課件·《DSP原理及應(yīng)用》1_第4頁
教學(xué)課件·《DSP原理及應(yīng)用》1_第5頁
已閱讀5頁,還剩457頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第1章 緒論1.1 數(shù)字信號(hào)處理概述1.2 數(shù)字信號(hào)處理器概述1.1 數(shù)字信號(hào)處理概述1.1.1 數(shù)字信號(hào)處理系統(tǒng)的構(gòu)成1.1.2 數(shù)字信號(hào)處理的實(shí)現(xiàn)1.1.3 數(shù)字信號(hào)處理的特點(diǎn) 返回首頁1.1.1 數(shù)字信號(hào)處理系統(tǒng)的構(gòu)成圖1-1 典型的數(shù)字信號(hào)處理系統(tǒng)返回本節(jié)1.1.2 數(shù)字信號(hào)處理的實(shí)現(xiàn)(1)在通用的微機(jī)上用軟件實(shí)現(xiàn)。 (2)利用特殊用途的DSP芯片來實(shí)現(xiàn)。 (3)利用專門用于信號(hào)處理的通用DSP芯片來實(shí)現(xiàn)。 (4)用FPGA/CPLD用戶可編程器件來實(shí)現(xiàn)。 返回本節(jié)1.1.3 數(shù)字信號(hào)處理的特點(diǎn)與模擬系統(tǒng)(ASP)相比,數(shù)字系統(tǒng)具有如下特點(diǎn):(1)精度高 (2)可靠性高 (3)靈活性大

2、(4)易于大規(guī)模集成 (5)可獲得高性能指標(biāo) 返回本節(jié)1.2 數(shù)字信號(hào)處理器概述1.2.1 DSP芯片的種類1.2.2 TMS320 DSP系列1.2.3 DSP芯片的主要特點(diǎn)1.2.4 DSP芯片的應(yīng)用 返回首頁1.2.1 DSP芯片的種類DSP芯片可以按照以下3種方式進(jìn)行分類。1按基礎(chǔ)特性分2按數(shù)據(jù)格式分3按用途分返回本節(jié)1.2.2 TMS320 DSP系列通用DSP芯片的代表性產(chǎn)品包括TI公司的TMS320系列、AD公司ADSP21xx系列、MOTOROLA公司的DSP56xx系列和DSP96xx系列、AT&T公司的DSP16/16A和DSP32/32C等單片器件。TI的三大主力DSP產(chǎn)

3、品系列為C2000系列主要用于數(shù)字控制系統(tǒng);C5000(C54x、C55x)系列主要用于低功耗、便攜的無線通信終端產(chǎn)品;C6000系列主要用于高性能復(fù)雜的通信系統(tǒng)。C5000系列中的TMS320C54x系列DSP芯片被廣泛應(yīng)用于通信和個(gè)人消費(fèi)電子領(lǐng)域。返回本節(jié)1.2.3 DSP芯片的主要特點(diǎn)1哈佛結(jié)構(gòu)2多總線結(jié)構(gòu) 3指令系統(tǒng)的流水線操作4專用的硬件乘法器5特殊的DSP指令6快速的指令周期7硬件配置強(qiáng) 圖1-2 四級(jí)流水線操作 返回本節(jié)1.2.4 DSP芯片的應(yīng)用 (1)信號(hào)處理(2)通信(3)語音(4)圖形/圖像(5)軍事(6)儀器儀表(7)自動(dòng)控制(8)醫(yī)療(9)家用電器返回本節(jié)第2章 TM

4、S320C54x數(shù)字信號(hào)處理器硬件結(jié)構(gòu)2.1 TMS320C54x的特點(diǎn)和硬件組成框圖2.2 TMS320C54x的總線結(jié)構(gòu)2.3 TMS320C54x的存儲(chǔ)器分配2.4 中央處理單元(CPU)2.5 TMS320C54x片內(nèi)外設(shè)簡介2.6 硬件復(fù)位操作2.7 TMS320VC5402引腳及說明2.1 TMS320C54x的特點(diǎn)和硬件組成框圖TMS320C54x的主要特性如下所示:CPU先進(jìn)的多總線結(jié)構(gòu)。40位算術(shù)邏輯運(yùn)算單元(ALU)。17位17位并行乘法器與40位專用加法器相連。比較、選擇、存儲(chǔ)單元(CSSU)。指數(shù)編碼器可以在單個(gè)周期內(nèi)計(jì)算40位累加器中數(shù)值的指數(shù)。雙地址生成器包括8個(gè)輔

5、助寄存器和兩個(gè)輔助寄存器算術(shù)運(yùn)算單元(ARAU)。返回首頁存儲(chǔ)器64 K字程序存儲(chǔ)器、64 K字?jǐn)?shù)據(jù)存儲(chǔ)器以及64 K字I/O空間。在C548、C549、C5402、C5410和C5420中程序存儲(chǔ)器可以擴(kuò)展。指令系統(tǒng)單指令重復(fù)和塊指令重復(fù)操作。塊存儲(chǔ)器傳送指令。32位長操作數(shù)指令。同時(shí)讀入兩個(gè)或3個(gè)操作數(shù)的指令。并行存儲(chǔ)和并行加載的算術(shù)指令。條件存儲(chǔ)指令。從中斷快速返回指令。在片外圍電路(如圖2-1所示)軟件可編程等待狀態(tài)發(fā)生器??删幊谭謪^(qū)轉(zhuǎn)換邏輯電路。帶有內(nèi)部振蕩器。外部總線關(guān)斷控制,以斷開外部的數(shù)據(jù)總線、地址總線和控制信號(hào)。數(shù)據(jù)總線具有總線保持器特性。可編程定時(shí)器。并行主機(jī)接口(HPl)

6、。 電源可用IDLEl、IDLE2和IDLE3指令控制功耗,以工作在省電方式??梢钥刂脐P(guān)斷CLKOUT輸出信號(hào)。在片仿真接口具有符合IEEEll49.1標(biāo)準(zhǔn)的在片仿真接口(JTAG)。速度單周期定點(diǎn)指令的執(zhí)行時(shí)間為25/20/15/12.5/10-ns(40 MIPS/50 MIPS/66 MIPS/80 MIPS/100 MIPS)。返回本節(jié)圖2-1 TMS320C54x DSP的內(nèi)部硬件組成框圖1圖2-1 TMS320C54x DSP的內(nèi)部硬件組成框圖22.2 TMS320C54x的總線結(jié)構(gòu)TMS320C54x DSP采用先進(jìn)的哈佛結(jié)構(gòu)并具有八組總線,其獨(dú)立的程序總線和數(shù)據(jù)總線允許同時(shí)讀取

7、指令和操作數(shù),實(shí)現(xiàn)高度的并行操作。采用各自分開的數(shù)據(jù)總線分別用于讀數(shù)據(jù)和寫數(shù)據(jù),允許CPU在同一個(gè)機(jī)器周期內(nèi)進(jìn)行兩次讀操作數(shù)和一次寫操作數(shù)。獨(dú)立的程序總線和數(shù)據(jù)總線允許CPU同時(shí)訪問程序指令和數(shù)據(jù)。 返回首頁2.3 TMS320C54x的存儲(chǔ)器分配2.3.1 存儲(chǔ)器空間2.3.2 程序存儲(chǔ)器2.3.3 數(shù)據(jù)存儲(chǔ)器2.3.4 I/O存儲(chǔ)器返回首頁2.3.1 存儲(chǔ)器空間TMS320C54x存儲(chǔ)器由3個(gè)獨(dú)立的可選擇空間組成:程序空間、數(shù)據(jù)空間和I/O空間。程序存儲(chǔ)器空間包括程序指令和程序中所需的常數(shù)表格;數(shù)據(jù)存儲(chǔ)器空間用于存儲(chǔ)需要程序處理的數(shù)據(jù)或程序處理后的結(jié)果;I/O空間用于與外部存儲(chǔ)器映象的外設(shè)

8、接口,也可以用于擴(kuò)展外部數(shù)據(jù)存儲(chǔ)空間。 圖2-2 TMS320VC5402存儲(chǔ)器分配圖圖2-3 C5402擴(kuò)展程序存儲(chǔ)器圖返回本節(jié)2.3.2 程序存儲(chǔ)器通過MP/和OVLY位的設(shè)置,可以實(shí)現(xiàn)對片內(nèi)存儲(chǔ)器(ROM、RAM)的配置,即哪些片內(nèi)存儲(chǔ)器映象在程序存儲(chǔ)器空間。器件復(fù)位時(shí),復(fù)位、中斷和陷阱中斷的向量映象在地址FF80H開始的程序存儲(chǔ)器空間。然而,復(fù)位后這些向量可以被重新映象在程序存儲(chǔ)器空間任何128字頁的開始。這樣,可以把向量表移出引導(dǎo)ROM,并重新配置其地址。 返回本節(jié)2.3.3 數(shù)據(jù)存儲(chǔ)器通過對處理器方式狀態(tài)寄存器PMST的DROM位的設(shè)置,將片內(nèi)ROM配置在數(shù)據(jù)存儲(chǔ)器空間(DROM=

9、1),這樣,可以用指令將片內(nèi)ROM作為數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)ROM來讀取。復(fù)位時(shí),DROM位被清0。64K字的數(shù)據(jù)存儲(chǔ)器空間包括數(shù)據(jù)存儲(chǔ)器映象寄存器,0000H001FH是常用的CPU寄存器地址,0020H005FH是片內(nèi)外設(shè)寄存器的地址。表2-1 表2-1 存儲(chǔ)器映象寄存器名稱地址說明IMR0中斷屏蔽寄存器IFR1中斷標(biāo)志寄存器STO6狀態(tài)寄存器0STl7狀態(tài)寄存器1名稱地址說明AL8累加器A低16位AH9累加器A高16位AGAH累加器A最高8位BLBH累加器B低16位BHCH累加器B高16位BGDH累加器B最高8位TREGEH暫存器TRNFH狀態(tài)轉(zhuǎn)移寄存器AR0710H17H輔助寄存器 SP1

10、8H堆棧指針BK19H循環(huán)緩沖大小BRC1AH塊重復(fù)計(jì)數(shù)器RSA1BH塊重復(fù)起始地址寄存器名稱地址說明REA1CH塊重復(fù)終止地址寄存器PMST1DH處理器方式狀態(tài)寄存器XPC1EH擴(kuò)展程序計(jì)數(shù)器TIM24H定時(shí)器0寄存器PRD25H定時(shí)器0周期寄存器TCR26H定時(shí)器0控制寄存器 SWWSR28H軟件等待狀態(tài)寄存器BSCR29H分區(qū)轉(zhuǎn)換控制寄存器SWCR2BH軟件等待狀態(tài)控制寄存器HPIC2CH主機(jī)接口控制寄存器TIM130H定時(shí)器1寄存器PRD131H定時(shí)器1周期寄存器TCR132H定時(shí)器1控制寄存器GPIOCR3CH通用I/O控制寄存器,控制主機(jī)接口和TOUTlGPIOSR3DH通用I/O

11、狀態(tài)寄存器,主機(jī)接口作通用I/O時(shí)有用返回本節(jié)2.3.4 I/O存儲(chǔ)器除程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間外,C54x系列器件還提供了I/O存儲(chǔ)器空間,利用I/O空間可以擴(kuò)展外部存儲(chǔ)器。 I/O存儲(chǔ)器空間為64K字(0000hFFFFh),有兩條指令PORTR和PORTW可以對I/O存儲(chǔ)器空間操作,讀寫時(shí)序與程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間有很大不同。 返回本節(jié)2.4 中央處理單元(CPU)CPU的基本組成如下:CPU狀態(tài)和控制寄存器40位算術(shù)邏輯單元(ALU)40位累加器A和B桶形移位寄存器乘法器/加法器單元比較、選擇和存儲(chǔ)單元(CSSU) 指數(shù)編碼器返回首頁1算術(shù)邏輯單元(ALU)和累加器TMS

12、320C54x使用40位算術(shù)邏輯單元(ALU)和兩個(gè)40位累加器(ACCA和ACCB)來完成算術(shù)運(yùn)算和邏輯運(yùn)算,且大多數(shù)都是單周期指令。ALU功能框圖如圖2-4所示。圖2-4 ALU功能框圖2桶形移位寄存器如圖2-5所示為桶形移位寄存器的功能框圖。桶形移位寄存器的輸入可以為:從DB獲得的16位操作數(shù);從DB和CB獲得的32位操作數(shù);從累加器A或B獲得的40位操作數(shù)。桶形移位寄存器的輸出連到ALU或經(jīng)過MSW/LSW(最高有效字/最低有效字)寫選擇單元至EB總線。 圖2-5 桶形移位器的功能框圖3乘法器/加法器單元C54x CPU有一個(gè)1717位的硬件乘法器,與40位的專用加法器相連,可以在單周

13、期內(nèi)完成一次乘法累加運(yùn)算。其功能框圖如圖2-6所示。乘法器的輸出經(jīng)小數(shù)/整數(shù)乘法(FRCT)輸入控制后加到加法器的一個(gè)輸入端,加法器的另一個(gè)輸入端來自累加器A或B。加法器還包括零檢測器、舍入器(二進(jìn)制補(bǔ)碼)及溢出/飽和邏輯電路。 圖2-6 乘法器/加法器單元功能框圖4比較、選擇和存儲(chǔ)單元(CSSU)比較、選擇和存儲(chǔ)單元(CSSU)是專門為Viterbi算法設(shè)計(jì)的加法/比較/選擇(ACS)操作的硬件單元,其功能框圖如圖2-7所示。CSSU支持均衡器和信道譯碼器所用的各種Viterbi算法。Viterbi算法示意圖如圖2-8所示。 圖2-7 比較、選擇和存儲(chǔ)單元(CSSU)功能框圖圖2-8 Vit

14、erbi算法示意圖5指數(shù)編碼器指數(shù)編碼器用于支持單周期指令EXP的專用硬件。在EXP指令中,累加器中的指數(shù)值能以二進(jìn)制補(bǔ)碼的形式(-831)存儲(chǔ)在T寄存器中。指數(shù)值定義為前面的冗余位數(shù)減8的差值,即累加器中為消除非有效符號(hào)位所需移動(dòng)的位數(shù)。當(dāng)累加器中的值超過32位時(shí),指數(shù)為負(fù)值。6CPU狀態(tài)和控制寄存器TMS320C54x有三個(gè)狀態(tài)和控制寄存器,分別為狀態(tài)寄存器ST0、狀態(tài)寄存器ST1和處理器方式狀態(tài)寄存器PMST。ST0和ST1包括各種工作條件和工作方式的狀態(tài),PMST包括存儲(chǔ)器配置狀態(tài)和控制信息。狀態(tài)寄存器ST0的位結(jié)構(gòu)如圖2-9所示,表2-2所示是ST0的說明。 圖2-9 狀態(tài)寄存器ST

15、0位結(jié)構(gòu)1513121110980ARPTCCOVAOVBDP表2-2 狀態(tài)寄存器ST01514131211109876540BRAFCPLXFHMINTM0OVMSXMC16FRCTCMPTASM圖2-10 狀態(tài)寄存器ST1的位結(jié)構(gòu)表2-3 狀態(tài)寄存器ST1(1)表2-3 狀態(tài)寄存器ST1(2)1576543210IPTRMP/MCOVLYAVISDROMCLKOFFtSMULtSSTt圖2-11 處理器方式狀態(tài)寄存器PMST的位結(jié)構(gòu)表2-4 狀態(tài)寄存器PMST返回本節(jié)2.5 TMS320C54x片內(nèi)外設(shè)簡介1通用I/O引腳2定時(shí)器3時(shí)鐘發(fā)生器4主機(jī)接口(HPI)5串行口6軟件可編程等待狀態(tài)

16、發(fā)生器7可編程分區(qū)轉(zhuǎn)換邏輯返回首頁2.6 硬件復(fù)位操作復(fù)位期間,處理器進(jìn)行以下操作:PMST中的中斷向量指針I(yè)PTR設(shè)置成1FFH。PMST中的MP/位設(shè)置成與引腳MP/狀態(tài)相同的值。PC設(shè)置為FF80H。擴(kuò)展程序計(jì)數(shù)器XPC清0。 無論MP/狀態(tài)如何,將FF80H加到地址總線。返回首頁數(shù)據(jù)線變?yōu)楦咦钁B(tài),控制線處于無效狀態(tài)。產(chǎn)生信號(hào)。ST1中的中斷方式位INTM置1,關(guān)閉所有可屏蔽中斷。中斷標(biāo)志寄存器IFR清0。產(chǎn)生同步復(fù)位信號(hào)(),初始化外圍電路。下列狀態(tài)位置成初始值A(chǔ)RP = 0 CLKOFF = 0 HM = 0 SXM = 1ASM = 0CMPT = 0INTM = 1TC = 1A

17、VIS = 0CPL = 0OVA = 0XF = 1BRAF = 0DP = 0OVB = 0C =1DROM = 0OVLY = 0 C16 = 0FRCT = 0OVM = 0如果MP/=0,程序從片內(nèi)ROM開始執(zhí)行,否則,從片外程序存儲(chǔ)器開始執(zhí)行。返回本節(jié)2.7 TMS320VC5402引腳及說明圖2-12 TMS320VC5402的引腳 1返回首頁圖2-12 TMS320VC5402的引腳2表2-5 TMS320VC5402引腳說明1表2-5 TMS320VC5402引腳說明2表2-5 TMS320VC5402引腳說明3表2-5 TMS320VC5402引腳說明4表2-5 TMS32

18、0VC5402引腳說明5表2-5 TMS320VC5402引腳說明6表2-5 TMS320VC5402引腳說明7返回本節(jié)表2-5 TMS320VC5402引腳說明8第3章 TMS320C54x的數(shù)據(jù)尋址方式3.1 立即尋址3.2 絕對尋址3.3 累加器尋址3.4 直接尋址3.5 間接尋址3.6 存儲(chǔ)器映象寄存器尋址3.7 堆棧尋址TMS320C54x DSP提供以下7種基本數(shù)據(jù)尋址方式。(1)立即數(shù)尋址(2)絕對地址尋址(3)累加器尋址(4)直接尋址(5)間接尋址(6)存儲(chǔ)器映射寄存器尋址(7)堆棧尋址表3-1 尋址指令中用到的縮寫符號(hào)及其含義縮寫符號(hào)含義Smem16位單數(shù)據(jù)存儲(chǔ)器操作數(shù)Xme

19、m在雙操作數(shù)指令及某些單操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲(chǔ)器操作數(shù),從DB總線上讀出Ymem在雙操作數(shù)指令中所用的16位雙數(shù)據(jù)存儲(chǔ)器操作數(shù),從CB總線上讀出;在讀同時(shí)并行寫的指令中表示寫操作數(shù)dmad16位立即數(shù)數(shù)據(jù)存儲(chǔ)器地址(065535)pmad16位立即數(shù)程序存儲(chǔ)器地址(065535)PA16位立即數(shù)I/O口地址(065535)src源累加器(A或B)dst目的累加器(A或B)lk16位長立即數(shù)3.1 立即尋址在立即尋址方式中,指令中包括了立即操作數(shù)。一條指令中可對兩種立即數(shù)編碼,一種是短立即數(shù)(3、5、8或9位),另一種是16位的長立即數(shù)。短立即數(shù)指令編碼為一個(gè)字長,16位立即數(shù)的指令

20、編碼為兩個(gè)字長。立即數(shù)尋址指令中在數(shù)字或符號(hào)常數(shù)前面加一個(gè)“”號(hào),來表示立即數(shù)。返回首頁3.2 絕對尋址3.2.1 數(shù)據(jù)存儲(chǔ)器(dmad)尋址3.2.2 程序存儲(chǔ)器(pmad)尋址3.2.3 端口地址(PA)尋址3.2.4 長立即數(shù)*(lk)尋址返回首頁3.2.1 數(shù)據(jù)存儲(chǔ)器(dmad)尋址使用數(shù)據(jù)存儲(chǔ)器尋址的指令有: MVDK Smem, dmadMVDM dmad, MMR MVKD dmad, SmemMVMD MMR, dmad數(shù)據(jù)存儲(chǔ)器尋址使用符號(hào)(符號(hào)地址)或一個(gè)表示16位地址的立即數(shù)來指明尋址的數(shù)據(jù)存儲(chǔ)單元的16位絕對地址。例如: MVKD SMAPLE,*AR5;返回本節(jié)3.2

21、.2 程序存儲(chǔ)器(pmad)尋址使用程序存儲(chǔ)器尋址的指令有:FIRS Xmem, Ymem, pmadMACD Smem, pmad, srcMACP Smem, pmad, srcMVDP Smem, pmadMVPD pmad, Smem程序存儲(chǔ)器(pmad)尋址使用符號(hào)(符號(hào)地址)或一個(gè)表示16位地址的立即數(shù)來給出程序空間的地址。例如,把程序存儲(chǔ)器中標(biāo)號(hào)為TABLE單元中的值復(fù)制到AR7所指定的數(shù)據(jù)存儲(chǔ)器中去,指令可寫為:MVPD TABLE,*AR7;返回本節(jié)3.2.3 端口地址(PA)尋址使用端口地址的指令有: PORTR PA, Smem PORTW Smem , PA端口地址(P

22、A)尋址使用一個(gè)符號(hào)(符號(hào)地址)或一個(gè)表示16位地址的立即數(shù)來給出外部I/O口地址。例如: PORTR FIFO ,*AR5;返回本節(jié)3.2.4 長立即數(shù)*(lk)尋址長立即數(shù)*(lk)尋址用于所有支持單數(shù)據(jù)存儲(chǔ)器操作數(shù)(Smem)的指令。長立即數(shù)*(lk)尋址使用一個(gè)符號(hào)(符號(hào)地址)或一個(gè)表示16位地址的立即數(shù)來指定數(shù)據(jù)存儲(chǔ)空間的一個(gè)地址。例如,把數(shù)據(jù)空間中地址為BUFFER單元中的數(shù)據(jù)傳送到累加器A,指令可寫為: LD *(BUFFER),A返回本節(jié)3.3 累加器尋址累加器尋址是用累加器中的數(shù)值作為一個(gè)地址讀寫程序存儲(chǔ)器。共有兩條指令可以采用累加器尋址: READA Smem WRITA

23、Smem返回首頁3.4 直接尋址在直接尋址方式中,指令中包含數(shù)據(jù)存儲(chǔ)器地址(dma)的低7位,這7位dma作為地址偏移量,結(jié)合基地址(由數(shù)據(jù)頁指針DP或堆棧指針SP給出)共同形成16位的數(shù)據(jù)存儲(chǔ)器地址。使用這種尋址方式,用戶可在不改變DP或SP的情況下,對一頁內(nèi)的128個(gè)存儲(chǔ)單元隨機(jī)尋址。采用這種尋址方式的好處是指令為單字指令,數(shù)據(jù)存儲(chǔ)器地址(dma)的低7位放在指令字中(如圖3-1、3-2所示)。 返回首頁圖3-1 DP作為基地址的直接尋址方式圖3-2 SP作為基地址的直接尋址方式返回本節(jié)3.5 間接尋址3.5.1 單操作數(shù)尋址3.5.2 雙操作數(shù)尋址返回首頁3.5.1 單操作數(shù)尋址表3-2

24、列出了單數(shù)據(jù)存儲(chǔ)器(Smem)操作數(shù)間接尋址類型。特殊的間接尋址方式有:1循環(huán)尋址2倒序?qū)ぶ罚ㄈ绫?-3所示) 表3-2 單數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址類型表3-3 位倒序?qū)ぶ贩祷乇竟?jié)3.5.2 雙操作數(shù)尋址雙數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址類型為*ARx、*ARx-、*ARx+、*ARx+0%。所用輔助寄存器只能是AR2、AR3、AR4、AR5。其特點(diǎn)是:占用程序空間小,運(yùn)行速度快,在一個(gè)機(jī)器周期內(nèi)通過兩個(gè)16位數(shù)據(jù)總線(C和D)讀兩個(gè)操作數(shù)。指令中Xmem表示從DB總線上讀出的16位操作數(shù),Ymem表示從CB總線上讀出的16位操作數(shù)。 返回本節(jié)3.6 存儲(chǔ)器映象寄存器尋址存儲(chǔ)器映象寄存器尋址用于修改存

25、儲(chǔ)器映象寄存器(MMR)中的內(nèi)容,而不影響當(dāng)前數(shù)據(jù)頁指針DP和當(dāng)前堆棧指針SP。由于這種方式不需要修改DP和SP,對寄存器的寫操作開銷最小。存儲(chǔ)器映象寄存器尋址可用于直接尋址和間接尋址。返回首頁3.7 堆棧尋址當(dāng)發(fā)生中斷或子程序調(diào)用時(shí),系統(tǒng)堆棧自動(dòng)保存PC值。堆棧也可以用于保存和傳遞其他數(shù)據(jù)。堆棧由高地址向低地址增長,處理器使用16位的存儲(chǔ)器映象寄存器堆棧指針(SP)對堆棧進(jìn)行尋址,SP總是指向壓入堆棧的最后一個(gè)數(shù)據(jù)。返回首頁有4條使用堆棧尋址的指令:PSHD 把一個(gè)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)壓入堆棧;PSHM 把一個(gè)存儲(chǔ)器映象寄存器中的值壓入堆棧;POPD 從堆棧中彈出一個(gè)數(shù)據(jù)至數(shù)據(jù)存儲(chǔ)器單元;POPM

26、 從堆棧中彈出一個(gè)數(shù)據(jù)至存儲(chǔ)器映象寄存器。返回本節(jié)第4章 TMS320C54x匯編指令系統(tǒng)4.1 指令系統(tǒng)中的符號(hào)和縮寫4.2 指令系統(tǒng)4.1 指令系統(tǒng)中的符號(hào)和縮寫表4-1 指令系統(tǒng)中的符號(hào)和縮寫返回首頁返回本節(jié)4.2 指令系統(tǒng)4.2.1 算術(shù)運(yùn)算指令4.2.2 邏輯運(yùn)算指令4.2.3 程序控制指令4.2.4 加載和存儲(chǔ)指令返回首頁4.2.1 算術(shù)運(yùn)算指令C54x的算術(shù)運(yùn)算指令包括加法指令、減法指令、乘法指令、乘累加指令與乘法減法指令、雙字/雙精度運(yùn)算指令及專用指令。分別如表4-2、表4-3、表4-4、表4-5、表4-6、表4-7所示。表4-2 加法指令 表4-3 減法指令表4-4 乘法指令

27、表4-5 乘加和乘減指令 表4-6 雙精度(32位操作數(shù))指令表4-7 專用指令返回本節(jié)4.2.2 邏輯運(yùn)算指令邏輯指令包括與、或、異或(按位)、移位和測試指令,分別如表4-8、表4-9、表4-10、表4-11、表4-12所示。表4-8 與邏輯運(yùn)算指令表4-9 或邏輯運(yùn)算指令表4-10 異或邏輯運(yùn)算指令表4-11 移位邏輯運(yùn)算指令表4-12 測試指令返回本節(jié)4.2.3 程序控制指令程序控制指令包括分支轉(zhuǎn)移指令、子程序調(diào)用指令、中斷指令、返回指令、重復(fù)指令、堆棧操作指令及混合程序控制指令,分別如表4-13、表4-14、表4-15、表4-16、表4-17、表4-18及表4-19所示。表4-13 分

28、支轉(zhuǎn)移指令表4-14 子程序調(diào)用指令表4-15 中斷指令表4-16 返回指令表4-17 重復(fù)指令表4-18 堆棧操作指令表4-19 混合程序控制指令返回本節(jié)4.2.4 加載和存儲(chǔ)指令加載和存儲(chǔ)指令包括加載指令、存儲(chǔ)指令、條件存儲(chǔ)指令、并行加載和存儲(chǔ)指令、并行加載和乘法指令、并行存儲(chǔ)和加/減法指令、混合加載和存儲(chǔ)指令,分別如表4-20、表4-21、表4-22、表4-23、表4-24、表4-25、表4-26及表4-27所示。加載指令是將存儲(chǔ)器內(nèi)容或立即數(shù)賦給目的寄存器;存儲(chǔ)指令是把源操作數(shù)或立即數(shù)存入存儲(chǔ)器或寄存器。 表4-20 加載指令表4-21 存儲(chǔ)指令表4-22 條件存儲(chǔ)指令表4-23 并行

29、加載和存儲(chǔ)指令表4-24 并行加載和乘法指令表4-25 并行存儲(chǔ)和加/減法指令表4-26 并行存儲(chǔ)和乘法指令表4-27 混合加載和存儲(chǔ)指令(數(shù)據(jù)塊傳送指令)返回本節(jié)第5章 TMS320C54x軟件開發(fā)5.1 軟件開發(fā)過程及開發(fā)工具5.2 公共目標(biāo)文件格式5.3 常用匯編偽指令5.4 鏈接器命令文件的編寫與使用5.5 匯編語言程序編寫方法5.6 TMS320C54x C語言編程5.7 用C語言和匯編語言混合編程5.1 軟件開發(fā)過程及開發(fā)工具1建立源程序2C編譯器(C Compiler)3匯編器(Assembler)4連接器(Linker)5調(diào)試工具6十六進(jìn)制轉(zhuǎn)換公用程序(Hex Conversi

30、on Utility) 返回首頁圖5-1 TMS320C54x DSP軟件開發(fā)流程表5-1 TMS320C54xV3.50版代碼生成工具程序返回本節(jié)5.2 公共目標(biāo)文件格式5.2.1 COFF文件的基本單元段5.2.2 匯編器對段的處理5.2.3 鏈接器對段的處理5.2.4 重新定位5.2.5 程序裝入5.2.6 COFF文件中的符號(hào) 返回首頁5.2.1 COFF文件的基本單元段段(sections)是COFF文件中最重要的概念。一個(gè)段就是最終在存儲(chǔ)器映象中占據(jù)連續(xù)空間的一個(gè)數(shù)據(jù)或代碼塊。目標(biāo)文件中的每一個(gè)段都是相互獨(dú)立的。一般地,COFF目標(biāo)文件包含3個(gè)缺省的段:text段、data段、bs

31、s段。段可以分為兩大類,即已初始化段和未初始化段。如圖5-2所示為目標(biāo)文件中的段與目標(biāo)系統(tǒng)中存儲(chǔ)器的關(guān)系。圖5-2 目標(biāo)文件中的段與目標(biāo)存儲(chǔ)器的關(guān)系返回本節(jié)5.2.2 匯編器對段的處理1未初始化段未初始化段主要用來在存儲(chǔ)器中保留空間,通常將它們定位到RAM中。這些段在目標(biāo)文件中沒有實(shí)際內(nèi)容,只是保留空間而已。程序可以在運(yùn)行時(shí)利用這些空間建立和存儲(chǔ)變量。未初始化段是通過使用.bss和.usect匯編偽指令建立的,兩條偽指令的句法分別為:.bss符號(hào),字?jǐn)?shù) 符號(hào).usect“段名”,字?jǐn)?shù)2已初始化段已初始化段包含可執(zhí)行代碼或已初始化數(shù)據(jù)。這些段的內(nèi)容存儲(chǔ)在目標(biāo)文件中,加載程序時(shí)再放到TMS320C

32、54X存儲(chǔ)器中。三個(gè)用于建立初始化段的偽指令句法分別為: .text段起點(diǎn) .data段起點(diǎn) .sect“段名”,段起點(diǎn)3命名段命名段就是程序員自己定義的段,它與缺省的.text、.data和.bss段一樣使用,但與缺省段分開匯編。 data段不同的存儲(chǔ)器中,將未初始化的變量匯編到與bss段不同的存儲(chǔ)器中。產(chǎn)生命名段的偽指令為: 符號(hào).usect“段名”,字?jǐn)?shù) .sect“段名”,段起點(diǎn)4子段子段(Subsections)是大段中的小段。鏈接器可以像處理段一樣處理子段。采用子段可以使存儲(chǔ)器圖更加緊密。子段的命名句法為: 基段名:子段名子段也有兩種,用.sect命令建立的是已初始化段,用.use

33、ct命令建立的是未初始化段。5段程序計(jì)數(shù)器(SPC)匯編器為每個(gè)段安排一個(gè)獨(dú)立的程序計(jì)數(shù)器,即段程序計(jì)數(shù)器(SPC)。SPC表示一個(gè)程序代碼段或數(shù)據(jù)段內(nèi)的當(dāng)前地址。開始時(shí),匯編器將每個(gè)SPC置0,當(dāng)匯編器將程序代碼或數(shù)據(jù)加到一個(gè)段內(nèi)時(shí),相應(yīng)的SPC增加。如果匯編器再次遇到相同段名的段,繼續(xù)匯編至相應(yīng)的段,且相應(yīng)的SPC在先前的基礎(chǔ)上繼續(xù)增加。圖5-3 例5-1產(chǎn)生的目標(biāo)代碼返回本節(jié)5.2.3 鏈接器對段的處理鏈接器對段的處理有兩個(gè)功能。首先,它將匯編器產(chǎn)生的COFF目標(biāo)文件(.obj文件)中的各種段作為輸入段,當(dāng)有多個(gè)文件進(jìn)行鏈接時(shí),它將輸入段組合起來,在可執(zhí)行的COFF輸出模塊中建立各個(gè)輸出

34、段。其次,鏈接器為輸出段選擇存儲(chǔ)器地址。鏈接器有兩個(gè)命令完成上述功能,即:MEMORY 命令定義目標(biāo)系統(tǒng)的存儲(chǔ)器配置圖,包括對存儲(chǔ)器各部分的命名,以及規(guī)定它們的起始地址和長度。SECTIONS命令告訴鏈接器如何將輸入段組合成輸出段,以及在存儲(chǔ)器何處存放輸出段。子段可以用來更精確地編排段,可用鏈接器SECTIONS命令指定子段。 圖5-4 鏈接器默認(rèn)的存儲(chǔ)器分配返回本節(jié)5.2.4 重新定位1鏈接時(shí)重新定位將各個(gè)段定位到存儲(chǔ)器中,每個(gè)段都從合適的地址開始。將符號(hào)值調(diào)整到相對于新的段地址的數(shù)值。調(diào)整對重新定位后符號(hào)的引用。2運(yùn)行時(shí)重新定位將代碼裝入存儲(chǔ)器的一個(gè)地方,而運(yùn)行在另一個(gè)地方。利用SECTI

35、ONS命令選項(xiàng)讓鏈接器定位兩次。一些關(guān)鍵的執(zhí)行代碼必須裝入在系統(tǒng)的ROM中,但希望在較快的RAM中運(yùn)行。鏈接器提供了一個(gè)簡單的處理該問題的方法。利用SECTIONS命令選項(xiàng)讓鏈接器定位兩次。第一次使用裝入關(guān)鍵字設(shè)置裝入地址,再用運(yùn)行關(guān)鍵字設(shè)置運(yùn)行地址。返回本節(jié)5.2.5 程序裝入(1)硬件仿真器和CCS集成開發(fā)環(huán)境,具有內(nèi)部的裝入器,調(diào)用裝入器的LOAD命令即可裝入可執(zhí)行程序。(2)將代碼固化在片外存儲(chǔ)器中,采用Hex轉(zhuǎn)換工具(Hex conversion utility),例如Hex500將可執(zhí)行的COFF目標(biāo)模塊(.out文件)轉(zhuǎn)換成幾種其他目標(biāo)格式文件,然后將轉(zhuǎn)換后的文件用編程器將代碼寫

36、入EPROM/Flash。 返回本節(jié)5.2.6 COFF文件中的符號(hào)COFF文件中有一個(gè)符號(hào)表,用于存儲(chǔ)程序中的符號(hào)信息。鏈接器對符號(hào)重定位時(shí)使用該表,調(diào)試工具也使用該表來提供符號(hào)調(diào)試。外部符號(hào)指在一個(gè)模塊中定義,在另一個(gè)模塊中使用的符號(hào)??墒褂?def、.ref或.global匯編偽指令將符號(hào)定義為外部符號(hào)。.def在當(dāng)前模塊中定義,可以在別的模塊中使用的符號(hào);.ref在當(dāng)前模塊中引用,但在別的模塊中定義的符號(hào);.global可用于以上任何一種情況。返回本節(jié)5.3 常用匯編偽指令返回首頁表5-2 常用的匯編偽指令1段定義偽指令為便于鏈接器將程序、數(shù)據(jù)分段定位于指定的(物理存在的)存儲(chǔ)器空間,

37、并將不同的obj文件鏈接起來。段的使用非常靈活,但常用以下約定:.text 此段存放程序代碼。.data 此段存放初始化了的數(shù)據(jù)。.bss 此段存入未初始化的變量。.sect 名稱 定義一個(gè)有名段,放初始化了的數(shù)據(jù)或程序代碼。2條件匯編偽指令.if、.elseif、.else、.endif偽指令告訴匯編器按照表達(dá)式的計(jì)算結(jié)果對代碼塊進(jìn)行條件匯編。.if expression 標(biāo)志條件塊的開始,僅當(dāng)條件為真(expression的值非0即為真)時(shí)匯編代碼。.elseif expression 標(biāo)志若.if條件為假,而.elseif條件為真時(shí)要匯編代碼塊。.else 標(biāo)志若.if條件為假時(shí)要匯編代

38、碼塊。.endif 標(biāo)志條件塊的結(jié)束,并終止該條件代碼塊。3引用其他文件和初始化常數(shù)偽指令.include 文件名 將指定文件復(fù)制到當(dāng)前位置,其內(nèi)容可以是程序、數(shù)據(jù)、符號(hào)定義等。.copy 文件名 與.include類似。.def 符號(hào)名 在當(dāng)前文件中定義一個(gè)符號(hào),可以被其他文件使用。.ref 符號(hào)名 在其他文件中定義,可以在本文件中使用的符號(hào)。.global 符號(hào)名 其作用相當(dāng)于.def、.ref效果之和。.mmregs 定義存儲(chǔ)器映射寄存器的符號(hào)名,這樣就可以用AR0、PMST等助記符替換實(shí)際的存儲(chǔ)器地址。.float 數(shù)1,數(shù)2 指定的各浮點(diǎn)數(shù)連續(xù)放置到存儲(chǔ)器中(從當(dāng)前段指針開始)。.w

39、ord 數(shù)1,數(shù)2 指定的各數(shù)(十六進(jìn)制)連續(xù)放置到存儲(chǔ)器中。.space n 以位為單位,空出n位存儲(chǔ)空間。.end 程序塊結(jié)束。4宏定義和宏調(diào)用TMS320C54x匯編支持宏語言。如果程序中需要多次執(zhí)行某段程序,可以把這段程序定義(宏定義)為一個(gè)宏,然后在需要重復(fù)執(zhí)行這段程序的地方調(diào)用這條宏。宏定義如下:Macname .macroparameter 1,parameter n .mexit .endm 返回本節(jié)5.4 鏈接器命令文件的編寫與使用5.4.1 MEMORY偽指令及其使用5.4.2 SECTIONS偽指令及其使用 返回首頁5.4.1 MEMORY偽指令及其使用MEMORY偽指令

40、就是用來指定目標(biāo)存儲(chǔ)器的模型。MEMORY偽指令的一般語法為: SECTIONS name : property ,property ,property . name : property ,property ,property . name : property ,property ,property . 返回本節(jié)5.4.2 SECTIONS偽指令及其使用SECTIONS偽指令功能如下: 說明如何將輸入段組合成輸出段。在可執(zhí)行程序中定義輸出段。指定輸出段在存儲(chǔ)器中存放的位置。允許對輸出段重新命名。圖5-5 例5-6中段的定位返回本節(jié)5.5 匯編語言程序編寫方法5.5.1 匯編語言源程序格式5

41、.5.2 匯編語言中的常數(shù)和字符串5.5.3 匯編源程序中的符號(hào)5.5.4 匯編源程序中的表達(dá)式 返回首頁5.5.1 匯編語言源程序格式助記符指令一般包含4個(gè)部分,其一般組成形式為:標(biāo)號(hào): 助記符 操作數(shù) ;注釋1標(biāo)號(hào)區(qū)所有匯編指令和大多數(shù)匯編偽指令前面都可以帶有標(biāo)號(hào),標(biāo)號(hào)可以長達(dá)32個(gè)字符,由AZ、az、09、_、和$符號(hào)組成,且第一個(gè)字符不能是數(shù)字,區(qū)分大小寫。 2助記符區(qū)助記符區(qū)不能從第一列開始,否則被認(rèn)為是標(biāo)號(hào)。3操作數(shù)區(qū)操作數(shù)區(qū)是一個(gè)操作數(shù)列表,可以是常數(shù)、符號(hào)或常數(shù)與符號(hào)構(gòu)成的表達(dá)式。操作數(shù)間需用“,”號(hào)隔開。4注釋區(qū)注釋區(qū)可以從任何一列開始,可以包含ASCII字符和空格。 返回本

42、節(jié)5.5.2 匯編語言中的常數(shù)和字符串表5-3 COFF常數(shù)與字符串返回本節(jié)5.5.3 匯編源程序中的符號(hào)1標(biāo)號(hào)2局部標(biāo)號(hào)3符號(hào)常數(shù)4先定義的符號(hào)常數(shù)5替代符號(hào)表5-4 可以用在表達(dá)式中的運(yùn)算符表5-5 帶有絕對符號(hào)、可重定位符號(hào)的表達(dá)式返回本節(jié)5.5.4 匯編源程序中的表達(dá)式表達(dá)式可以是常數(shù)、符號(hào)或由算術(shù)運(yùn)算符結(jié)合的常數(shù)和符號(hào)。表達(dá)式值的有效范圍為-3276832767。1運(yùn)算符(表5-4 所示)2合格的表達(dá)式(表5-5所示 )返回本節(jié)5.6 TMS320C54x C語言編程5.6.1 存儲(chǔ)器模式5.6.2 寄存器規(guī)則5.6.3 函數(shù)調(diào)用規(guī)則5.6.4 中斷處理5.6.5 表達(dá)式分析 返回首

43、頁5.6.1 存儲(chǔ)器模式1段C54x將存儲(chǔ)器處理為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)線性塊。程序存儲(chǔ)器包含可執(zhí)行代碼;數(shù)據(jù)存儲(chǔ)器主要包含外部變量、靜態(tài)變量和系統(tǒng)堆棧。編譯器的任務(wù)是產(chǎn)生可重定位的代碼,允許鏈接器將代碼和數(shù)據(jù)定位進(jìn)合適的存儲(chǔ)空間。C編譯器對C語言編譯后除了生成3個(gè)基本段,即.text、.data、.bss外,還生成.cinit、.const、.stack、.sysmem段。2C/C+系統(tǒng)堆棧.stack不同于DSP匯編指令定義的堆棧。DSP匯編程序中要將堆棧指針SP指向一塊RAM,用于保存中斷、調(diào)用時(shí)的返回地址,存放PUSH指令的壓棧內(nèi)容。.stack定義的系統(tǒng)堆棧實(shí)現(xiàn)的功能是保護(hù)函數(shù)的

44、返回地址,分配局部變量,在調(diào)用函數(shù)時(shí)用于傳遞參數(shù),保護(hù)臨時(shí)結(jié)果。.stack定義的段大?。ǘ褩4笮。┛捎面溄悠鬟x項(xiàng)-stack size設(shè)定,鏈接器還產(chǎn)生一個(gè)全局符號(hào)_ _STACK_SIZE,并賦給它等于堆棧長度的值,以字為單位,缺省值為1K。3存儲(chǔ)器分配(1)運(yùn)行時(shí)間支持函數(shù)。 (2)動(dòng)態(tài)存儲(chǔ)器分配。 (3)靜態(tài)和全局變量的存儲(chǔ)器分配。(4)位域/結(jié)構(gòu)的對準(zhǔn)。 返回本節(jié)5.6.2 寄存器規(guī)則寄存器規(guī)則明確了編譯器如何使用寄存器以及在函數(shù)調(diào)用過程中如何保護(hù)寄存器。(1)輔助寄存器 (2)堆棧指針SP (3)ARP (4)在默認(rèn)情況下,編譯器總是假定ST1中的OVM在硬件復(fù)位時(shí)被清0。若在匯編

45、代碼中對OVM置位為1,返回到C環(huán)境時(shí)必須復(fù)位。(5)寄存器變量 返回本節(jié)5.6.3 函數(shù)調(diào)用規(guī)則(1)局部幀的產(chǎn)生 (2)參數(shù)傳遞 (3)函數(shù)的返回 返回本節(jié)5.6.4 中斷處理(1)中斷的使能和屏蔽必須由程序員自己來設(shè)置。 (2)中斷程序沒有參數(shù)傳遞,即使說明,也會(huì)被忽略(3)中斷處理程序不能被正常的C程序調(diào)用。(4)為了使中斷程序與中斷一致,在相應(yīng)的中斷矢量中必須放置一條轉(zhuǎn)移指令,可以用.sect匯編偽指令建立一個(gè)簡單的跳轉(zhuǎn)指令表來完成此項(xiàng)功能。(5)在匯編語言中,注意在符號(hào)名前面加上一個(gè)下劃線,例如c_int00記為_ c_int00。(6)中斷程序使用的所有寄存器,包括狀態(tài)寄存器和程

46、序中調(diào)用函數(shù)使用的寄存器都必須予以保護(hù)。(7)TMS320C54x C編譯器將C語言進(jìn)行了擴(kuò)展,中斷可以利用interrupt關(guān)鍵字由C/C+函數(shù)直接處理。返回本節(jié)5.6.5 表達(dá)式分析當(dāng)C程序中需要計(jì)算整型表達(dá)式時(shí),必須注意以下幾點(diǎn):(1)算術(shù)上溢和下溢。 (2)整除和取模。 (3)C代碼對16位乘法結(jié)果高16位的訪問。 返回本節(jié)5.7 用C語言和匯編語言混合編程5.7.1 獨(dú)立的C模塊和匯編模塊接口5.7.2 從C程序中訪問匯編程序變量5.7.3 在C程序中直接嵌入?yún)R編語句 返回首頁5.7.1 獨(dú)立的C模塊和匯編模塊接口在編寫?yīng)毩⒌膮R編程序時(shí),必須注意以下幾點(diǎn):(1)不論是用C語言編寫的函

47、數(shù)還是用匯編語言編寫的函數(shù),都必須遵循寄存器使用規(guī)則。(2)必須保護(hù)函數(shù)要用到的幾個(gè)特定寄存器。 (3)中斷程序必須保護(hù)所有用到的寄存器。(4)從匯編程序調(diào)用C函數(shù)時(shí),第一個(gè)參數(shù)(最左邊)必須放入累加器A中,剩下的參數(shù)按自右向左的順序壓入堆棧。(5)調(diào)用C函數(shù)時(shí),注意C函數(shù)只保護(hù)了幾個(gè)特定的寄存器,而其他是可以自由使用的。(6)長整型和浮點(diǎn)數(shù)在存儲(chǔ)器中存放的順序是低位字在高地址,高位字在低地址。(7)如果函數(shù)有返回值,返回值存放在累加器A中。 (8)匯編語言模塊不能改變由C模塊產(chǎn)生的.cinit段,如果改變其內(nèi)容將會(huì)引起不可預(yù)測的后果。(9)編譯器在所有標(biāo)識(shí)符(函數(shù)名、變量名等)前加下劃線“_

48、”。 (10)任何在匯編程序中定義的對象或函數(shù),如果需要在C程序中訪問或調(diào)用,則必須用匯編指令.global定義。 (11)編輯模式CPL指示采用何種指針尋址,如果CPL=1,則采用堆棧指針SP尋址;如果CPL=0,則選擇頁指針DP進(jìn)行尋址。 返回本節(jié)5.7.2 從C程序中訪問匯編程序變量從C程序中訪問在匯編程序中定義的變量或常數(shù),可以分為以下3種情況:(1)訪問在.bss塊中定義的變量 (2)對于訪問不在.bss塊中定義的變量 (3)對于在匯編程序中用.set和.global偽指令定義的全局常數(shù),也可以使用特殊的操作從C程序中訪問它們。 返回本節(jié)5.7.3 在C程序中直接嵌入?yún)R編語句在C程序

49、中嵌入?yún)R編語句是一種直接的C模塊和匯編模塊接口方法。采用這種方法一方面可以在C程序中實(shí)現(xiàn)用C語言難以實(shí)現(xiàn)的一些硬件控制功能。另一方面,也可以用這種方法在C程序中的關(guān)鍵部分用匯編語句代替C語句以優(yōu)化程序。采用這種方法的一個(gè)缺點(diǎn)是它比較容易破壞C環(huán)境,因?yàn)镃編譯器在編譯嵌入了匯編語句的C程序時(shí)并不檢查或分析所嵌入的匯編語句。返回本節(jié)第6章 CCS集成開發(fā)環(huán)境6.1 CCS系統(tǒng)安裝與設(shè)置6.2 CCS菜單和工具欄6.3 CCS中的編譯器、匯編器和鏈接器選項(xiàng)設(shè)置6.4 用CCS開發(fā)簡單的程序6.5 在CCS中讀取數(shù)據(jù)和數(shù)據(jù)的圖形顯示6.6 代碼執(zhí)行時(shí)間分析(Profiler的使用)6.1 CCS系統(tǒng)安

50、裝與設(shè)置6.1.1 CCS系統(tǒng)安裝6.1.2 為CCS安裝設(shè)備驅(qū)動(dòng)程序 返回首頁6.1.1 CCS系統(tǒng)安裝CCS對PC機(jī)的最低要求為Windows 95、32M RAM、100M剩余硬盤空間、奔騰90以上處理器、SVGA顯示器(分辨率800600以上)。進(jìn)行CCS系統(tǒng)安裝時(shí),先將CCS安裝盤插入CD-ROM驅(qū)動(dòng)器中,運(yùn)行光盤根目錄下的setup.exe,按照安裝向?qū)У奶崾緦CS安裝到硬盤中。安裝完成后,安裝程序?qū)⒆詣?dòng)在計(jì)算機(jī)桌面上創(chuàng)建如圖6-1所示的“CCS 2(C5000)”,“Setup CCS 2 (C5000)”等快捷圖標(biāo)。圖6-1 “CCS 2(C5000)”和“Setup CCS

51、 2 (C5000)”快捷圖標(biāo)返回本節(jié)6.1.2 為CCS安裝設(shè)備驅(qū)動(dòng)程序在安裝CCS之后、運(yùn)行CCS軟件之前,首先需要運(yùn)行CCS設(shè)置程序,根據(jù)用戶所擁有的軟、硬件資源對CCS進(jìn)行適當(dāng)?shù)呐渲谩?dòng)Setup CCS 2(C5000)應(yīng)用程序,單擊Close按鈕關(guān)閉Import Configuration對話框,將顯示Code Composer Studio Setup窗口,如圖6-2所示。 圖6-2 Code Compuser studio Setup窗口返回本節(jié)6.2 CCS菜單和工具欄6.2.1 菜單6.2.2 工具欄 返回首頁圖6-3 并口調(diào)試管理器圖6-4 CCS運(yùn)行主窗口 6.2.1

52、 菜單1File菜單表6-1 File菜單2Edit菜單表6-2 Edit菜單3View菜單表6-3 View菜單4Project菜單表6-4 Project菜單5Debug菜單表6-5 Debug菜單6Profiler菜單表6-6 Profiler菜單圖6-5 時(shí)鐘設(shè)置7Option菜單表6-7 Option菜單圖6-6 Memory Map對話框 8Tools菜單表6-8 Tools菜單返回本節(jié)6.2.2 工具欄1Standard ToolbarStandard工具欄包括以下常用工具如圖6-7所示:圖6-7 Standard工具欄2GEL ToolbarGEL工具欄提供了執(zhí)行GEL函數(shù)的一

53、種快捷方法,如圖6-8所示。在工具欄的左側(cè)文本輸入框中鍵入GEL函數(shù)名,再單擊右側(cè)的執(zhí)行按鈕即可執(zhí)行相應(yīng)的函數(shù)。如果不使用GEL工具欄,也可以使用Edit菜單下的Edit Command Line命令執(zhí)行GEL函數(shù)。圖6-8 GEL工具欄 3Project ToolbarProject工具欄提供了與工程和斷點(diǎn)設(shè)置有關(guān)的命令,Project工具欄提供了以下命令如圖6-9所示。 圖6-9 Project工具欄 4Debug ToolbarDebug工具欄提供以下常用的調(diào)試命令如圖6-10所示。圖6-10 Debug工具欄 5Edit ToolbarEdit工具欄提供了一些常用的編輯命令及書簽命令如

54、圖6-11所示。圖6-11 Edit工具欄6Plug-in ToolbarsPlug-in Toolbars包括Watch Window和DSP/BIOS兩個(gè)窗口,其中Watch Window如圖6-12所示。圖6-12 Watch Window 工具欄返回本節(jié)6.3 CCS中的編譯器、匯編器和鏈接器選項(xiàng)設(shè)置6.3.1 編譯器、匯編器選項(xiàng)6.3.2 鏈接器選項(xiàng) 返回首頁6.3.1 編譯器、匯編器選項(xiàng)編譯器(Compiler)包括分析器、優(yōu)化器和代碼產(chǎn)生器,它接收C/C+源代碼并產(chǎn)生TMS320C54x匯編語言源代碼。匯編器(Assembler)的作用就是將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)文件,

55、這些目標(biāo)文件都是公共目標(biāo)文件格式(COFF)。如圖6-13、表6-9所示。圖6-13 生成選項(xiàng)窗口編譯器標(biāo)簽表6-9 編譯器、匯編器常用選項(xiàng)(在Compiler中)返回本節(jié)6.3.2 鏈接器選項(xiàng)在匯編程序生成代碼中,鏈接器的作用如下:(1)根據(jù)鏈接命令文件(.cmd文件)將一個(gè)或多個(gè)COFF目文件鏈接起來,生成存儲(chǔ)器映象文件(.map)和可執(zhí)行的輸出文件(.out文件)。(2)將段定位于實(shí)際系統(tǒng)的存儲(chǔ)器中,給段、符號(hào)指定實(shí)際地址。(3)解決輸入文件之間未定義的外部符號(hào)引用(如圖6-14、表6-10所示)。圖6-14 生成選項(xiàng)窗口鏈接器標(biāo)簽 表6-10 鏈接器常用選項(xiàng)(在Linker中) 返回本

56、節(jié)6.4 用CCS開發(fā)簡單的程序1創(chuàng)建新的工程文件工程文件中包含著設(shè)計(jì)中所有的源代碼文件、鏈接器命令文件、庫函數(shù)、頭文件等。(1)在CCS的安裝目錄的myprojects子目錄下創(chuàng)建一個(gè)volume1目錄。 (2)啟動(dòng)CCS,在Project菜單中選擇New項(xiàng),在Project中輸入volume1,CCS將創(chuàng)建一個(gè)名為volume1.pjt的工程。 返回首頁2.將文件添加到工程中(1)將文件添加到工程中 (2)察看工程的結(jié)構(gòu)(如圖6-15所示)。(3)查看代碼 圖6-15 工程視窗3生成和運(yùn)行程序(1)選擇菜單命令ProjectRebuild All,對工程重新編譯、匯編和鏈接,主窗口下方的信

57、息窗口將顯示build進(jìn)行匯編、編譯和鏈接的相關(guān)信息。(2)選擇菜單命令FileLoad Program,在當(dāng)前目錄的Debug目錄下選擇volume1.out并打開,將Build生成的程序加載到DSP中。 (3)選擇菜單命令DebugRun或在Debug工具欄上單擊Run按鈕,運(yùn)行該程序。 4改變Build選項(xiàng)并修改程序語法錯(cuò)誤選擇菜單命令ProjectBuild Options,彈出Build Options窗口,選擇Compiler標(biāo)簽,在類(Category)列表中選擇預(yù)處理(Preprocessor),如圖6-16所示。在Define Symbols域中鍵入FILEIO,定義符號(hào)FI

58、LEIO。此時(shí),在命令輸入和顯示窗口看到-d“FILEIO”。 5斷點(diǎn)和觀察窗口的應(yīng)用(1)選擇菜單命令FileReload Program,重新加載程序(即加載volum1.out)。(2)在工程視圖中雙擊volume.c,打開源文件編輯窗口,將光標(biāo)放在dataIO()行上,并按F9鍵或工具欄中的設(shè)置斷點(diǎn)。(3)選擇菜單命令ViewWatch Window,彈出Watch窗口(如下圖)。 圖6-16 在Build Options 窗口定義FILEIO 圖6-17 觀察窗口觀察結(jié)構(gòu)體變量的值返回本節(jié)6.5 在CCS中讀取數(shù)據(jù)和數(shù)據(jù)的圖形顯示6.5.1 探點(diǎn)的設(shè)置及從PC機(jī)文件中讀取數(shù)據(jù)6.5.

59、2 靜態(tài)圖形顯示6.5.3 動(dòng)態(tài)圖形顯示 返回首頁6.5.1 探點(diǎn)的設(shè)置及從PC機(jī)文件中讀取數(shù)據(jù)(1)選擇菜單命令FileLoad Program,選擇Volume1.out并打開。(2)在工程視圖中雙擊Volume.c,在右邊的編輯窗口中將顯示源代碼。(3)將光標(biāo)放在主函數(shù)中的dataIO()那一行上。(4)單擊圖標(biāo),該行旁邊藍(lán)色標(biāo)志表示設(shè)置了一個(gè)探點(diǎn)。(5)在File菜單中選擇File I/O,打開File I/O對話框。(6)點(diǎn)擊File Input標(biāo)簽,然后單擊Add File按鈕。 (7)選擇sine.dat文件,單擊Open按鈕,出現(xiàn)如圖6-18所示的sine.dat文件控制窗口,

60、可以在運(yùn)行程序時(shí)使用這個(gè)窗口來控制數(shù)據(jù)文件的開始、停止、前進(jìn)、后退等操作。(8)在File I/O對話框中,在Address域中填入inp_buffer,在Length域中填入100,同時(shí)選中Wrap Around復(fù)選框,如圖6-19所示。(9)在File I/O對話框中單擊Add Probe Point按鈕,彈出Break/Probe Points對話框,如圖6-20所示。 (10)在Connect域,單擊下拉箭頭,并從列表中選擇sine.dat。(11)單擊Replace按鈕,Probe Point列表指示Probe Point已與sine.dat文件相關(guān)聯(lián)。(12)單擊“確定”按鈕。注意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論