DSP入門學(xué)習(xí)之程序編寫和調(diào)試環(huán)境簡介(精)_第1頁
DSP入門學(xué)習(xí)之程序編寫和調(diào)試環(huán)境簡介(精)_第2頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 4 章:程序爲(wèi)寫和調(diào)洪環(huán)境簡介 4.14.1 程序的編寫 4.24.2 調(diào)試環(huán)境代碼編譯器 CCCC 簡介 4.44.4 頭文件和命令文件 0 4.1程聲的偏傅 匯編偽指令分成 7 類(根據(jù)功能” “定義段的偽指令: 初始化常數(shù)的偽指令; 調(diào)準(zhǔn)段程序計數(shù)器的偽指令: 引用其他文件的偽指令: 條件匯編偽指令; 在匯編時定義符號的偽指令; 執(zhí)行其他功能的偽指令. 調(diào)試一個程序的簡單步驟 0 41戲為的偏傅 i段定義偽指令 作用:把匯編語言程序的各個部分劃分在適當(dāng)?shù)亩沃? .ascct 創(chuàng)建具有絕對地址的初始化命名段; bss 為未初始化的變量保留空間: ect 定義已初始化的帶命名段,其后的數(shù)

2、據(jù)存入該段: .text 該段包含了可執(zhí)行的代碼; .used 在一個未初始化的有命名的段中為變童保留空間. .data 通常包含了初始化的數(shù)據(jù); 設(shè)是通過槻加方式來建立的例如在匯編器第次遇到d財偽指令時. data指令后面的語句都被匯編在.data段中 (直到匯編器遇到.icxi和.沁 【偽 指令為ll:)如果麻來又在英他的段屮遇到d跑指令, 川后的講句繼續(xù) 加到.data段中.這樣雖然川序中是多個.data段分散在各處.但匯編器 只創(chuàng)建個.dma段,它吋以連續(xù)地被分配到內(nèi)存中。 6 41戲為的偏傅 2常數(shù)初始化偽指令 和.、pxe衽當(dāng)前段中保留特點的位.匯編器用0填充這些保留位.用戶可 以

3、通過把位數(shù)乘16來保留規(guī)定的字?jǐn)?shù).當(dāng)使用山卩8“的標(biāo)號時,指向保留位的 笫一個字;當(dāng)使用.bes標(biāo)號時,指向保留位的最后一個字. 仍2把一個或多個誡的值放入當(dāng)前段的連續(xù)字中.該指令類似于.Morel,不 同之處在于“ord中的每個值的寬度限制為16位. .field將單個數(shù)值入當(dāng)前字規(guī)定的位數(shù)中. 計算以IEEE格式農(nóng)示的單精度(32位)浮點數(shù),并存放在當(dāng)前段 的連續(xù)字中,奇位先存.final能自動按域的邊界排列,.bfloal不能. ini和.word把一個或多個16位數(shù)存放到當(dāng)前段的連續(xù)字中.int為無符號養(yǎng)型 量.word為帶符號整型 .lmgJW.blng把32位數(shù)存放到當(dāng)前段連續(xù)的兩

4、個字中,高位字先存1呻能 自動按長字的邊界排列,.blong卻不能. .string把砸的字符從一個或多個字符串中傳送到當(dāng)前段中. 6 41程聲的偏傅 3段程序計數(shù)Shspc)定位指令 丄11凹使SPC對準(zhǔn)1字(16位)128字的邊界,這保證了緊接著該指令的 代碼從一個整字或頁的邊界開始.如果SPC已經(jīng)定位于選定的邊界, 它就不會增加了.ulhin偽指令的操作數(shù)必須尊于20216之間的一個2 的黑值(盡管超過27的值沒有意義).不同的操作數(shù)代表了不同的邊界 定位要求. 操作數(shù)為1是讓SPC對準(zhǔn)字邊界; 操作數(shù)為2是讓SPC對準(zhǔn)長字(偶地址)邊界; 操作數(shù)為128是讓SPC對準(zhǔn)頁邊界: 不帶操作

5、數(shù)時,其默認(rèn)值為128,即對準(zhǔn)頁邊界. .even調(diào)準(zhǔn)SPC,使其指向下一個完整字.在使用fkM偽指令之后, 用戶應(yīng)當(dāng)使用c“n如果.(kid指令未填滿一個字, 那么紡“指令將 使匯編器填滿全字,并把未用的位填0 6 3程聲的偏傅 4.引用其他文件的偽指令 .copy/.includc偽指令告訴匯編器開始從其他文件中讀源語句.當(dāng)匯編 讀完以后,繼續(xù)從當(dāng)前文件中讀源語句。從.copy文件中讀的語句會打 印在列表中,而從.include文件中讀的語句不會打印在列表中. * .clef確認(rèn)一個在當(dāng)前模塊中定義的且能被其他模塊使用的符號,匯編 器把這個符號存入符號表中. ref確認(rèn)一個在當(dāng)前模塊中使用

6、但在其他段中定義的符號.匯編器把 這個符號標(biāo)注成一個未定義的外部符號.且把它裝入目標(biāo)符號表中. 以便鏈接器能還原它的定義. Klobal表明一個外部符號,使其他模塊在連接時可以使用.如果在當(dāng) 前段定義了該符號,那么該符號就可以被其他模塊使用,與k珂能 相同;如果在當(dāng)前段沒有定義該符號,則使用了其他模塊定義的符號 與砌能相同。一個未定義的全局符號只有當(dāng)它在程序中使用的 時候.鏈接器才對其進行處理。 0 4.1程聲的偏傅 5 控制條件匯編的偽指令 .if/.elseif/.else/.endif 這些指令告訴匯編器,根據(jù)表達式的 值條件匯編一塊代碼if 表示一個條件塊的開始,如果條 件為真就匯編緊

7、接著的代碼;MsMf是農(nóng)示如果啲條件為 假,而.elsei啲條件為真,就匯編緊接著的代碼:.endif結(jié) 束該條件塊. l( (mp/.bicak/cndloop 告訴匯編器按照表達式的值循環(huán)匯 編一塊代碼 .loop標(biāo)注一塊循環(huán)代碼的開始;.break告訴 匯編器當(dāng)表達式為假時,繼續(xù)循環(huán)匯編,當(dāng)表達式為真時 ,立刻轉(zhuǎn)到.endloop 后的代碼去執(zhí)行;.endloop 標(biāo)注一個可 循環(huán)塊的末尾 0 4.1程聲的偏傅 6.在匯編時定義符號的偽指令 作用:匯編時的定義符號指令是使有意義的符號名與常數(shù)值或字符申相竽 同. 4LSR規(guī)定一個字符申與一個替代符號相等,并將其存放在替代符號表 中.當(dāng)匯編

8、器遇到一個替代符號,就用對應(yīng)的字符串來代替這個符號 替代符號可以項新定義. XV Hl計算一個表達式的值并把結(jié)果傳送到與一個替代符號等同的字符 串中.該指令在處理計數(shù)器時非常有用. labd定義一個專門的符號以表示當(dāng)前段內(nèi)裝入時的地址,而不是運 行時的地址. 把一個常數(shù)值等效成一個符號.存放在符號表中,且不能被 清除. 6 41戲聲的偏傅 7 其他方面的匯編偽指令 .end 結(jié)束匯編.它是一個程序的最后一個源語句。 .version 決定指令所運行的處理器。每一種 C54x芯片都有 自己的值. label定義特定的符號,表示當(dāng)前段內(nèi)裝載時的地址。當(dāng) 段在一個地址裝載在另一個地址處運行時,該指令

9、特別有 用. A 4.1戲聲的偏傅 3 種基本的文件: 匯編語言文件 后綴為.ASM,書寫該文件所用指令為LF24O7支持的匯編語 言指令.該程序中實現(xiàn)DSP要完成的功能.通常在該文件的 最開始寫上.include4*F2407REGS.HM,表明包含了 F2407REGS.H頭文件里定義的一些寄存器. 頭文件 后綴為H,定義DSP系統(tǒng)用到的一些寄存器映射地址和用戶 用到的常量和用戶自定義的寄存器。 命令文件(.CMD) 后綴為后綴為.CMD,實現(xiàn)對程序存儲器空間和數(shù)據(jù)存儲器空間的 分配.該文件常用的偽指令:MEMORY和SECTIONS 6 4戲聲的偏傅 MEMORY 偽指令 用來標(biāo)示實際存

10、在目標(biāo)系統(tǒng)中且可被使用的存儲器范國每個療倫器范國具有名字 X起始地址和長度.語法如下; MEMORY PAGEO: n;imdattr): originamstnU kng(h=cnstnt: PACEni numen|attr) )l: origin=constant kngthconstnnt: PM;k 標(biāo)示存儲空間用戶規(guī)定町以多達2S5頁.通常PM;EO定程序存儲器,PAf.| 每一個以lumw開始的段的規(guī)格說明定義了一個輸出段.在段名后是特性列表,定義 段的內(nèi)客及分配方式.可能具有的轉(zhuǎn)性如下: 轉(zhuǎn)戟位一規(guī)定段將被存H器何處: 運行位-段將在存?zhèn)浜翁庍\存 輸入段一姐成出段的入段; 段類

11、魁 F 定段類顯的標(biāo) 填充值一用于填充未初始化空位的效值 0 調(diào)試琢說代碼偽律器簡介 本節(jié)要求: 了解 CCS 開發(fā)環(huán)境具有的功能, 能夠操作 CCS的窗口、菜單和工具條。掌握 CCS 工 程管理的概念,能夠完成簡單程序的編輯 .匯編.連接和調(diào)試。 CCS 是 TI 公司 DSP 軟件的集成開發(fā)環(huán)境( IDE),本節(jié)以 CCS2.0 為奏照講述. 6 72 調(diào)試壞境代碼鎬律器簡介 CCS 集成開發(fā)環(huán)境簡介 Windows 下工作,類似于 VC+的集成開發(fā)環(huán)境; ,采用圖形接口界面,有編工具和工程 它將匯編器、鏈接器、C/C+編譯器、建庫工具等集成 在一個統(tǒng)一的開發(fā)平臺中; CCS 所集成的代碼

12、調(diào)試工具具有各種調(diào)試功能, 能對 TMS320系列 DSP 進行指令鍛的仿真和可視化的實時數(shù)據(jù) 分析. 豐富的輸入/出庫函數(shù)和信號處理庫函數(shù). CCS 2.0系統(tǒng)的安裝 配置。 0 調(diào)試壞境代碼偏蒔器簡介 系統(tǒng)配置 原因:為使 CCS IDECCS IDE 能工作在不同的硬件或仿真目 標(biāo)上。 步驟: 雙擊桌面上的Setup CCS 2CC 2000)圖標(biāo),啟動CCS設(shè)置. 在彈出對話格中單擊“Clear按鈕,清除以前定義的配置. 備證讓活供選擇的配文件中,選擇能與使用的目標(biāo)系統(tǒng)相匹配 單擊加入系統(tǒng)配置按鈕,將所選中的配置文件輸入到CCS設(shè)量窗口當(dāng) 前正在創(chuàng)建的系統(tǒng)配置中. 單擊“FileSav

13、e(保存尸按鈕, 將配置保存在系統(tǒng)寄存器中. 當(dāng)完成CCS42調(diào)試壞境代碼偽傳器簡介 用來對該編譯器的運行環(huán)境進行 程序調(diào)試仿真環(huán)境。 配置后,單擊“FWEW按鈕,退出CCS Setup. 0 調(diào)試琢境代碼偏存器簡介 1.CCS 的窗口 0 調(diào)試琢境代碼偏存器簡介 2. CCS2. CCS 的菜單 File (文件):文件管理,載入執(zhí)行程序.符號及數(shù)據(jù),文 件輸入輸出等 Edit (編輯):文件及變量編輯,如剪貼、撤消、字符串査 找尊 ViCM (査看):工具條顯示設(shè)置,內(nèi)存、寄存器和圖形顯 示等 Project (工程):工程管理(新建、打開、關(guān)閉及添加文 件等).編譯、構(gòu)建工程等 Debu

14、g (調(diào)試):斷點、探針設(shè)置,單步執(zhí)行、復(fù)位等 ProOler (性能):性能菜單,包括時鐘和性能斷點設(shè)置等 雙擊桌面上CCS 2CC 2000)圖標(biāo).啟動CCS IDE顯示CCS主界面. 可以根據(jù)用戶需費 JKJK 示11 據(jù) 犒助用戶査看機器招 令.査找錯溟 量承對工 1818 追行8 8 譯.匯和連疫時的一 些狀去伯總知果在譯.匯和堆 ilil中發(fā)現(xiàn)備溟HWHW 口見示出 館浪類顯和 H H 浜也 査看、壊輯內(nèi)存和寄 P E E 二 用戶 8E8E 可以輯程序.乂 B 5 嘆 n n可以設(shè)置斷點和探忡. PP77 卜 0彳纟調(diào)試琢境代碼偏存器簡介 2 2、CCSCCS 的菜單 GEL (

15、擴展功能):利用通用擴展語言設(shè)置擴展功能 Option (選項):選項設(shè)置,設(shè)置字體、顏色.鍵盤屬性 、動畫速度、內(nèi)存映射等 Tools (工具):包括引腳連接、端口連接、命令窗口、連 接設(shè)置等 DSP/BIOS (實時分析工具):用來輔助 CCS 環(huán)境實現(xiàn)程序 實時調(diào)試 Windows (窗口):窗口管理,包括窗口排列、窗口列表 等 Help (幫助八 CCS在線幫助菜單,包括用戶手冊、入門 指南等 0 調(diào)試壞境代碼儘蒔器簡介 ProjectProject 菜單(工程文件被存盤為叫 pjtpjt 文件) New新建一個工程,將該工程保存至新建工程的文件夾里. Add Hies to Proj

16、ect工程中支持C源文件(*.Ck匯編源文件 (ASM)、 庫文件*.LIB)和鏈接命令文件工程管理會自動加入 頭文件和Include引用的文件.不允許添入其他類型的文件. Compile File對C或匯編源文件進行編譯. Biiild對工程進行編譯、匯編和連接,生成可執(zhí)行文件QUT. Rebuikd All對工程中所有文件重新編譯并鏈接生成輸出文件. Stop Build停止對工程的編譯、匯編和連接. Biiild Options用來設(shè)定編譯器、匯編器和鏈接器的參數(shù),通常采用默 認(rèn)設(shè)置. Keccnt rrojcct l ilc顯示最近打開過的工程. 4.2調(diào)試規(guī)說代碼偽傳器簡介 View

17、 菜單 Dis-Assemhiy 觀察匯編程序窗口;可在此窗口中對匯編程 序進行修改。 Memory 觀察存儲窗口:可選擇觀察的存儲器類型和存儲 器的起始地址. ( Pl Registers 考察調(diào)試過程中 CPU 寄存器的和各個狀態(tài)位 的變化情況。 Hatch Window 觀察調(diào)試過程中的變裁,C 表達式,地址和 寄存器的值。 Mixed Source and ASM 在調(diào)試過程中即觀察 C 程序又觀察 匯編程序. 4.2調(diào)試規(guī)說代碼偽傳器簡介 DebugDebug 菜單 Bnakpoinls將光標(biāo)放在要設(shè)置斷點的程序處可衽程序中設(shè)置斷點;程 序運行到斷點處自動停止. ProlK- Poi

18、nts在程序中設(shè)置探測點. Steplnto單步執(zhí)行程序并進入調(diào)用的子程序. SkpOver單步執(zhí)行程序但不進入調(diào)用的子程序或中斷服務(wù)程序. StepOut跳出子程序. 冷川執(zhí)行程序到斷點、探測點或用戶中斷. H:山用來停止程序的執(zhí)行. Reset l)SP對處理器進行復(fù)位. Restart將程序指針指向程序的起始地址.從程序最開始處執(zhí)行程序. 調(diào)試琢境代碼偽傳器簡介 . . 提示: 爭用CCS的11旳 3、CCS 的工具欄 Standard Toolbar:包括新建、打開、保存、剪切、復(fù)制、粘貼、取消 、恢復(fù)、査找、打印和幫助等 Project rlbar:提供了執(zhí)行GEI.曲數(shù)的一種快捷方

19、法. zSM/S頭文件; 2. 創(chuàng)建和管理工程 工程的創(chuàng)魅、打開和關(guān)閉( (ProjWNew/Open/Close) 使用工程觀察窗口(單擊工程文件夾、工程名L.pj計和各個文件夾上的“+/ 一”號即可 添加文件到工程( (Project*/dd Files to Project ) 從工程中刪除文件Project ) 6 43調(diào)試一個程聲的簡單步驟 調(diào)試 (1)裝載可執(zhí)行程序 File* Load Program 復(fù)位(CCS提供 4 種方法) Reset DSP: Debug Rcset DSP命令初始化所有R井停止運行程序. Load Kernel: Lode Kernel 命令重新裝入

20、DSP核 Why ?卄川門他川 U怡的詬試黔.啊USPKd*仇&上EI的通仁 果QSP&被磺壞 JM&備鼻叨USIfW無法 II懷板通估. Restart: Debug - Restart命令將PC恢復(fù)到當(dāng)前載入程序的入口地 址,但不執(zhí)行當(dāng)前程序. Go main: Debug - Go main命令提供了一種快速運行用戶應(yīng)用程序 的方法 c在土收序入口處設(shè)盜曲*1師點.需厲開始執(zhí)行寺程序祓竹停遇対 個WTZUH. d 時析點披刪徐 C 調(diào)試一個戲聲的簡草步驟 調(diào)試 Q)程序執(zhí)行方式 單步執(zhí)行操作 單步進X: Debug *Step Into:每操作一次.執(zhí)行一條指令;

21、 單步執(zhí)行:Debug-Step 5:每操作一次,執(zhí)行一條播令(函數(shù),子程 序看作一條; 單步出:Debu日-*Step Out:從子程序跳出; 執(zhí)行芻光標(biāo)處:Debug- Run to Curwr:程序運行到光標(biāo)所在語句. 連續(xù)運行操作(實時運行) 運行猩序,DebuR-Run:從當(dāng)前PC所播位置開始執(zhí)行到結(jié)束或斷點: 停止程虧Debug - Hatt:暫停程序的執(zhí)行i 自由運行:Debug - Run frz:全速執(zhí)行用戶程序,忽略所有斯點. A 4.3調(diào)試一個程序的簡單步驟 調(diào)試 (3)程序執(zhí)行方式 斷點運行程序(動畫) 在執(zhí)行各個命令前應(yīng)當(dāng)預(yù)先設(shè)置好程序斷點,毎按一次按鈕,從當(dāng) 前程序

22、位置執(zhí)行到所有遇到的第一個斷點 . 命令:rkbu): animate; 斷點設(shè)置:使用對話框:采用工程工具條“設(shè)置斷點”按鈕 探針(pwbc)斷點:LCS在源程序某條語句上設(shè)置的一種斷點.每 個探針斷點都有相應(yīng)的屬性(用戶設(shè)置)用來與一個文件的讀/寫相 關(guān)聯(lián).用戶程序運行到探針斷點所在語句時,自動讀入數(shù)據(jù)或?qū)⒂?算結(jié)果輸出到某個文件中, 6 4.3調(diào)試一個戲聲的簡單步驟 調(diào)試 2)存儲器、寄存器、變量的操作 存儲器:拷貝數(shù)據(jù)塊/填充數(shù)據(jù)塊/察看/編輯內(nèi)存 顯示寄存器/編輯寄存器 變:用觀察窗口査看變量/編輯變量 數(shù)據(jù)輸入備出 利用數(shù)據(jù)讀入/寫出功能命令:KileI)afa(Lode /Sav

23、e) 用途:偶爾的手工讀入/寫出場合 利用探針功能:適用于自動調(diào)入和輸出數(shù)據(jù)場合。 0 4.4妙工程值匿 (1)p”文件 CCS 工程文件。在 CC中,工程文件的擴 展名為nmk (2)ih文件 CCS 運行支持庫. (3)h文件 頭文件. (4)c 文件 C 源文件。 (5) .asm文件 匯編語言源文件. (6) .cmd 文件 鏈接命令文件. ( (7)obj文件 目標(biāo)文件,COFF 格式。 (8)文件 可執(zhí)行文件,COFF 格式。 0 4.4妙工程組版 頭文件 CCS工程中的頭文件與其它基于C語言的開發(fā)環(huán)境中的頭文件基本相 同.主要是用來定義工程中的常童和數(shù)據(jù)結(jié)構(gòu)為了提高開發(fā)效率. 開

24、發(fā)人員往往會將DSP片內(nèi)的控制寄存器定義寫成一個頭文件,這樣 在各個基于相同型號DSP的開發(fā)中,可以共宇這個定義控制寄存器的 頭文件 中斷向量定義 與傳統(tǒng)的單片機類似,DSP的中斷也可以采用査詢和回調(diào)兩種方式來 處理.如果采用回調(diào)方式處理,其實現(xiàn)方式是在中斷向量地址處放置 一個跳轉(zhuǎn)語句,跳轉(zhuǎn)到相應(yīng)的中斷處理函數(shù).在CCS中,需要編寫一 個sm文件二定義所有的中斷向址。 gplimel ._c_intO sect -.vecton* RSVECT B c iulO ;Re%e( Veclor IXTl B PHANTOM :Iuferrupf Lvl 1 15T2 B gptlmel :Interrupt Level 2 TXT3 B GISRA :lulrrrupt Level 5 INT4 B G1SR4 :luterrupl 3 e! 4 INT5 B G1SR5 :lutnrupl Le% el S INT6 fMae B G1SR6 :Intn upf 6 0 4.4妙

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論