




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
4.2DSP集成開發(fā)環(huán)境—CCS及DSP/BIOS的原理與應(yīng)用CCS:codecomposerstudio14.2DSP集成開發(fā)環(huán)境—CCS及DSP/BIOS的原理3.1CCS的功能特點與安裝3.2基于CCS開發(fā)DSP軟件3.3利用CCS調(diào)試應(yīng)用程序3.4CCS高級工具的使用3.5DSP/BIOS的功能3.6DSP/BIOS的高級應(yīng)用3.7基于CCS的DSP片級支持庫23.1CCS的功能特點與安裝2概述TMS320C6000DSP有一套完整的開發(fā)系統(tǒng)C/C++compiler:.c.asm
將ANSIC或C++語言編寫的程序轉(zhuǎn)換為面向DSP的匯編代碼 直接利用高級語言實現(xiàn)DSP軟件的初步設(shè)計,縮短開發(fā)周期Assemblycompiler:.sa.asm
允許開發(fā)者編寫線性匯編代碼而無需考慮流水線結(jié)構(gòu)和寄存器分配,它可以自動分配寄存器以及利用循環(huán)優(yōu)化將線性匯編轉(zhuǎn)化為利用軟件流水線的高度并行匯編代碼Assembler:.asm.obj
將匯編代碼翻譯成DSP可以執(zhí)行的機器語言Linker:.obj.out
將目標(biāo)文件組合成一個單獨的可執(zhí)行目標(biāo)模塊。當(dāng)它創(chuàng)建可執(zhí)行模塊時,分配段到目標(biāo)系統(tǒng)所配置的內(nèi)存,重新分配符號和段到最終地址,并且解決未定義符號的外部引用的問題。3概述TMS320C6000DSP有一套完整的開發(fā)系統(tǒng)3Cdebugger 是一種先進的編程接口協(xié)助編程者開發(fā)、測試C6x的C程序以及匯編程序,也是C6xsimulator和emulator的接口。 調(diào)試器通過圖形界面直觀地將代碼、數(shù)據(jù)和命令分開顯示。動態(tài)的性能分析工具提供了對代碼執(zhí)行進行統(tǒng)計的手段,可以直接反饋程序的性能進而確定和解決代碼瓶頸。Simulator
通過模擬DSP硬件對代碼的執(zhí)行,方便用戶進行軟件的開發(fā)和調(diào)試。用戶可以在沒有目標(biāo)板的情況下編寫軟件,有限的模擬一些硬件功能。Emulator
基于邊界掃描協(xié)議的系統(tǒng)仿真工具,用于系統(tǒng)集成階段的軟件和硬件聯(lián)調(diào)。通過JTAG接口,可以訪問DSP器件的全部內(nèi)存和寄存器,方便有效的硬件對軟件執(zhí)行的調(diào)試工作。DSK入門開發(fā)套件(DSK)
代碼開發(fā)工具,包括基于TMS320C6000DSPs的板卡,軟硬件仿真環(huán)境可以與PC通信,很適合初步接觸DSP的學(xué)習(xí)者入門和進一步熟悉提高4Cdebugger4CCS(CodeComposerStudio)功能簡介CCS是一個基于Windows的DSP集成開發(fā)環(huán)境;加速和提高程序員創(chuàng)建與測試實時嵌入式信號處理系統(tǒng)的開發(fā)過程CCS是一個完整的DSP集成開發(fā)環(huán)境;也是目前最優(yōu)秀、最流行的DSP開發(fā)軟件之一CCS為TIDSP家族的C2000(版本2.2以上)、C5000和C6000系列DSP提供DSP/BIOS功能,而在C3x中是沒有DSP/BIOS功能的CCS具有實時、多任務(wù)、可視化的軟件開發(fā)特點,已經(jīng)成為TIDSP家族的程序設(shè)計、制作、調(diào)試、優(yōu)化的利器5CCS(CodeComposerStudio)功能簡介C(1)集成可視化代碼編輯界面,可直接編寫C、匯編、.h文件、.cmd文件(2)集成代碼生成工具,包括編輯器、優(yōu)化C編譯器、連接器等(3)基本調(diào)試工具,如裝入執(zhí)行代碼(.out文件),查看寄存器、存儲器、反匯編、變量窗口等,支持C源代碼級調(diào)試。(4)支持多DSP調(diào)試(5)斷點工具,包括硬件斷點、數(shù)據(jù)空間讀/寫斷點、條件斷點等(6)探針(Probe)工具,可用于算法仿真、數(shù)據(jù)監(jiān)視等。(7)剖析(Profile)工具,可用于評估代碼執(zhí)行的時鐘數(shù)CCS主要包含了以下功能6(1)集成可視化代碼編輯界面,可直接編寫C、匯編、.h文件數(shù)據(jù)的圖形顯示工具,可繪制時域/頻域波形、眼圖、星座圖、圖象等,并可自動刷新提供GEL工具,用戶可以編寫自己的控制面板/菜單,方便直觀地修改變量,配置參數(shù)等支持RTDX技術(shù),可在不中斷目標(biāo)系統(tǒng)運行的情況下,實現(xiàn)DSP與其他應(yīng)用程序的數(shù)據(jù)交換開放式的Plug-in技術(shù),支持其他第三方的ActiveX插件,支持包括軟仿真在內(nèi)的各種仿真器(只需安裝相應(yīng)的驅(qū)動程序)提供DSP/BIOS工具,增強對代碼的實時分析能力(如分析代碼執(zhí)行的效率)、調(diào)度程序執(zhí)行的優(yōu)先級、方便管理或使用系統(tǒng)資源(代碼/數(shù)據(jù)占用空間、中斷服務(wù)程序的調(diào)用、定時器使用等),從而減少開發(fā)人員對硬件資源熟悉程度的依賴性7數(shù)據(jù)的圖形顯示工具,可繪制時域/頻域波形、眼圖、星座圖、圖象CCS是運行在一系列仿真設(shè)備(軟仿真器Simulator、硬仿真器Emulator、DSP入門套件DSK、DSP評估板EVM)上的一個集成的開發(fā)環(huán)境。任一種仿真設(shè)備可形象地將其看做計算機主板上的擴展設(shè)備,在它們正常工作之前都需要在操作系統(tǒng)中為其安裝驅(qū)動程序。2.為CCS安裝設(shè)備驅(qū)動程序彭啟琮管慶等編著
DSP集成開發(fā)環(huán)境-CCS及DSP/BIOS的原理與應(yīng)用
電子工業(yè)出版社2005年
8CCS是運行在一系列仿真設(shè)備(軟仿真器Simulator、硬9910103.2基于CCS開發(fā)DSP軟件基于CCS開發(fā)DSP軟件是一個軟件工程,需要先建立一個工程文件(*.pjt),所有有關(guān)該項目的信息都會存儲在這個工程文件中。即包含源代碼文件(C、C++、ASM)、頭文件、支持庫、用戶庫、內(nèi)存定位文件(.cmd)以及DSP/BIOS配置文件(.cdb)。若用C開發(fā),需將C的標(biāo)準(zhǔn)支持庫rts6700.lib(用于64KB以內(nèi)的程序調(diào)用)或rts6700e.lib(用于大于64KB、使用FCALL指令的函數(shù)調(diào)用)。內(nèi)存定位文件(.cmd)定義了各代碼段或數(shù)據(jù)段在存儲器中的位置。將內(nèi)存定位文件(.cmd)添加到工程文件。“Buildall”(完成編譯和連接)“Load”(將生成的.out文件裝入DSP的片內(nèi)或片外擴展存儲器)進行調(diào)試、分析和統(tǒng)計工作113.2基于CCS開發(fā)DSP軟件基于CCS開發(fā)DSP軟件是一實例1.CCS的基本操作-開發(fā)一個簡單的程序(1)準(zhǔn)備工作(2)先建立一個工程文件(*.pjt):以volume為例(3)向工程添加各類型文件:源文件、cmd文件和庫文件(4)查閱代碼(5)建造(build)和運行(run)程序(6)改變建造選項和修改語法錯誤(7)使用斷點和觀察窗12實例1.CCS的基本操作-開發(fā)一個簡單的程序12(1)準(zhǔn)備工作:8個需要復(fù)制的文件需要復(fù)制的文件文件說明Volume.c實驗用源文件(C主函數(shù))Load.asm實驗用源文件(匯編子函數(shù))Vectors.asm實驗用源文件(中斷向量表)Volume.hC主函數(shù)使用的頭文件Volume.cmd內(nèi)存定位文件Sine.dat實驗用數(shù)據(jù)文件Volume.gel實驗用GEL控制文件Rts6700.libC程序的運行支持庫提示:在使用CCS進行DSP軟件項目開發(fā)時,都要養(yǎng)成為每個項目建立一個目錄的習(xí)慣。此例:項目volume在目錄C:\ti\myprojects\volume1下13(1)準(zhǔn)備工作:8個需要復(fù)制的文件需要復(fù)制的文件文件說明Vo(2)先建立一個工程文件:ProjectNewProjectcreation14(2)先建立一個工程文件:ProjectNewProj(3-1)添加源文件:.c,.asm
ProjectAddFilestoProject選擇文件類型在“volume.pjt”上單擊鼠標(biāo)右鍵AddFiles…
(3-2)添加內(nèi)存定位文件.cmd
該文件定義了各代碼段或數(shù)據(jù)段在存儲器中的位置添加方法同“添加源文件” 在添加文件對話框的“文件類型”下拉列表中要選擇“Linker CommandFile(*.cmd)(3-3)若源文件是基于C語言編寫的,需向工程里添加運行支持庫文件(rts6700.lib) 該文件存放在CCS的安裝目錄“/c6000/cgtools/lib”下 在添加文件對話框的“文件類型”下拉列表中要選擇“Object andLibraryFiles(*.o*,*.l*)(3-4)添加頭文件
在工程名上單擊鼠標(biāo)右鍵,選擇“ScanAllDependencies”,這 樣.c文件包含的頭文件“volume.h”將出現(xiàn)在“Include”文件夾中(3)向工程添加各類型文件15(3-1)添加源文件:.c,.asm(3)向工程添加各類1616展開工程文件列表Vectors.asm是中斷向量表,包含了匯編指令代碼,用于在系統(tǒng)產(chǎn)生“RESET”中斷時,跳轉(zhuǎn)到C程序的入口點“c_int00”在編寫更為復(fù)雜的用戶程序時,可以在Vectors.asm文件里自行定義合適的中斷向量表,或者使用DSP/BIOS自動產(chǎn)生中斷向量表頭文件實際上不用人工添加,在建造(Build)工程時,CCS本身可以自動完成相關(guān)掃描17展開工程文件列表Vectors.asm是中斷向量表,包含了匯(4)查閱代碼:在文件名上雙擊鼠標(biāo),即可在CCS編輯窗內(nèi)看到源代碼18(4)查閱代碼:在文件名上雙擊鼠標(biāo),即可在CCS編輯窗內(nèi)看到主函數(shù)進入一個無限循環(huán),在循環(huán)內(nèi)部調(diào)用了2個函數(shù)dataIO()與processing()函數(shù)processing()對輸入緩沖區(qū)的每個采樣值乘以一個增益值“gain”,并將結(jié)果存放到緩沖區(qū)中。該函數(shù)同時調(diào)用匯編程序load(),該函數(shù)會根據(jù)processing()傳遞過來的參數(shù)processingLoad來消耗指令周期,模擬復(fù)雜信號處理算法在時間上的消耗。函數(shù)dataIO()不做任何實際操作而直接返回19主函數(shù)進入一個無限循環(huán),在循環(huán)內(nèi)部調(diào)用了2個函數(shù)dataI(5)建造(build)和運行(run)程序Building:compiling,assembling,linking三個獨立步驟按順序聯(lián)合運行。在CCS中: (1)主菜單:Project“rebuildall” (2)工具條圖標(biāo): (rebuildall)建造完畢,CCS生成一個“.out”文件,該文件默認(rèn)存放在所建工程目錄下的“debug”目錄內(nèi)裝載該“.out”文件:File“l(fā)oadprogram””所建的工程目錄”“debug”“volume.out”打開 CCS裝載完畢該.out文件后,會自動彈出disassembly窗口,顯示構(gòu)成源代碼的反匯編指令。20(5)建造(build)和運行(run)程序Building建造完畢的CCS窗口及.out文件的裝載“.out”文件的存放目錄21建造完畢的CCS窗口及.out文件的裝載“.out”文件的存裝載完畢后自動彈出的反匯編窗口:顯示構(gòu)成源代碼的反匯編指令顯示程序在運行時的輸出信息22裝載完畢后自動彈出的反匯編窗口:顯示構(gòu)成源代碼的反匯編指令顯運行(run)程序:(1)Debug“gomain”:程序從主函數(shù)開始,停留在main()處,并會有一個黃色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的C語言代碼(2)ViewMixedsource/ASM:同時看到C語言代碼和對應(yīng)編譯生成的匯編代碼,并且有一個綠色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的匯編代碼。Page20(3)Debug“run”,或,工具條圖標(biāo)(run): 讓程序全速執(zhí)行。底部的“Stdout”標(biāo)準(zhǔn)輸出窗口給出程序運行的輸出信息。“volumeexamplestarted”證明程序能夠正常運行23運行(run)程序:“volumeexamplestar黃色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的C語言代碼綠色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的匯編代碼混合觀察源文件與反匯編時,CCS禁止編輯單擊鼠標(biāo)后,按F1鍵可以得到指令的幫助信息預(yù)處理命令“#ifdef”和“endif”包含的代碼段并沒被執(zhí)行,因為沒有定義符號“FILEIO”24黃色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的C語言代碼綠色的箭頭標(biāo)記在當(dāng)前要CCS設(shè)置預(yù)處理符號ProjectBuildoptionCompilerProcessorDefineSymbols_DEBUG;FILEIOTab鍵編譯命令中會新增一個-d“FILEIO”“RebuildAll”之后,改變的選項才會生效25CCS設(shè)置預(yù)處理符號“RebuildAll”之后,改變的選使用斷點與觀察窗:檢查某個變量在程序運行中的取值變化情況或F9:出現(xiàn)紅點來標(biāo)記ViewWatchWindow:CCS彈出一個獨立的區(qū)域,用于顯示運行時所觀察的變量值26使用斷點與觀察窗:檢查某個變量在程序運行中的取值變化情況或F顯示當(dāng)前執(zhí)行的函數(shù)的所有局部變量Watch1Name列的表達式圖標(biāo)輸入要觀察的變量名回車觀察窗口觀察dataIO的值觀察結(jié)構(gòu)變量str27顯示當(dāng)前執(zhí)行的函數(shù)的所有局部變量Watch1Name列的表利用CCS調(diào)試應(yīng)用程序程序的調(diào)試過程和優(yōu)化過程一般會占用整個開發(fā)周期60%以上的時間調(diào)試有非常多的技巧和手段,但都必須要有良好的工具才能實現(xiàn)CCS除了提供大多數(shù)通用開發(fā)環(huán)境都具備的基本調(diào)試工具(存儲器與寄存器的查看與修改、斷點、性能分析)外,還提供在嵌入式開發(fā)中非常游泳的事件檢測、探針等工具,以及在信號處理類應(yīng)用能夠中非常實用的圖形化工具為了調(diào)試應(yīng)用程序,首先必須將程序加載到目標(biāo)系統(tǒng)中28利用CCS調(diào)試應(yīng)用程序程序的調(diào)試過程和優(yōu)化過程一般會占用整個程序調(diào)試的基本操作使用反匯編窗口:Viewdisassembly使用存儲器窗口:Viewmemory觀察CPU寄存器:Viewregistor加載COFF文件單步執(zhí)行運行復(fù)位處理器:DebugresetCPU內(nèi)存操作變量操作編輯命令行觀察調(diào)用堆棧:Viewcallstack保存和恢復(fù)工作空間29程序調(diào)試的基本操作使用反匯編窗口:Viewdisassem存儲器/變量的查看與修改調(diào)試工具的最基本功能之一查看和修改寄存器、程序存儲器、數(shù)據(jù)存儲器、I/O存儲器1.CPU寄存器的查看與修改 ①debughalt:停止程序運行 ②viewregistercoreregisters:工作區(qū)底部打開一個CPU寄存器窗口,其中列出了CPU所有寄存器的值。
③debugrun:程序繼續(xù)運行CPU寄存器的值肯定會發(fā)生改變,只有再用halt指令停止程序運行后才會看到發(fā)生變化的寄存器以紅色顯示
④修改寄存器的值:
方法1:雙擊想要修改的寄存器 方法2:右擊快捷菜單“editregister”命令30存儲器/變量的查看與修改調(diào)試工具的最基本功能之一30各種顯示都是在程序運行停止或碰到斷點、探針點等地方才會刷新31各種顯示都是在程序運行停止或碰到斷點、探針點等地方才會刷新32.外設(shè)寄存器的查看與修改在DSP芯片內(nèi)部有各種外設(shè),如定時器、SDRAM、McBSP等。對外設(shè)的控制和運行都是以讀寫外設(shè)控制寄存器的方式完成的viewregisterPeripheralregisters322.外設(shè)寄存器的查看與修改在DSP芯片內(nèi)部有各種外設(shè),如定3.存儲器的查看與修改 ①debughalt:停止程序運行
②viewmemory:打開“memorywindowoption”對話框 ③修改存儲器的值: 方法1:雙擊想要修改的存儲器單元 方法2:editmemoryedit…給出一個與此段存儲器內(nèi)容相關(guān)的名字輸入需要顯示的存儲區(qū)的起始地址輸入顯示數(shù)據(jù)的Q值選擇顯示數(shù)據(jù)的格式以IEEE格式顯示浮點數(shù)希望使用參考緩沖區(qū)(位于主機上CCS的內(nèi)部緩沖區(qū),用做DSP中一段存儲器塊的鏡像333.存儲器的查看與修改給出一個與此段存儲器內(nèi)容相關(guān)的名字輸4.變量的查看與修改 ①變量具有特定的數(shù)據(jù)結(jié)構(gòu),而不僅僅是一串二進制數(shù)
②快速查看變量值:將鼠標(biāo)移到源文件的某一變量處停留,會出現(xiàn)一個小小的工具提示窗口 ③快速查看和修改變量值:右擊快捷菜單“quickwatch”命令
④viewwatchwindow:打開變量查看和修改窗口底部有2個標(biāo)簽:“watchlocals”和“watch1”“watch1”的操作:添加變量;修改標(biāo)簽名字344.變量的查看與修改34斷點工具的使用使用斷點是程序調(diào)試的基本手段CCS的斷點工具包括軟件斷點、硬件斷點程序運行過程中如果碰到斷點,就會暫時停止運行,回到調(diào)試狀態(tài)。用戶可以通過查看變量、圖形等方法,發(fā)現(xiàn)程序中的錯誤1.軟件斷點:最常用 1)在已經(jīng)被加載到程序存儲器中的程序的某一行上設(shè)置斷點。 2)斷點的設(shè)置:將光標(biāo)移到源程序文件的某一行右擊快捷菜單的“togglebreakpoint”工具欄的“斷點”按鈕debugbreakpoint本行左邊會出現(xiàn)紅色的斷點標(biāo)記35斷點工具的使用使用斷點是程序調(diào)試的基本手段本行左邊會出現(xiàn)紅色3)重新啟動程序運行:debugrun程序停在斷點處,此行左邊顯示一個黃色小箭頭自動刷新寄存器、存儲器、變量查看窗口和圖形顯示窗口4)注意:軟件斷點實際上通過修改斷點處的指令來達到中斷運行的目的。斷點必須位于程序存儲器,而且必須是在可由CCS修改的存儲器如RAM中為了不破壞處理器流水線,不要將斷點設(shè)置在屬于跳轉(zhuǎn)語句的指令上;不要將斷點設(shè)置在塊重復(fù)語句的倒數(shù)第1條和第2條指令上363)重新啟動程序運行:debugrun362.硬件斷點:1)不改變目標(biāo)程序,適合于在ROM存儲器中設(shè)置斷點或設(shè)置存儲器存取斷點2)將硬件仿真器通過JTAG接口與主機相連探針點(Probepoint)工具的使用372.硬件斷點:探針點(Probepoint)工具的使用3以sinwave.pjt為例:ti\tutorial\target\sinewave\sinwave.pjt38以sinwave.pjt為例:ti\tutorial\tar1.ProjectBuild:完成編譯連接,得到.out文件。注意在Build輸出窗口中應(yīng)顯示沒有錯誤和警告2.FileLoadprogram:加載程序,然后在合適的目錄下選擇打開sinewave.out文件程序加載后會自動打開一個反匯編窗口綠色箭頭指向_c_int00,c_int00不是用戶代碼的一部分,而是C語言引導(dǎo)代碼的入口C語言程序都會在連接時自動加上引導(dǎo)代碼,這些引導(dǎo)代碼一般來說不需要調(diào)試,需要調(diào)試的是用戶代碼。對C語言程序來說,就是從main()函數(shù)開始的地方391.ProjectBuild:完成編譯連接,得到.out3.Debuggomain:自動打開sine.c源文件窗口,并有黃色箭頭停在main()函數(shù)入口處。從這里開始就可以調(diào)試用戶程序4.Debugrun:程序開始自由運行。由于沒有連接I/O和圖形顯示,此時程序雖然在運行,但是看不到任何處理結(jié)果。這是因為在mian()函數(shù)中有一個無限循環(huán),程序會一直在此循環(huán)中運行。5.DebugHalt:中斷程序的運行但是底部會打開一個stdout標(biāo)準(zhǔn)輸出窗口,并在其中輸出“SineWaveexamplestarted.”。這是由main()函數(shù)中的puts(“SineWaveexamplestarted.\n”)語句運行的結(jié)果403.Debuggomain:自動打開sine.c源文探針點(Probepoint)工具的使用程序運行到探針點處會執(zhí)行特定的操作(刷新圖形、文件I/O)文件I/O可以完成目標(biāo)系統(tǒng)的DSP存儲器(程序、數(shù)據(jù)或I/O存儲器)與主機上的文件之間的數(shù)據(jù)交換1.重新開始調(diào)試程序:debugrestart2.切換到源程序窗口,將光標(biāo)移到某一行,設(shè)置探針點右擊快捷菜單的“toggleProbepoint”工具欄的“探針點”按鈕debugProbepoint3.FilefileI/O:fileI/O針對DSP而言 1)文件輸入從一個數(shù)據(jù)文件讀取波形到DSP內(nèi)部的緩沖區(qū)(currentBuffer.input,長度為100字)本行左邊會出現(xiàn)蘭色的菱形探針點標(biāo)記41探針點(Probepoint)工具的使用程序運行到探針點處4242設(shè)置主機上的什么文件與DSP的什么存儲器交換數(shù)據(jù),在程序中的什么地方交換數(shù)據(jù)輸入和輸出是針對DSP而言的2)在Fileinput選項卡下:①Addfile
ti\tutorial\target\sinwave\sine.dat②在Address中填入DSP中緩沖區(qū)的地址(currentBuffer.input)③在length中填入長度(100)④AddprobepointprobepointConnect下拉列表框中選擇sine.dat⑤按“確定”后發(fā)現(xiàn)probe中顯示“connected”⑥Wraparound:讀到文件結(jié)尾時繼續(xù)從文件頭讀取43設(shè)置主機上的什么文件與DSP的什么存儲器交換數(shù)據(jù),在程序中的3)
運行程序:debugrun
①檢查變量currentBuffer,可以發(fā)現(xiàn)input數(shù)組中的值已經(jīng)發(fā)生變化 ②currentBuffer.input中的數(shù)據(jù)也可以以波形顯示443)運行程序:debugrun44在程序的調(diào)試過程中,可以用這樣的方法給DSP程序一個特定的輸入數(shù)據(jù),來測試程序的功能。這樣的數(shù)據(jù)一般是主機上變成產(chǎn)生的,具有特定的格式Viewwatchwindowwatch145在程序的調(diào)試過程中,可以用這樣的方法給DSP程序一個特定的輸4.CCS的FileI/O可以使用兩類數(shù)據(jù)文件:1)文本格式(.dat):sine.dat165110000x000000000x0000000f0x0000001e0x0000002d0x0000003a0x000000460x000000500x00000059指定格式每一行一個數(shù)據(jù)數(shù)據(jù)格式;1:十六進制固定數(shù)存儲器起始地址存儲器長度存儲器頁2)二進制格式(.out):①與DSP上的可執(zhí)行程序的格式一樣,為COFF(commonObjectFileFormat)格式的目標(biāo)文件②文件中的內(nèi)容以段的形式保存,可執(zhí)行程序中有代碼段、數(shù)據(jù)段③文本格式的數(shù)據(jù)文件中只有一個數(shù)據(jù)段464.CCS的FileI/O可以使用兩類數(shù)據(jù)文件:1651圖形工具的使用在CCS中可以將數(shù)據(jù)按圖形化方式顯示出來,比較直觀CCS提供了豐富的圖形可視化工具,用于完成時域波形、頻譜、圖象、星座圖、眼圖等的顯示數(shù)據(jù)準(zhǔn)備好后選擇ViewGraph,設(shè)置相應(yīng)的顯示類型和顯示參數(shù),即可按希望的圖形類型顯示數(shù)據(jù)ViewGraph,47圖形工具的使用在CCS中可以將數(shù)據(jù)按圖形化方式顯示出來,比較l
顯示類型(DisplayType)。單擊下拉菜單,點擊所需的顯示類型,則Time/Frequency對話框(參數(shù)設(shè)置)相應(yīng)隨之變化。l
視圖標(biāo)題(GrphTitle):定義圖形視圖標(biāo)題。l
起始地址(StartAddress)。定義采樣緩沖區(qū)的起始地址。當(dāng)圖形被更新時,采樣緩沖區(qū)內(nèi)容亦更新顯示緩沖區(qū)內(nèi)容。此對話欄允許輸入符號和C表達式。當(dāng)顯示類型為“DualTime”時,需要輸入兩個采樣緩沖區(qū)首地址。采集緩沖區(qū)尺寸(AcquisitionBufferSize)。用戶可以根據(jù)所需定義采樣緩沖區(qū)的尺寸。例如當(dāng)一次顯示一幀數(shù)據(jù)時,則緩沖區(qū)尺寸為幀的大小。若希望觀察串行數(shù)據(jù),則定義緩沖區(qū)尺寸為1,同時允許左移數(shù)據(jù)顯示。l
索引遞增(IndexIncrement)。定義在顯示緩沖區(qū)中每隔幾個數(shù)據(jù)取一個采樣點。48l顯示類型(DisplayType)。單擊下拉菜單,點擊l
顯示數(shù)據(jù)尺寸(DisplayDataSize)。定義顯示緩沖區(qū)大小。取決于”顯示類型”選項。對時域圖形,顯示緩沖區(qū)尺寸等于要顯示的采樣點數(shù)目,并且大于等于采樣緩沖區(qū)尺寸。若顯示緩沖區(qū)尺寸大于采樣緩沖區(qū)尺寸,則采樣數(shù)據(jù)可以左移到顯示緩存顯示。對頻域圖形,顯示緩沖區(qū)尺寸等于FF幀尺寸,取整為2的冪次。l
Q值(Q-Value)。采樣緩沖區(qū)中的數(shù)始終為16進制數(shù),但是它表示的實際數(shù)取值范圍由Q值確定。Q值為定點數(shù)定標(biāo)值,指明小數(shù)點所在的位置。Q值取值范圍為0~15,假定Q值為xx,則小數(shù)點所在的位置為從最低有效位向左數(shù)的xx位。l
采樣頻率(SamplingRate(Hz))。對時域圖形,此參數(shù)指明在每個采樣時刻定義對同一數(shù)據(jù)的采樣數(shù)。假定采樣頻率為xx,則一個采樣數(shù)據(jù)對應(yīng)xx個顯示緩沖區(qū)單元。由于顯示緩沖區(qū)尺寸固定,因此時間軸取值范圍為0~(顯示緩沖區(qū)尺寸/采樣頻率)。對時域圖形,此參數(shù)定義頻率分析的樣點數(shù)。頻率范圍為0~采樣率/2。49l顯示數(shù)據(jù)尺寸(DisplayDataSize)。定義l
數(shù)據(jù)繪出順序(PlotDataFrom)。此參數(shù)定義從采樣緩沖區(qū)取數(shù)的順序為從左到右:采樣緩沖區(qū)的第一個數(shù)被認(rèn)為是最新或最近到來數(shù)據(jù);從右到左:采樣緩沖區(qū)的第一個數(shù)被認(rèn)為是最舊數(shù)據(jù)。l
左移數(shù)據(jù)顯示(Left-ShiftedDataDisplay)。此選項確定采樣緩沖區(qū)與顯示緩沖區(qū)的哪一邊對齊。可以選擇此特性允許或禁止。若允許,則采樣數(shù)據(jù)從右端填入顯示緩沖區(qū)。每更新一次圖形,則顯示緩存數(shù)據(jù)左移,留出空間填入新的采樣數(shù)據(jù)。注意顯示緩沖區(qū)初始化為0。若此特性被禁止,則采樣數(shù)據(jù)簡單覆蓋顯示緩存。l
自動定標(biāo)(Autoscale)。此選項允許Y軸最大值自動調(diào)整。若此選項設(shè)置為允許,則視圖被顯示緩沖區(qū)數(shù)據(jù)最大值歸一化顯示。若此選項設(shè)置為禁止,則對話框中出現(xiàn)一新的設(shè)置項“MaximumY-Value”,設(shè)置Y軸顯示最大值。50l數(shù)據(jù)繪出順序(PlotDataFrom)。此參數(shù)定義l
直流量(DCValue)。此參數(shù)設(shè)置Y軸中點的值,即零點對應(yīng)的數(shù)值.對FFT幅值顯示,此區(qū)域不顯示。l
坐標(biāo)顯示(AxesDisplay)。此選項設(shè)置X,Y坐標(biāo)軸是否顯示。l
時間顯示單位(TimeDisplayUnit)。定義時間軸單位.可以為秒(s),毫秒(ms),微秒(μs)或采樣點。l
狀態(tài)條顯示(StatusBarDisplay)。此選項設(shè)置圖形窗口的狀態(tài)條是否顯示。l
幅度顯示比例(MagnitudeDisplayScale)。有兩類幅度顯示類型:線性或?qū)?shù)顯示(公式為20log(X))。l
數(shù)據(jù)標(biāo)繪風(fēng)格(DataPlotStyle)。此選項設(shè)置數(shù)據(jù)如何顯示在圖形窗口中,Line是數(shù)據(jù)點之間用直線相連;Bar是每個數(shù)據(jù)點用豎直線顯示。51l直流量(DCValue)。此參數(shù)設(shè)置Y軸中點的值,即零l
柵格類型(GridStyle)。此選項設(shè)置水平或垂直方向底線顯示。有三個選項:NoGrid:無柵格;ZeroLine:僅顯示0軸;FullGrid:顯示水平和垂直柵格。l
光標(biāo)模式(CursorMode)。此選項設(shè)置光標(biāo)顯示類型。有3個選項:NoCursor:無光標(biāo);DataCursor:在視圖狀態(tài)欄顯示數(shù)據(jù)和光標(biāo)坐標(biāo);ZoomCursor:允許放大顯示圖形。方法:按住鼠標(biāo)左鍵,拖動,則定義的矩形框被放大。52l柵格類型(GridStyle)。此選項設(shè)置水平或垂直方程序剖析工具-ProfilerCCS提供了代碼剖析工具Profiler:(1)統(tǒng)計某個函數(shù)或者某一塊代碼使用了多少個時鐘周期,從而對關(guān)鍵函數(shù)進行優(yōu)化(2)統(tǒng)計程序運行中的中斷、子程序調(diào)用、程序分支、返回、指令預(yù)取等信息要進行代碼優(yōu)化,首先必須找到程序中的瓶頸所在,即占用了大部分CPU時間的代碼代碼優(yōu)化是程序開發(fā)過程中非常重要的步驟Profiler的使用打開工程Build通過裝載.out文件CCS自動打開反匯編窗口,并停在c_int00處……53程序剖析工具-ProfilerCCS提供了代碼剖析工具Pro一、剖析時鐘及其設(shè)置剖析時鐘是程序在剖析狀態(tài)下,程序連續(xù)或者單步運行時的時鐘周期的計數(shù),隨著程序的運行相應(yīng)增加剖析時鐘可以被開啟也可以被關(guān)閉。ProfilerEnableClock在剖析過程中,剖析時鐘的查看、修改:ProfilerViewClock剖析時鐘窗口,窗口中顯示了時鐘的計數(shù)值雙擊時鐘的計數(shù)值:復(fù)位置054一、剖析時鐘及其設(shè)置剖析時鐘是程序在剖析狀態(tài)下,程序連續(xù)或者剖析時鐘的設(shè)置:ProfilerClockSetup選擇需要剖析的事件填入執(zhí)行單周期指令的時間(ns)輸入流水線校正值在整個剖析過程中,剖析時鐘的值不停累加,除非主動手工復(fù)位置0每次運行時遇到斷點或單步停下,剖析時鐘自動置0。所以在自動復(fù)位方式下得到的剖析時鐘數(shù)據(jù)并不正確,一般使用手工復(fù)位55剖析時鐘的設(shè)置:ProfilerClockSetup選擇二、剖析代碼的設(shè)置代碼的剖析過程是以剖析會話(session)的形式組織的:ProfilerStartNewSession輸入剖析會話的名字;為每個剖析會話取易于辨別的名字Files:以源文件列出統(tǒng)計數(shù)據(jù);Functions:用于剖析程序中的函數(shù);Ranges:用于剖析一段連續(xù)的代碼;Setup:用于設(shè)置開始點和結(jié)束點,用于剖析不連續(xù)的代碼56二、剖析代碼的設(shè)置代碼的剖析過程是以剖析會話(session三、剖析函數(shù)(1)轉(zhuǎn)換到Function選項卡找到源程序中函數(shù)的入口用鼠標(biāo)選中并拖到Function選項卡(2)DebugRun:運行一段時間(3)DebugHalt:觀察條件數(shù)據(jù),根據(jù)運行的周期找到程序的瓶頸將所有函數(shù)加入到函數(shù)剖析窗口57三、剖析函數(shù)(1)轉(zhuǎn)換到Function選項卡找到源程序CodeSize:剖析代碼的大小,以程序存儲器最小可尋址單元為單位,此值在剖析過程中不會發(fā)生變化。Incl.Count:在統(tǒng)計過程中,程序運行進入剖析代碼段的次數(shù)Incl.Total:在剖析過程中剖析代碼段消耗的所有時鐘周期數(shù)Incl.Maximum:執(zhí)行剖析代碼段(包括在剖析代碼段中對子程序的調(diào)用)一遍消耗的最大時鐘周期(由于每次進入剖析代碼段的初始條件不同等原因,每次運行剖析代碼段消耗的時鐘周期可能不同Incl.Minimum:執(zhí)行剖析代碼段(包括在剖析代碼段中對子程序的調(diào)用)一遍消耗的最小時鐘周期Incl.Average:執(zhí)行剖析代碼段(包括在剖析代碼段中對子程序的調(diào)用)一遍消耗的平均時鐘周期58CodeSize:剖析代碼的大小,以程序存儲器最小可尋址單Excl.Maximum:剖析代碼段執(zhí)行一遍(不包括在剖析代碼段中對子程序的調(diào)用)消耗的最大時鐘周期Excl.Minimum:剖析代碼段執(zhí)行一遍(不包括在剖析代碼段中對子程序的調(diào)用)消耗的最小時鐘周期Excl.Average:剖析代碼段執(zhí)行一遍(不包括在剖析代碼段中對子程序的調(diào)用)消耗的平均時鐘周期Excl.Total:在剛才程序運行時剖析代碼段使用的所有時鐘周期數(shù),不包括在剖析代碼段中對子程序的調(diào)用Excl.Count:在統(tǒng)計過程中,程序運行進入剖析代碼段的次數(shù),與Incl.Count的值相同59Excl.Maximum:剖析代碼段執(zhí)行一遍(不包括在剖析代四、剖析范圍切換到Range選項卡在.c源程序中選中要剖析的代碼范圍拖到Range選項卡單擊按鈕,打開“AddProfileArea”對話框,定義一個剖析范圍啟動程序運行一段時間后停止,觀察剖析數(shù)據(jù)60四、剖析范圍切換到Range選項卡在.c源程序中選中要剖析剖析范圍的起始地址和結(jié)束地址必須唯一:起始地址和結(jié)束地址不要在分支語句上當(dāng)剖析一個循環(huán)時,起始地址和結(jié)束地址應(yīng)該在循環(huán)控制的起始和結(jié)束,對應(yīng)C語言程序就是從for/while語句到循環(huán)體后面的反花括號必須保證起始地址和結(jié)束地址是剖析范圍唯一的入口和退出口,為了滿足這一點,有時候必須插入NOP語句61剖析范圍的起始地址和結(jié)束地址必須唯一:起始地址和結(jié)束地址不要StatementStatementWhile(){StatementStatement}StatementStatementStartendStartendStartendStartendStartend在實際應(yīng)用中必須避免以下幾種情況1234562StatementStartStartStart在實際應(yīng)用中五、剖析不連續(xù)范圍Step4:啟動程序運行一段時間后停止,在Function選項卡中查看剖析數(shù)據(jù)Step1:選中內(nèi)容并拖到Endpoint文字上定義起始點定義結(jié)束點Step2:定義并設(shè)置起始點Step3:完成不連續(xù)范圍的設(shè)置63五、剖析不連續(xù)范圍Step4:啟動程序運行一段時間后停止,演講完畢,謝謝觀看!演講完畢,謝謝觀看!4.2DSP集成開發(fā)環(huán)境—CCS及DSP/BIOS的原理與應(yīng)用CCS:codecomposerstudio654.2DSP集成開發(fā)環(huán)境—CCS及DSP/BIOS的原理3.1CCS的功能特點與安裝3.2基于CCS開發(fā)DSP軟件3.3利用CCS調(diào)試應(yīng)用程序3.4CCS高級工具的使用3.5DSP/BIOS的功能3.6DSP/BIOS的高級應(yīng)用3.7基于CCS的DSP片級支持庫663.1CCS的功能特點與安裝2概述TMS320C6000DSP有一套完整的開發(fā)系統(tǒng)C/C++compiler:.c.asm
將ANSIC或C++語言編寫的程序轉(zhuǎn)換為面向DSP的匯編代碼 直接利用高級語言實現(xiàn)DSP軟件的初步設(shè)計,縮短開發(fā)周期Assemblycompiler:.sa.asm
允許開發(fā)者編寫線性匯編代碼而無需考慮流水線結(jié)構(gòu)和寄存器分配,它可以自動分配寄存器以及利用循環(huán)優(yōu)化將線性匯編轉(zhuǎn)化為利用軟件流水線的高度并行匯編代碼Assembler:.asm.obj
將匯編代碼翻譯成DSP可以執(zhí)行的機器語言Linker:.obj.out
將目標(biāo)文件組合成一個單獨的可執(zhí)行目標(biāo)模塊。當(dāng)它創(chuàng)建可執(zhí)行模塊時,分配段到目標(biāo)系統(tǒng)所配置的內(nèi)存,重新分配符號和段到最終地址,并且解決未定義符號的外部引用的問題。67概述TMS320C6000DSP有一套完整的開發(fā)系統(tǒng)3Cdebugger 是一種先進的編程接口協(xié)助編程者開發(fā)、測試C6x的C程序以及匯編程序,也是C6xsimulator和emulator的接口。 調(diào)試器通過圖形界面直觀地將代碼、數(shù)據(jù)和命令分開顯示。動態(tài)的性能分析工具提供了對代碼執(zhí)行進行統(tǒng)計的手段,可以直接反饋程序的性能進而確定和解決代碼瓶頸。Simulator
通過模擬DSP硬件對代碼的執(zhí)行,方便用戶進行軟件的開發(fā)和調(diào)試。用戶可以在沒有目標(biāo)板的情況下編寫軟件,有限的模擬一些硬件功能。Emulator
基于邊界掃描協(xié)議的系統(tǒng)仿真工具,用于系統(tǒng)集成階段的軟件和硬件聯(lián)調(diào)。通過JTAG接口,可以訪問DSP器件的全部內(nèi)存和寄存器,方便有效的硬件對軟件執(zhí)行的調(diào)試工作。DSK入門開發(fā)套件(DSK)
代碼開發(fā)工具,包括基于TMS320C6000DSPs的板卡,軟硬件仿真環(huán)境可以與PC通信,很適合初步接觸DSP的學(xué)習(xí)者入門和進一步熟悉提高68Cdebugger4CCS(CodeComposerStudio)功能簡介CCS是一個基于Windows的DSP集成開發(fā)環(huán)境;加速和提高程序員創(chuàng)建與測試實時嵌入式信號處理系統(tǒng)的開發(fā)過程CCS是一個完整的DSP集成開發(fā)環(huán)境;也是目前最優(yōu)秀、最流行的DSP開發(fā)軟件之一CCS為TIDSP家族的C2000(版本2.2以上)、C5000和C6000系列DSP提供DSP/BIOS功能,而在C3x中是沒有DSP/BIOS功能的CCS具有實時、多任務(wù)、可視化的軟件開發(fā)特點,已經(jīng)成為TIDSP家族的程序設(shè)計、制作、調(diào)試、優(yōu)化的利器69CCS(CodeComposerStudio)功能簡介C(1)集成可視化代碼編輯界面,可直接編寫C、匯編、.h文件、.cmd文件(2)集成代碼生成工具,包括編輯器、優(yōu)化C編譯器、連接器等(3)基本調(diào)試工具,如裝入執(zhí)行代碼(.out文件),查看寄存器、存儲器、反匯編、變量窗口等,支持C源代碼級調(diào)試。(4)支持多DSP調(diào)試(5)斷點工具,包括硬件斷點、數(shù)據(jù)空間讀/寫斷點、條件斷點等(6)探針(Probe)工具,可用于算法仿真、數(shù)據(jù)監(jiān)視等。(7)剖析(Profile)工具,可用于評估代碼執(zhí)行的時鐘數(shù)CCS主要包含了以下功能70(1)集成可視化代碼編輯界面,可直接編寫C、匯編、.h文件數(shù)據(jù)的圖形顯示工具,可繪制時域/頻域波形、眼圖、星座圖、圖象等,并可自動刷新提供GEL工具,用戶可以編寫自己的控制面板/菜單,方便直觀地修改變量,配置參數(shù)等支持RTDX技術(shù),可在不中斷目標(biāo)系統(tǒng)運行的情況下,實現(xiàn)DSP與其他應(yīng)用程序的數(shù)據(jù)交換開放式的Plug-in技術(shù),支持其他第三方的ActiveX插件,支持包括軟仿真在內(nèi)的各種仿真器(只需安裝相應(yīng)的驅(qū)動程序)提供DSP/BIOS工具,增強對代碼的實時分析能力(如分析代碼執(zhí)行的效率)、調(diào)度程序執(zhí)行的優(yōu)先級、方便管理或使用系統(tǒng)資源(代碼/數(shù)據(jù)占用空間、中斷服務(wù)程序的調(diào)用、定時器使用等),從而減少開發(fā)人員對硬件資源熟悉程度的依賴性71數(shù)據(jù)的圖形顯示工具,可繪制時域/頻域波形、眼圖、星座圖、圖象CCS是運行在一系列仿真設(shè)備(軟仿真器Simulator、硬仿真器Emulator、DSP入門套件DSK、DSP評估板EVM)上的一個集成的開發(fā)環(huán)境。任一種仿真設(shè)備可形象地將其看做計算機主板上的擴展設(shè)備,在它們正常工作之前都需要在操作系統(tǒng)中為其安裝驅(qū)動程序。2.為CCS安裝設(shè)備驅(qū)動程序彭啟琮管慶等編著
DSP集成開發(fā)環(huán)境-CCS及DSP/BIOS的原理與應(yīng)用
電子工業(yè)出版社2005年
72CCS是運行在一系列仿真設(shè)備(軟仿真器Simulator、硬73974103.2基于CCS開發(fā)DSP軟件基于CCS開發(fā)DSP軟件是一個軟件工程,需要先建立一個工程文件(*.pjt),所有有關(guān)該項目的信息都會存儲在這個工程文件中。即包含源代碼文件(C、C++、ASM)、頭文件、支持庫、用戶庫、內(nèi)存定位文件(.cmd)以及DSP/BIOS配置文件(.cdb)。若用C開發(fā),需將C的標(biāo)準(zhǔn)支持庫rts6700.lib(用于64KB以內(nèi)的程序調(diào)用)或rts6700e.lib(用于大于64KB、使用FCALL指令的函數(shù)調(diào)用)。內(nèi)存定位文件(.cmd)定義了各代碼段或數(shù)據(jù)段在存儲器中的位置。將內(nèi)存定位文件(.cmd)添加到工程文件。“Buildall”(完成編譯和連接)“Load”(將生成的.out文件裝入DSP的片內(nèi)或片外擴展存儲器)進行調(diào)試、分析和統(tǒng)計工作753.2基于CCS開發(fā)DSP軟件基于CCS開發(fā)DSP軟件是一實例1.CCS的基本操作-開發(fā)一個簡單的程序(1)準(zhǔn)備工作(2)先建立一個工程文件(*.pjt):以volume為例(3)向工程添加各類型文件:源文件、cmd文件和庫文件(4)查閱代碼(5)建造(build)和運行(run)程序(6)改變建造選項和修改語法錯誤(7)使用斷點和觀察窗76實例1.CCS的基本操作-開發(fā)一個簡單的程序12(1)準(zhǔn)備工作:8個需要復(fù)制的文件需要復(fù)制的文件文件說明Volume.c實驗用源文件(C主函數(shù))Load.asm實驗用源文件(匯編子函數(shù))Vectors.asm實驗用源文件(中斷向量表)Volume.hC主函數(shù)使用的頭文件Volume.cmd內(nèi)存定位文件Sine.dat實驗用數(shù)據(jù)文件Volume.gel實驗用GEL控制文件Rts6700.libC程序的運行支持庫提示:在使用CCS進行DSP軟件項目開發(fā)時,都要養(yǎng)成為每個項目建立一個目錄的習(xí)慣。此例:項目volume在目錄C:\ti\myprojects\volume1下77(1)準(zhǔn)備工作:8個需要復(fù)制的文件需要復(fù)制的文件文件說明Vo(2)先建立一個工程文件:ProjectNewProjectcreation78(2)先建立一個工程文件:ProjectNewProj(3-1)添加源文件:.c,.asm
ProjectAddFilestoProject選擇文件類型在“volume.pjt”上單擊鼠標(biāo)右鍵AddFiles…
(3-2)添加內(nèi)存定位文件.cmd
該文件定義了各代碼段或數(shù)據(jù)段在存儲器中的位置添加方法同“添加源文件” 在添加文件對話框的“文件類型”下拉列表中要選擇“Linker CommandFile(*.cmd)(3-3)若源文件是基于C語言編寫的,需向工程里添加運行支持庫文件(rts6700.lib) 該文件存放在CCS的安裝目錄“/c6000/cgtools/lib”下 在添加文件對話框的“文件類型”下拉列表中要選擇“Object andLibraryFiles(*.o*,*.l*)(3-4)添加頭文件
在工程名上單擊鼠標(biāo)右鍵,選擇“ScanAllDependencies”,這 樣.c文件包含的頭文件“volume.h”將出現(xiàn)在“Include”文件夾中(3)向工程添加各類型文件79(3-1)添加源文件:.c,.asm(3)向工程添加各類8016展開工程文件列表Vectors.asm是中斷向量表,包含了匯編指令代碼,用于在系統(tǒng)產(chǎn)生“RESET”中斷時,跳轉(zhuǎn)到C程序的入口點“c_int00”在編寫更為復(fù)雜的用戶程序時,可以在Vectors.asm文件里自行定義合適的中斷向量表,或者使用DSP/BIOS自動產(chǎn)生中斷向量表頭文件實際上不用人工添加,在建造(Build)工程時,CCS本身可以自動完成相關(guān)掃描81展開工程文件列表Vectors.asm是中斷向量表,包含了匯(4)查閱代碼:在文件名上雙擊鼠標(biāo),即可在CCS編輯窗內(nèi)看到源代碼82(4)查閱代碼:在文件名上雙擊鼠標(biāo),即可在CCS編輯窗內(nèi)看到主函數(shù)進入一個無限循環(huán),在循環(huán)內(nèi)部調(diào)用了2個函數(shù)dataIO()與processing()函數(shù)processing()對輸入緩沖區(qū)的每個采樣值乘以一個增益值“gain”,并將結(jié)果存放到緩沖區(qū)中。該函數(shù)同時調(diào)用匯編程序load(),該函數(shù)會根據(jù)processing()傳遞過來的參數(shù)processingLoad來消耗指令周期,模擬復(fù)雜信號處理算法在時間上的消耗。函數(shù)dataIO()不做任何實際操作而直接返回83主函數(shù)進入一個無限循環(huán),在循環(huán)內(nèi)部調(diào)用了2個函數(shù)dataI(5)建造(build)和運行(run)程序Building:compiling,assembling,linking三個獨立步驟按順序聯(lián)合運行。在CCS中: (1)主菜單:Project“rebuildall” (2)工具條圖標(biāo): (rebuildall)建造完畢,CCS生成一個“.out”文件,該文件默認(rèn)存放在所建工程目錄下的“debug”目錄內(nèi)裝載該“.out”文件:File“l(fā)oadprogram””所建的工程目錄”“debug”“volume.out”打開 CCS裝載完畢該.out文件后,會自動彈出disassembly窗口,顯示構(gòu)成源代碼的反匯編指令。84(5)建造(build)和運行(run)程序Building建造完畢的CCS窗口及.out文件的裝載“.out”文件的存放目錄85建造完畢的CCS窗口及.out文件的裝載“.out”文件的存裝載完畢后自動彈出的反匯編窗口:顯示構(gòu)成源代碼的反匯編指令顯示程序在運行時的輸出信息86裝載完畢后自動彈出的反匯編窗口:顯示構(gòu)成源代碼的反匯編指令顯運行(run)程序:(1)Debug“gomain”:程序從主函數(shù)開始,停留在main()處,并會有一個黃色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的C語言代碼(2)ViewMixedsource/ASM:同時看到C語言代碼和對應(yīng)編譯生成的匯編代碼,并且有一個綠色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的匯編代碼。Page20(3)Debug“run”,或,工具條圖標(biāo)(run): 讓程序全速執(zhí)行。底部的“Stdout”標(biāo)準(zhǔn)輸出窗口給出程序運行的輸出信息。“volumeexamplestarted”證明程序能夠正常運行87運行(run)程序:“volumeexamplestar黃色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的C語言代碼綠色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的匯編代碼混合觀察源文件與反匯編時,CCS禁止編輯單擊鼠標(biāo)后,按F1鍵可以得到指令的幫助信息預(yù)處理命令“#ifdef”和“endif”包含的代碼段并沒被執(zhí)行,因為沒有定義符號“FILEIO”88黃色的箭頭標(biāo)記在當(dāng)前要執(zhí)行的C語言代碼綠色的箭頭標(biāo)記在當(dāng)前要CCS設(shè)置預(yù)處理符號ProjectBuildoptionCompilerProcessorDefineSymbols_DEBUG;FILEIOTab鍵編譯命令中會新增一個-d“FILEIO”“RebuildAll”之后,改變的選項才會生效89CCS設(shè)置預(yù)處理符號“RebuildAll”之后,改變的選使用斷點與觀察窗:檢查某個變量在程序運行中的取值變化情況或F9:出現(xiàn)紅點來標(biāo)記ViewWatchWindow:CCS彈出一個獨立的區(qū)域,用于顯示運行時所觀察的變量值90使用斷點與觀察窗:檢查某個變量在程序運行中的取值變化情況或F顯示當(dāng)前執(zhí)行的函數(shù)的所有局部變量Watch1Name列的表達式圖標(biāo)輸入要觀察的變量名回車觀察窗口觀察dataIO的值觀察結(jié)構(gòu)變量str91顯示當(dāng)前執(zhí)行的函數(shù)的所有局部變量Watch1Name列的表利用CCS調(diào)試應(yīng)用程序程序的調(diào)試過程和優(yōu)化過程一般會占用整個開發(fā)周期60%以上的時間調(diào)試有非常多的技巧和手段,但都必須要有良好的工具才能實現(xiàn)CCS除了提供大多數(shù)通用開發(fā)環(huán)境都具備的基本調(diào)試工具(存儲器與寄存器的查看與修改、斷點、性能分析)外,還提供在嵌入式開發(fā)中非常游泳的事件檢測、探針等工具,以及在信號處理類應(yīng)用能夠中非常實用的圖形化工具為了調(diào)試應(yīng)用程序,首先必須將程序加載到目標(biāo)系統(tǒng)中92利用CCS調(diào)試應(yīng)用程序程序的調(diào)試過程和優(yōu)化過程一般會占用整個程序調(diào)試的基本操作使用反匯編窗口:Viewdisassembly使用存儲器窗口:Viewmemory觀察CPU寄存器:Viewregistor加載COFF文件單步執(zhí)行運行復(fù)位處理器:DebugresetCPU內(nèi)存操作變量操作編輯命令行觀察調(diào)用堆棧:Viewcallstack保存和恢復(fù)工作空間93程序調(diào)試的基本操作使用反匯編窗口:Viewdisassem存儲器/變量的查看與修改調(diào)試工具的最基本功能之一查看和修改寄存器、程序存儲器、數(shù)據(jù)存儲器、I/O存儲器1.CPU寄存器的查看與修改 ①debughalt:停止程序運行 ②viewregistercoreregisters:工作區(qū)底部打開一個CPU寄存器窗口,其中列出了CPU所有寄存器的值。
③debugrun:程序繼續(xù)運行CPU寄存器的值肯定會發(fā)生改變,只有再用halt指令停止程序運行后才會看到發(fā)生變化的寄存器以紅色顯示
④修改寄存器的值:
方法1:雙擊想要修改的寄存器 方法2:右擊快捷菜單“editregister”命令94存儲器/變量的查看與修改調(diào)試工具的最基本功能之一30各種顯示都是在程序運行停止或碰到斷點、探針點等地方才會刷新95各種顯示都是在程序運行停止或碰到斷點、探針點等地方才會刷新32.外設(shè)寄存器的查看與修改在DSP芯片內(nèi)部有各種外設(shè),如定時器、SDRAM、McBSP等。對外設(shè)的控制和運行都是以讀寫外設(shè)控制寄存器的方式完成的viewregisterPeripheralregisters962.外設(shè)寄存器的查看與修改在DSP芯片內(nèi)部有各種外設(shè),如定3.存儲器的查看與修改 ①debughalt:停止程序運行
②viewmemory:打開“memorywindowoption”對話框 ③修改存儲器的值: 方法1:雙擊想要修改的存儲器單元 方法2:editmemoryedit…給出一個與此段存儲器內(nèi)容相關(guān)的名字輸入需要顯示的存儲區(qū)的起始地址輸入顯示數(shù)據(jù)的Q值選擇顯示數(shù)據(jù)的格式以IEEE格式顯示浮點數(shù)希望使用參考緩沖區(qū)(位于主機上CCS的內(nèi)部緩沖區(qū),用做DSP中一段存儲器塊的鏡像973.存儲器的查看與修改給出一個與此段存儲器內(nèi)容相關(guān)的名字輸4.變量的查看與修改 ①變量具有特定的數(shù)據(jù)結(jié)構(gòu),而不僅僅是一串二進制數(shù)
②快速查看變量值:將鼠標(biāo)移到源文件的某一變量處停留,會出現(xiàn)一個小小的工具提示窗口 ③快速查看和修改變量值:右擊快捷菜單“quickwatch”命令
④viewwatchwindow:打開變量查看和修改窗口底部有2個標(biāo)簽:“watchlocals”和“watch1”“watch1”的操作:添加變量;修改標(biāo)簽名字984.變量的查看與修改34斷點工具的使用使用斷點是程序調(diào)試的基本手段CCS的斷點工具包括軟件斷點、硬件斷點程序運行過程中如果碰到斷點,就會暫時停止運行,回到調(diào)試狀態(tài)。用戶可以通過查看變量、圖形等方法,發(fā)現(xiàn)程序中的錯誤1.軟件斷點:最常用 1)在已經(jīng)被加載到程序存儲器中的程序的某一行上設(shè)置斷點。 2)斷點的設(shè)置:將光標(biāo)移到源程序文件的某一行右擊快捷菜單的“togglebreakpoint”工具欄的“斷點”按鈕debugbreakpoint本行左邊會出現(xiàn)紅色的斷點標(biāo)記99斷點工具的使用使用斷點是程序調(diào)試的基本手段本行左邊會出現(xiàn)紅色3)重新啟動程序運行:debugrun程序停在斷點處,此行左邊顯示一個黃色小箭頭自動刷新寄存器、存儲器、變量查看窗口和圖形顯示窗口4)注意:軟件斷點實際上通過修改斷點處的指令來達到中斷運行的目的。斷點必須位于程序存儲器,而且必須是在可由CCS修改的存儲器如RAM中為了不破壞處理器流水線,不要將斷點設(shè)置在屬于跳轉(zhuǎn)語句的指令上;不要將斷點設(shè)置在塊重復(fù)語句的倒數(shù)第1條和第2條指令上1003)重新啟動程序運行:debugrun362.硬件斷點:1)不改變目標(biāo)程序,適合于在ROM存儲器中設(shè)置斷點或設(shè)置存儲器存取斷點2)將硬件仿真器通過JTAG接口與主機相連探針點(Probepoint)工具的使用1012.硬件斷點:探針點(Probepoint)工具的使用3以sinwave.pjt為例:ti\tutorial\target\sinewave\sinwave.pjt102以sinwave.pjt為例:ti\tutorial\tar1.ProjectBuild:完成編譯連接,得到.out文件。注意在Build輸出窗口中應(yīng)顯示沒有錯誤和警告2.FileLoadprogram:加載程序,然后在合適的目錄下選擇打開sinewave.out文件程序加載后會自動打開一個反匯編窗口綠色箭頭指向_c_int00,c_int00不是用戶代碼的一部分,而是C語言引導(dǎo)代碼的入口C語言程序都會在連接時自動加上引導(dǎo)代碼,這些引導(dǎo)代碼一般來說不需要調(diào)試,需要調(diào)試的是用戶代碼。對C語言程序來說,就是從main()函數(shù)開始的地方1031.ProjectBuild:完成編譯連接,得到.out3.Debuggomain:自動打開sine.c源文件窗口,并有黃色箭頭停在main()函數(shù)入口處。從這里開始就可以調(diào)試用戶程序4.Debugrun:程序開始自由運行。由于沒有連接I/O和圖形顯示,此時程序雖然在運行,但是看不到任何處理結(jié)果。這是因為在mian()函數(shù)中有一個無限循環(huán),程序會一直在此循環(huán)中運行。5.DebugHalt:中斷程序的運行但是底部會打開一個stdout標(biāo)準(zhǔn)輸出窗口,并在其中輸出“SineWaveexamplestarted.”。這是由main()函數(shù)中的puts(“SineWaveexamplestarted.\n”)語句運行的結(jié)果1043.Debuggomain:自動打開sine.c源文探針點(Probepoint)工具的使用程序運行到探針點處會執(zhí)行特定的操作(刷新圖形、文件I/O)文件I/O可以完成目標(biāo)系統(tǒng)的DSP存儲器(程序、數(shù)據(jù)或I/O存儲器)與主機上的文件之間的數(shù)據(jù)交換1.重新開始調(diào)試程序:debugrestart2.切換到源程序窗口,將光標(biāo)移到某一行,設(shè)置探針點右擊快捷菜單的“toggleProbepoint”工具欄的“探針點”按鈕debugProbepoint3.FilefileI/O:fileI/O針對DSP而言 1)文件輸入從一個數(shù)據(jù)文件讀取波形到DSP內(nèi)部的緩沖區(qū)(currentBuffer.input,長度為100字)本行左邊會出現(xiàn)蘭色的菱形探針點標(biāo)記105探針點(Probepoint)工具的使用程序運行到探針點處10642設(shè)置主機上的什么文件與DSP的什么存儲器交換數(shù)據(jù),在程序中的什么地方交換數(shù)據(jù)輸入和輸出是針對DSP而言的2)在Fileinput選項卡下:①Addfile
ti\tutorial\target\sinwave\sine.dat②在Address中填入DSP中緩沖區(qū)的地址(currentBuffer.input)③在length中填入長度(100)④AddprobepointprobepointConnect下拉列表框中選擇sine.dat⑤按“確定”后發(fā)現(xiàn)probe中顯示“connected”⑥Wraparound:讀到文件結(jié)尾時繼續(xù)從文件頭讀取107設(shè)置主機上的什么文件與DSP的什么存儲器交換數(shù)據(jù),在程序中的3)
運行程序:debugrun
①檢查變量currentBuffer,可以發(fā)現(xiàn)input數(shù)組中的值已經(jīng)發(fā)生變化 ②currentBuffer.input中的數(shù)據(jù)也可以以波形顯示1083)運行程序:debugrun44在程序的調(diào)試過程中,可以用這樣的方法給DSP程序一個特定的輸入數(shù)據(jù),來測試程序的功能。這樣的數(shù)據(jù)一般是主機上變成產(chǎn)生的,具有特定的格式Viewwatchwindowwatch1109在程序的調(diào)試過程中,可以用這樣的方法給DSP程序一個特定的輸4.CCS的FileI/O可以使用兩類數(shù)據(jù)文件:1)文本格式(.dat):sine.dat165110000x000000000x0000000f0x0000001e0x0000002d0x0000003a0x000000460x000000500x00000059指定格式每一行一個數(shù)據(jù)數(shù)據(jù)格式;1:十六進制固定數(shù)存儲器起始地址存儲器長度存儲器頁2)二進制格式(.out):①與DSP上的可執(zhí)行程序的格式一樣,為COFF(commonObjectFileFormat)格式的目標(biāo)文件②文件中的內(nèi)容以段的形式保存,可執(zhí)行程序中有代碼段、數(shù)據(jù)段③文本格式的數(shù)據(jù)文件中只有一個數(shù)據(jù)段1104.CCS的FileI/O可以使用兩類數(shù)據(jù)文件:1651圖形工具的使用在CCS中可以將數(shù)據(jù)按圖形化方式顯示出來,比較直觀CCS提供了豐富的圖形可視化工具,用于完成時域波形、頻譜、圖象、星座圖、眼圖等的顯示數(shù)據(jù)準(zhǔn)備好后選擇ViewGraph,設(shè)置相應(yīng)的顯示類型和顯示參數(shù),即可按希望的圖形類型顯示數(shù)據(jù)ViewGraph,111圖形工具的使用在CCS中可以將數(shù)據(jù)按圖形化方式顯示出來,比較l
顯示類型(DisplayType)。單擊下拉菜單,點擊所需的顯示類型,則Time/Frequency對話框(參數(shù)設(shè)置)相應(yīng)隨之變化。l
視圖標(biāo)題(GrphTitle):定義圖形視圖標(biāo)題。l
起始地址(StartAddress)。定義采樣緩沖區(qū)的起始地址。當(dāng)圖形被更新時,采樣緩沖區(qū)內(nèi)容亦更新顯示緩沖區(qū)內(nèi)容。此對話欄允許輸入符號和C表達式。當(dāng)顯示類型為“DualTime”時,需要輸入兩個采樣緩沖區(qū)首地址。采集緩沖區(qū)尺寸(AcquisitionBufferSize)。用戶可以根據(jù)所需定義采樣緩沖區(qū)的尺寸。例如當(dāng)一次顯示一幀數(shù)據(jù)時,則緩沖區(qū)尺寸為幀的大小。若希望觀察串行數(shù)據(jù),則定義緩沖區(qū)尺寸為1,同時允許左移數(shù)據(jù)顯示。l
索引遞增(IndexIncrement)。定義在顯示緩沖區(qū)中每隔幾個數(shù)據(jù)取一個采樣點。112l顯示類型(DisplayType)。單擊下拉菜單,點擊l
顯示數(shù)據(jù)尺寸(DisplayDataSize)。定義顯示緩沖區(qū)大小。取決于”顯示類型”選項。對時域圖形,顯示緩沖區(qū)尺寸等于要顯示的采樣點數(shù)目,并且大于等于采樣緩沖區(qū)尺寸。若顯示緩沖區(qū)尺寸大于采樣緩沖區(qū)尺寸,則采樣數(shù)據(jù)可以左移到顯示緩存顯示。對頻域圖形,顯示緩沖區(qū)尺寸等于FF幀尺寸,取整為2的冪次。l
Q值(Q-Value)。采樣緩沖區(qū)中的數(shù)始終為16進制數(shù),但是它表示的實際數(shù)取值范圍由Q值確定。Q值為定點數(shù)定標(biāo)值,指明小數(shù)點所在的位置。Q值取值范圍為0~15,假定Q值為xx,則小數(shù)點所在的位置為從最低有效位向左數(shù)的xx位。l
采樣頻率(SamplingRate(Hz))。對時域圖形,此參數(shù)指明在每個采樣時刻定義對同一數(shù)據(jù)的采樣數(shù)。假定采樣頻率為xx,則一個采樣數(shù)據(jù)對應(yīng)xx個顯示緩沖區(qū)單元。由于顯示緩沖區(qū)尺寸固定,因此時間軸取值范圍為0~(顯示緩沖區(qū)尺寸/采樣頻率)。對時域圖形,此參數(shù)定義頻率分析的樣點數(shù)。頻率范圍為0~采樣率/2。113l顯示數(shù)據(jù)尺寸(DisplayDataSize)。定義l
數(shù)據(jù)繪出順序(PlotDataFrom)。此參數(shù)定義從采樣緩沖區(qū)取數(shù)的順序為從左到右:采樣緩沖區(qū)的第一個數(shù)被認(rèn)為是最新或最近到來數(shù)據(jù);從右到左:采樣緩沖區(qū)的第一個數(shù)被認(rèn)為是最舊數(shù)據(jù)。l
左移數(shù)據(jù)顯示(Left-ShiftedDataDisplay)。此選項確定采樣緩沖區(qū)與顯示緩沖區(qū)的哪一邊對齊。可以選擇此特性允許或禁止。若允許,則采樣數(shù)據(jù)從右端填入顯示緩沖區(qū)。每更新一次圖形,則顯示緩存數(shù)據(jù)左移,留出空間填入新的采樣數(shù)據(jù)。注意顯示緩沖區(qū)初始化為0。若此特性被禁止,則采樣數(shù)據(jù)簡單覆蓋顯示緩存。l
自動定標(biāo)(Autoscale)。此選項允許Y軸最大值自動調(diào)整。若此選項設(shè)置為允許,則視圖被顯示緩沖區(qū)數(shù)據(jù)最大值歸一化顯示。若此選項設(shè)置為禁止,則對話框中出現(xiàn)一新的設(shè)置項“MaximumY-Value”,設(shè)置Y軸顯示最大值。114l數(shù)據(jù)繪出順序(PlotDataFrom)。此參數(shù)定義l
直流量(DCValue)。此參數(shù)設(shè)置Y軸中點的值,即零點對應(yīng)的數(shù)值.對FFT幅值顯示,此區(qū)域不顯示。l
坐標(biāo)顯示(AxesDisplay)。此選項設(shè)置X,Y坐標(biāo)軸是否顯示。l
時間顯示單位(TimeDisplayUnit)。定義時間軸單位.可以為秒(s),毫秒(ms),微秒(μs)或采樣點。l
狀態(tài)條顯示(StatusBarDisplay
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧食產(chǎn)業(yè)鏈韌性及其空間演化規(guī)律的研究
- 中國古代詩詞欣賞與解讀課程教案
- 持續(xù)評估與反饋機制在集團化辦學(xué)效提升中的作用
- 雪兒作文500字(11篇)
- 高技術(shù)行業(yè)對就業(yè)市場的影響與挑戰(zhàn)
- 全球能源轉(zhuǎn)型趨勢對學(xué)科布局的影響
- 提升中醫(yī)醫(yī)院服務(wù)能力的設(shè)施改造方案
- 2025年小學(xué)語文期末考試試題及答案
- 2025年歷史文化與現(xiàn)代文明的交融能力綜合考試試卷及答案
- 2025年能源與動力工程師考試試題及答案
- 第五單元《面積》(教學(xué)設(shè)計)-【大單元教學(xué)】三年級數(shù)學(xué)下冊同步備課系列(人教版)
- 閱讀認(rèn)知策略的跨學(xué)科研究框架構(gòu)建
- 摜蛋考試試題及答案
- GA/T 2159-2024法庭科學(xué)資金數(shù)據(jù)清洗規(guī)程
- DB63-T 2129-2023 鹽湖資源開發(fā)標(biāo)準(zhǔn)體系
- 企業(yè)風(fēng)險管理-戰(zhàn)略與績效整合(中文版-雷澤佳譯)
- 業(yè)務(wù)學(xué)習(xí)踝關(guān)節(jié)骨折
- 實景演出制作合同協(xié)議
- 迅鐳激光切割機操作培訓(xùn)
- JJF 2241-2025電子停車計時收費表校準(zhǔn)規(guī)范
- 人文關(guān)懷示范病房工作分享課件
評論
0/150
提交評論