![TMS320C54x軟件開(kāi)發(fā)課件_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/8cfbfbce-a9bd-4ddf-a84e-d088951f8337/8cfbfbce-a9bd-4ddf-a84e-d088951f83371.gif)
![TMS320C54x軟件開(kāi)發(fā)課件_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/8cfbfbce-a9bd-4ddf-a84e-d088951f8337/8cfbfbce-a9bd-4ddf-a84e-d088951f83372.gif)
![TMS320C54x軟件開(kāi)發(fā)課件_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/8cfbfbce-a9bd-4ddf-a84e-d088951f8337/8cfbfbce-a9bd-4ddf-a84e-d088951f83373.gif)
![TMS320C54x軟件開(kāi)發(fā)課件_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/8cfbfbce-a9bd-4ddf-a84e-d088951f8337/8cfbfbce-a9bd-4ddf-a84e-d088951f83374.gif)
![TMS320C54x軟件開(kāi)發(fā)課件_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/8cfbfbce-a9bd-4ddf-a84e-d088951f8337/8cfbfbce-a9bd-4ddf-a84e-d088951f83375.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第4章章 TMS320C54x軟件開(kāi)發(fā)軟件開(kāi)發(fā)n4.1 軟件開(kāi)發(fā)過(guò)程及開(kāi)發(fā)工具軟件開(kāi)發(fā)過(guò)程及開(kāi)發(fā)工具n4.2 公共目標(biāo)文件公共目標(biāo)文件COFF的一般概念的一般概念n4.3 常用匯編偽指令常用匯編偽指令n4.4 鏈接器命令文件的編寫(xiě)與使用鏈接器命令文件的編寫(xiě)與使用n4.5 匯編語(yǔ)言程序編寫(xiě)方法匯編語(yǔ)言程序編寫(xiě)方法4.1 軟件開(kāi)發(fā)過(guò)程及開(kāi)發(fā)工具軟件開(kāi)發(fā)過(guò)程及開(kāi)發(fā)工具1建立源程序建立源程序2C編譯器(編譯器(C Compiler)3匯編器(匯編器(Assembler)4連接器(連接器(Linker)5調(diào)試工具調(diào)試工具6十六進(jìn)制轉(zhuǎn)換公用程序(十六進(jìn)制轉(zhuǎn)換公用程序(Hex Conversion Uti
2、lity) 返回首頁(yè)返回首頁(yè)文本.asm編譯.obj鏈接器.out可執(zhí)行程序-o-l*.lst-m*.map*.obj圖圖4-1 TMS320C54x DSP軟件開(kāi)發(fā)流程軟件開(kāi)發(fā)流程n段(段(sections)是是COFF文件中最重要的概念。文件中最重要的概念。一個(gè)段就是最終在存儲(chǔ)器映象中占據(jù)連續(xù)空間的一個(gè)段就是最終在存儲(chǔ)器映象中占據(jù)連續(xù)空間的一個(gè)數(shù)據(jù)或代碼塊。目標(biāo)文件中的每一個(gè)段都是一個(gè)數(shù)據(jù)或代碼塊。目標(biāo)文件中的每一個(gè)段都是相互獨(dú)立的。一般地,相互獨(dú)立的。一般地,COFF目標(biāo)文件包含目標(biāo)文件包含3個(gè)缺個(gè)缺省的段:省的段:text段、段、data段、段、bss段。段。n段可以分為已初始化段和未
3、初始化段。如圖段可以分為已初始化段和未初始化段。如圖5-2所所示為目標(biāo)文件中的段與目標(biāo)系統(tǒng)中存儲(chǔ)器的關(guān)系。示為目標(biāo)文件中的段與目標(biāo)系統(tǒng)中存儲(chǔ)器的關(guān)系。4.2 公共目標(biāo)文件公共目標(biāo)文件COFF的一般概念的一般概念圖圖4-2 目標(biāo)文件中的段與目標(biāo)存儲(chǔ)器的關(guān)系目標(biāo)文件中的段與目標(biāo)存儲(chǔ)器的關(guān)系返回本節(jié)段定義偽指令段定義偽指令 為便于鏈接器將程序、數(shù)據(jù)分段定位于指定的(物理存在的)為便于鏈接器將程序、數(shù)據(jù)分段定位于指定的(物理存在的)存儲(chǔ)器空間,并將不同的存儲(chǔ)器空間,并將不同的obj文件鏈接起來(lái)。段的使用非常靈活,但文件鏈接起來(lái)。段的使用非常靈活,但常用以下約定:常用以下約定:n未初始化段未初始化段.b
4、ss 此段存入未初始化的變量。此段存入未初始化的變量。.usect 未初始化,有命名,未初始化,有命名, 為變量保留空間為變量保留空間n初始化段初始化段.data 此段存放初始化了的數(shù)據(jù)。此段存放初始化了的數(shù)據(jù)。.text 此段存放程序代碼。此段存放程序代碼。.sect 名稱(chēng)名稱(chēng) 定義一個(gè)有名段,放初始化了的數(shù)據(jù)或程序代碼。定義一個(gè)有名段,放初始化了的數(shù)據(jù)或程序代碼。1. 未初始化段未初始化段(1) .bss 符號(hào)符號(hào), 字?jǐn)?shù)字?jǐn)?shù) (2) .usect “段名段名”,字?jǐn)?shù),字?jǐn)?shù)2. 已初始化段已初始化段(1) .text 段起點(diǎn)段起點(diǎn) 此段存放程序代碼。此段存放程序代碼。(2) .data 段
5、起點(diǎn)段起點(diǎn) 此段存放初始化了的數(shù)據(jù)。此段存放初始化了的數(shù)據(jù)。(3) .sect “段名段名” ,段起點(diǎn)段起點(diǎn) 定義一個(gè)有名段,放初始化了的數(shù)據(jù)或定義一個(gè)有名段,放初始化了的數(shù)據(jù)或程序代碼。程序代碼。段命令應(yīng)用舉例段命令應(yīng)用舉例 源代碼如下:源代碼如下:2 .data3 coeff .word 044h, 055h, 088h4 .bss buffer, 8 5 prt .word 0456h6 .text7 add: LD 0Dh, A8 aloop: SUB #1 , A 9 BC aloop, AGEQ10 .data11 ivals .word 0cch,0ddh,0eeh12 var2
6、 .usect “newvars”, 2 13 inbuf .usect “newvars”, 8 14 .text15 mpy: LD 0Ah, B16 mloop: MPY #0A, B17 BC mloop, BNOV18 .sect “vectors”19 .word 044h, 088h .text100df0100001f8420001110af166000af8680006.data004400550088045600cc00dd00ee.vectors00440088.bss保留8個(gè)字.newvars保留10個(gè)字解釋?zhuān)罕纠步忉專(zhuān)罕纠?個(gè)段個(gè)段.text:含有含有7個(gè)字的代碼
7、個(gè)字的代碼.data:7個(gè)字的數(shù)據(jù)個(gè)字的數(shù)據(jù).vectors:已初始化命名段:已初始化命名段 有有2個(gè)字已知數(shù)據(jù)個(gè)字已知數(shù)據(jù).bss和和.newvars:未初始化:未初始化命名段,留有命名段,留有8個(gè)字和個(gè)字和10個(gè)字的空間個(gè)字的空間 段命令應(yīng)用舉例段命令應(yīng)用舉例2 0000 .data3 0000 0044 coeff .word 044h,055h,088h 0001 0055 0002 00884 0000 .bss buffer, 8 5 0003 0456 prt .word 0456h6 0000 .text7 0000 100d add: LD 0Dh, A8 0001 f010
8、 aloop: SUB #1 , A 0002 00019 0003 f842 BC aloop, AGEQ 0004 000110 0004 .data11 0004 00cc ivals .word 0cch,0ddh,0eeh 0001 00dd 0002 00ee12 0000 var2 .usect “newvars”, 2 13 0001 inbuf .usect “newvars”, 8 14 0005 .text15 0005 110a mpy: LD 0Ah, B16 0006 f010 mloop: MPY #0A, B 0007 000a17 0008 f868 BC m
9、loop, BNOV 0009 000618 0000 .sect “vectors”19 0000 0044 .word 044h, 088h 0001 0088 段程序計(jì)數(shù)器(段程序計(jì)數(shù)器(SPC)n匯編器為每個(gè)段安排一個(gè)獨(dú)立的程序計(jì)數(shù)器,即匯編器為每個(gè)段安排一個(gè)獨(dú)立的程序計(jì)數(shù)器,即段程序計(jì)數(shù)器(段程序計(jì)數(shù)器(SPC)。)。SPC表示一個(gè)程序代碼表示一個(gè)程序代碼段或數(shù)據(jù)段內(nèi)的當(dāng)前地址。開(kāi)始時(shí),匯編器將每段或數(shù)據(jù)段內(nèi)的當(dāng)前地址。開(kāi)始時(shí),匯編器將每個(gè)個(gè)SPC置置0,當(dāng)匯編器將程序代碼或數(shù)據(jù)加到一,當(dāng)匯編器將程序代碼或數(shù)據(jù)加到一個(gè)段內(nèi)時(shí),相應(yīng)的個(gè)段內(nèi)時(shí),相應(yīng)的SPC增加。如果匯編器再次遇增加。如
10、果匯編器再次遇到相同段名的段,繼續(xù)匯編至相應(yīng)的段,且相應(yīng)到相同段名的段,繼續(xù)匯編至相應(yīng)的段,且相應(yīng)的的SPC在先前的基礎(chǔ)上繼續(xù)增加。在先前的基礎(chǔ)上繼續(xù)增加。n鏈接器對(duì)段的處理有兩個(gè)功能。首先,它將匯編鏈接器對(duì)段的處理有兩個(gè)功能。首先,它將匯編器產(chǎn)生的器產(chǎn)生的COFF目標(biāo)文件(目標(biāo)文件(.obj文件)中的各種段文件)中的各種段作為輸入段,當(dāng)有多個(gè)文件進(jìn)行鏈接時(shí),它將輸作為輸入段,當(dāng)有多個(gè)文件進(jìn)行鏈接時(shí),它將輸入段組合起來(lái),在可執(zhí)行的入段組合起來(lái),在可執(zhí)行的COFF輸出模塊中建輸出模塊中建立各個(gè)輸出段。其次,鏈接器為輸出段選擇存儲(chǔ)立各個(gè)輸出段。其次,鏈接器為輸出段選擇存儲(chǔ)器地址。器地址。圖圖4-4
11、 鏈接器默認(rèn)的存儲(chǔ)器分配鏈接器默認(rèn)的存儲(chǔ)器分配返回本節(jié)4.3 常用匯編偽指令常用匯編偽指令返回首頁(yè)匯編命令匯編命令作用作用舉例舉例.title緊跟其后用緊跟其后用“”“”括起的源程序名括起的源程序名.title “example.asm”.mmregs將存儲(chǔ)器映像寄存器加入到符號(hào)表將存儲(chǔ)器映像寄存器加入到符號(hào)表即加上即加上.mmregs,在指令中才可以用,在指令中才可以用MMR.end結(jié)束匯編命令結(jié)束匯編命令放在匯編源程序的最后放在匯編源程序的最后.text緊跟其后的是匯編語(yǔ)言程序正文緊跟其后的是匯編語(yǔ)言程序正文.data緊跟其后的是已初始化的數(shù)據(jù)緊跟其后的是已初始化的數(shù)據(jù).int (.wor
12、d).space 設(shè)置一個(gè)或多個(gè)設(shè)置一個(gè)或多個(gè)16位無(wú)符號(hào)(有符號(hào))整型常數(shù)位無(wú)符號(hào)(有符號(hào))整型常數(shù)用標(biāo)號(hào)指出保留一段空間用標(biāo)號(hào)指出保留一段空間table: .int 20,-20SINT17: .space 4*16.bss未初始化變量保留空間未初始化變量保留空間.bss x,4.sect已初始化命名段已初始化命名段.sect “vectors”.usect未初始化命名段未初始化命名段stack .usect “stack” ,10h.def .ref.def說(shuō)明符號(hào)在其它的文件中可以引用說(shuō)明符號(hào)在其它的文件中可以引用.ref說(shuō)明符號(hào)在其它文件中定義,在本文件中引用說(shuō)明符號(hào)在其它文件中定義
13、,在本文件中引用.global可以替代上面的可以替代上面的.def或者或者.ref.set .asg使一個(gè)值與一個(gè)符號(hào)相等使一個(gè)值與一個(gè)符號(hào)相等將一個(gè)字符賦值給字符串將一個(gè)字符賦值給字符串Period .set 99 .asg AR1, Counter.align邊界對(duì)其邊界對(duì)其.align 0X80 .macro .endm宏指令宏指令宏定義和宏調(diào)用宏定義和宏調(diào)用nTMS320C54x匯編支持宏語(yǔ)言。如果程序中需要多次執(zhí)匯編支持宏語(yǔ)言。如果程序中需要多次執(zhí)行某段程序,可以把這段程序定義(宏定義)為一個(gè)宏,行某段程序,可以把這段程序定義(宏定義)為一個(gè)宏,然后在需要重復(fù)執(zhí)行這段程序的地方調(diào)用這
14、條宏。然后在需要重復(fù)執(zhí)行這段程序的地方調(diào)用這條宏。n宏定義如下:宏定義如下:Macname .macroparameter 1,parameter n .mexit .endm 返回本節(jié)宏定義例子:宏定義例子:Add3 .macro P1,P2,P3,ADDRPLD *(P1),AADD *(P2), AADD *(P3), ASTL A,*(ADDRP)宏調(diào)用例子宏調(diào)用例子 : .bss y,1 .bss a1,1 .bss a2,1 .bss a3,1Add3 a1,a2,a3,y返回本節(jié)4.4 鏈接器命令文件的編寫(xiě)與使用鏈接器命令文件的編寫(xiě)與使用n4.4.1 MEMORY偽指令及其使用偽
15、指令及其使用n4.4.2 SECTIONS偽指令及其使用偽指令及其使用 鏈接器的主要作用是根據(jù)鏈接命令或者命令文件(鏈接器的主要作用是根據(jù)鏈接命令或者命令文件(*.cmd),),將一個(gè)或者多個(gè)將一個(gè)或者多個(gè)COFF文件鏈接起來(lái),生成文件鏈接起來(lái),生成MAP文件(存文件(存儲(chǔ)器映射文件)和儲(chǔ)器映射文件)和out(輸出)文件(輸出)文件MEMORY: 對(duì)存儲(chǔ)器進(jìn)行分配對(duì)存儲(chǔ)器進(jìn)行分配SECTIONS :對(duì)各段在存儲(chǔ)器的位置進(jìn)行分配:對(duì)各段在存儲(chǔ)器的位置進(jìn)行分配返回首頁(yè)n鏈接器有兩個(gè)命令完成上述功能,即:鏈接器有兩個(gè)命令完成上述功能,即:nMEMORY 命令命令定義目標(biāo)系統(tǒng)的存儲(chǔ)器配置定義目標(biāo)系統(tǒng)的
16、存儲(chǔ)器配置圖,包括對(duì)存儲(chǔ)器各部分的命名,以及規(guī)定它們圖,包括對(duì)存儲(chǔ)器各部分的命名,以及規(guī)定它們的起始地址和長(zhǎng)度。的起始地址和長(zhǎng)度。nSECTIONS命令命令告訴鏈接器如何將輸入段組告訴鏈接器如何將輸入段組合成輸出段,以及在存儲(chǔ)器何處存放輸出段。子合成輸出段,以及在存儲(chǔ)器何處存放輸出段。子段可以用來(lái)更精確地編排段,可用鏈接器段可以用來(lái)更精確地編排段,可用鏈接器SECTIONS命令指定子段。命令指定子段。 4.4.1 MEMORY偽指令及其使用偽指令及其使用nMEMORY偽指令就是用來(lái)指定目標(biāo)存儲(chǔ)器的模型。偽指令就是用來(lái)指定目標(biāo)存儲(chǔ)器的模型。MEMORY偽指令的一般語(yǔ)法為:偽指令的一般語(yǔ)法為:ME
17、MORY PAGE0: name1(attr): orign=constant, length=constant; PAGE1: name2(attr): orign=constant, length=constant;例:例:MEMORY PAGE0: ROM: orign=c00h, length=1000h; PAGE1: SCRATCH: orign=60h, length=20h; ONCHIP : orign=80h, length=200h;返回本節(jié)4.4.2 SECTIONS偽指令及其使用偽指令及其使用nSECTIONS偽指令功能如下:偽指令功能如下:n 說(shuō)明如何將輸入段組合成
18、輸出段。說(shuō)明如何將輸入段組合成輸出段。n在可執(zhí)行程序中定義輸出段。在可執(zhí)行程序中定義輸出段。n指定輸出段在存儲(chǔ)器中存放的位置。指定輸出段在存儲(chǔ)器中存放的位置。n允許對(duì)輸出段重新命名。允許對(duì)輸出段重新命名。n SECTIONS name : property ,property ,property . name : property ,property ,property . name : property ,property ,property . 圖圖4-5 例例4-6中段的定位中段的定位返回本節(jié)vectors.objexample.obj-o example.out-m example.m
19、apMEMORY PAGE0: EPROM: org=0090H, length=0F70H; VECS: org=0080H, length=0010H; /程序段程序段 PAGE0: SPRAM: org=1000H, length=1000H; DARAM: org=2000H, length=2000H; /數(shù)據(jù)段數(shù)據(jù)段SECTION .text : EPROM PAGE0 .data : EPROM PAGE0 .bss : SPRAM PAGE1 STACK : DARAM PAGE1 .vectors : VECS PAGE0返回本節(jié)4.5 匯編語(yǔ)言程序編寫(xiě)方法匯編語(yǔ)言程序編寫(xiě)方
20、法n4.5.1 匯編語(yǔ)言源程序格式匯編語(yǔ)言源程序格式n4.5.2 匯編語(yǔ)言中的常數(shù)和字符串匯編語(yǔ)言中的常數(shù)和字符串n4.5.3 匯編源程序中的符號(hào)匯編源程序中的符號(hào)n4.5.4 匯編源程序中的表達(dá)式匯編源程序中的表達(dá)式 返回首頁(yè)4.5.1 匯編語(yǔ)言源程序格式匯編語(yǔ)言源程序格式n助記符指令一般包含助記符指令一般包含4個(gè)部分,其一般組成形式個(gè)部分,其一般組成形式為:為:n標(biāo)號(hào)標(biāo)號(hào): 助記符助記符 操作數(shù)操作數(shù) ;注釋?zhuān)蛔⑨?標(biāo)號(hào)區(qū)標(biāo)號(hào)區(qū)n所有匯編指令和大多數(shù)匯編偽指令前面都可以帶所有匯編指令和大多數(shù)匯編偽指令前面都可以帶有標(biāo)號(hào),標(biāo)號(hào)可以長(zhǎng)達(dá)有標(biāo)號(hào),標(biāo)號(hào)可以長(zhǎng)達(dá)32個(gè)字符,由個(gè)字符,由AZ、az、0
21、9、_、和和$符號(hào)組成,符號(hào)組成,且第一個(gè)字符不能是數(shù)且第一個(gè)字符不能是數(shù)字,區(qū)分大小寫(xiě)字,區(qū)分大小寫(xiě)。 2助記符區(qū)助記符區(qū)n助記符區(qū)不能從第一列開(kāi)始,否則被認(rèn)為是標(biāo)號(hào)。助記符區(qū)不能從第一列開(kāi)始,否則被認(rèn)為是標(biāo)號(hào)。3操作數(shù)區(qū)操作數(shù)區(qū)n操作數(shù)區(qū)是一個(gè)操作數(shù)列表,可以是常數(shù)、符號(hào)或常數(shù)與操作數(shù)區(qū)是一個(gè)操作數(shù)列表,可以是常數(shù)、符號(hào)或常數(shù)與符號(hào)構(gòu)成的表達(dá)式。操作數(shù)間需用符號(hào)構(gòu)成的表達(dá)式。操作數(shù)間需用“,”號(hào)隔開(kāi)。號(hào)隔開(kāi)。4注釋區(qū)注釋區(qū)n注釋區(qū)可以從任何一列開(kāi)始,可以包含注釋區(qū)可以從任何一列開(kāi)始,可以包含ASCII字符和空格。字符和空格。 返回本節(jié)4.5.2 匯編語(yǔ)言中的常數(shù)和字符串匯編語(yǔ)言中的常數(shù)和字符串表5-3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 舞臺(tái)設(shè)備運(yùn)輸外包合同范本
- 2025年度辦公室租賃及企業(yè)市場(chǎng)推廣服務(wù)合同
- 2025年度互聯(lián)網(wǎng)公司辦公室租賃簡(jiǎn)明合同
- 工程建筑工程技術(shù)員聘用合同
- 勞務(wù)合作合同年
- 農(nóng)業(yè)產(chǎn)業(yè)鏈質(zhì)量監(jiān)督與管理指南
- 打井降水施工合同
- 食品進(jìn)口與出口檢驗(yàn)作業(yè)指導(dǎo)書(shū)
- 深圳股權(quán)轉(zhuǎn)讓合同協(xié)議書(shū)
- 建設(shè)工程施工勞務(wù)分包合同協(xié)議書(shū)
- 公司員工外派協(xié)議書(shū)范文
- 信息科技重大版 七年級(jí)上冊(cè) 互聯(lián)網(wǎng)應(yīng)用與創(chuàng)新 第二單元教學(xué)設(shè)計(jì) 互聯(lián)網(wǎng)原理
- 肺栓塞的護(hù)理查房完整版
- 手術(shù)患者手術(shù)部位標(biāo)識(shí)制度
- 運(yùn)輸安全生產(chǎn)知識(shí)培訓(xùn)試卷
- 抖音麗人行業(yè)短視頻直播項(xiàng)目運(yùn)營(yíng)策劃方案
- 精神病服藥訓(xùn)練
- (2024年)知識(shí)產(chǎn)權(quán)全套課件(完整)
- 2024-2030年中國(guó)城市軌道交通行業(yè)發(fā)展現(xiàn)狀分析及市場(chǎng)供需預(yù)測(cè)報(bào)告
- 預(yù)防靜脈血栓疾病知識(shí)講座
- 《社區(qū)康復(fù)》課件-第十一章 其他疾病的社區(qū)康復(fù)實(shí)踐
評(píng)論
0/150
提交評(píng)論