




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第4章 dsp的軟件開發(fā)與設計4.4.1 1 tms320c54x軟件開發(fā)過程軟件開發(fā)過程 4.24.2 匯編語言程序的編輯、匯編和鏈接過程匯編語言程序的編輯、匯編和鏈接過程 4.34.3 coff的一般概念的一般概念 第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計tms320的開發(fā)工具是一個軟件包,其中包括的開發(fā)工具是一個軟件包,其中包括:vc優(yōu)化編譯器優(yōu)化編譯器v匯編器匯編器v連接器連接器v歸檔器歸檔器v交叉引用列表器交叉引用列表器v十六進制轉(zhuǎn)換公用程序十六進制轉(zhuǎn)換公用程序第4章 dsp的軟件開發(fā)與設計c優(yōu)化編譯器(優(yōu)化編譯器(c compile) ti 為其為其tms320
2、系列系列 dsp提供了一系列的提供了一系列的 c 編譯器。將標準編譯器。將標準 c 源文件編譯成為相應片源文件編譯成為相應片種的匯編語言源代碼文件。種的匯編語言源代碼文件。完全符合完全符合ansi c標準標準帶有一個完整的運行支持庫帶有一個完整的運行支持庫使用多種先進技術(shù)來優(yōu)化使用多種先進技術(shù)來優(yōu)化 c 源代碼,以產(chǎn)源代碼,以產(chǎn)生高效匯編代碼。生高效匯編代碼。第4章 dsp的軟件開發(fā)與設計匯編器(匯編器(assembler) 將匯編語言的源程序文件匯編成為機器將匯編語言的源程序文件匯編成為機器語言的目標程序文件,其格式為語言的目標程序文件,其格式為coff(公用目標文件格式)。匯編語言源程序(
3、公用目標文件格式)。匯編語言源程序可以包括匯編語言指令(可以包括匯編語言指令(instruction)、)、匯編偽指令(匯編偽指令(assembler directives)和)和宏指令(宏指令(macro directives)第4章 dsp的軟件開發(fā)與設計連接器(連接器(linker) 連接器的基本任務是將目標文件連接在連接器的基本任務是將目標文件連接在一起,產(chǎn)生可執(zhí)行模塊。連接器可以接受一起,產(chǎn)生可執(zhí)行模塊。連接器可以接受的輸入文件包括匯編器產(chǎn)生的的輸入文件包括匯編器產(chǎn)生的coff目標目標文件、命令文件、庫文件、以及已部分連文件、命令文件、庫文件、以及已部分連接好了的文件。它所產(chǎn)生的可執(zhí)
4、行接好了的文件。它所產(chǎn)生的可執(zhí)行coff目標模塊可以裝入各種開發(fā)工具目標模塊可以裝入各種開發(fā)工具,或由或由tms320器件來執(zhí)行器件來執(zhí)行第4章 dsp的軟件開發(fā)與設計歸檔器(歸檔器(archiver) 歸檔器允許用戶將一組文件歸入一個檔歸檔器允許用戶將一組文件歸入一個檔案文件(庫)。例如,將若干個宏歸入一案文件(庫)。例如,將若干個宏歸入一個宏庫,匯編器將搜索這個庫,并調(diào)用源個宏庫,匯編器將搜索這個庫,并調(diào)用源文件中使用的宏。也可以用歸檔器將一組文件中使用的宏。也可以用歸檔器將一組目標文件收入一個目標文件庫,連接器將目標文件收入一個目標文件庫,連接器將連接庫內(nèi)的成員,并解決外部引用連接庫內(nèi)的
5、成員,并解決外部引用第4章 dsp的軟件開發(fā)與設計交叉引用列表器(交叉引用列表器(cross-reference lister) 交叉引用列表器是一個查錯的工具。它交叉引用列表器是一個查錯的工具。它接受已經(jīng)連接好的目標文件作為輸入,產(chǎn)接受已經(jīng)連接好的目標文件作為輸入,產(chǎn)生一個交叉引用列表作為輸出。它列出符生一個交叉引用列表作為輸出。它列出符號、符號的定義、以及它們在已經(jīng)連接的號、符號的定義、以及它們在已經(jīng)連接的源文件中的引用源文件中的引用第4章 dsp的軟件開發(fā)與設計十六進制轉(zhuǎn)換公用程序(十六進制轉(zhuǎn)換公用程序(hex conversion utility)將將coff目標文件轉(zhuǎn)換成為若干種標準
6、的文件格式:目標文件轉(zhuǎn)換成為若干種標準的文件格式:vascii-十六進制十六進制vextended tektronixvintel mcs-86vmotorola exorciser第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計 全匯編編程:全匯編編程:代碼效率高,可直接對硬件設置;代碼量較大,可讀性差。代碼效率高,可直接對硬件設置;代碼量較大,可讀性差。 全全c編程:編程:提高軟件開發(fā)速度和可讀性,方便軟件移植;代碼效率較低,硬件提高軟件開發(fā)速度和可讀性,方便軟件移植;代碼效率較低,硬件控制不方便??刂撇环奖恪?混合編程混合編程 混合編程幾種方法:混合編程幾種方法:(1)獨立編
7、寫)獨立編寫c/c+程序和匯編程序,分開編譯或匯編形成各自程序和匯編程序,分開編譯或匯編形成各自的目標模塊,再用鏈接器將的目標模塊,再用鏈接器將c/c+模塊和匯編模塊鏈接起來。模塊和匯編模塊鏈接起來。(2)在)在c/c+程序中直接內(nèi)嵌匯編語句。程序中直接內(nèi)嵌匯編語句。(3)將)將c程序編譯生成相應的匯編程序,手工修改和優(yōu)化程序編譯生成相應的匯編程序,手工修改和優(yōu)化c編譯器編譯器生成的匯編代碼。生成的匯編代碼。第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 變量和函數(shù)命名規(guī)則變量和函數(shù)命名規(guī)則 無論是變量還是函數(shù),在無論是變量還是函數(shù),在c c語言和匯編中均需要說明為全局的。語言和
8、匯編中均需要說明為全局的。在在c c語言中需要有準確的函數(shù)原型說明。語言中需要有準確的函數(shù)原型說明。 在在c c語言中保持語言中保持“自然自然”的命名,而在匯編語言中該名字需加一的命名,而在匯編語言中該名字需加一個下劃線作為前綴。個下劃線作為前綴。 例:例:c語言部分:語言部分:extern int product(int *x, int *y);extern int i;匯編部分:匯編部分:.global _i.global _product第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 c c程序訪問由程序訪問由.bss.bss定義的匯編變量:定義的
9、匯編變量: (1 1)匯編程序中,該變量名前要加下劃線)匯編程序中,該變量名前要加下劃線“_”_”;(2 2)匯編程序中,用)匯編程序中,用.global.global命令將其定義為全局變量;命令將其定義為全局變量;(3 3)在)在c c程序中,將變量說明為外部變量程序中,將變量說明為外部變量c語言部分:語言部分:extern int var;var=1;匯編部分:匯編部分:.bss _var, 1.global _var第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 c c程序訪問不在程序訪問不在.bss.bss中定義的匯編常量表:中定義的匯編常量表:
10、 (1 1)匯編程序中,匯編程序中,在該常量表前加一標號(標號前要加在該常量表前加一標號(標號前要加“_”_”););(2 2)匯編程序中,匯編程序中,將該標號定義為全局標號;將該標號定義為全局標號;(3 3)在)在c c程序中,以程序中,以externextern的形式對該標號聲明,并利用指針訪的形式對該標號聲明,并利用指針訪 問該常量表。問該常量表。c語言部分:語言部分:extern int var;int *p=var;f=p1匯編部分:匯編部分:.global _var_var: .word 10 .word 20第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 變量訪問規(guī)
11、則變量訪問規(guī)則 c c程序訪問用程序訪問用.set.set定義的匯編時間常數(shù):定義的匯編時間常數(shù): (1 1)匯編程序中,匯編程序中,在該常數(shù)名前在該常數(shù)名前 “ “_”_”;(2 2)匯編程序中,匯編程序中,將該常數(shù)名定義為全局符號;將該常數(shù)名定義為全局符號;(3 3)在)在c c程序中,以程序中,以externextern的形式對該符號聲明,并用取地址運的形式對該符號聲明,并用取地址運 算符算符“&”&”取該常量參與運算取該常量參與運算c語言部分:語言部分:extern int shift;#define ad (int)(&shift);x=ad;匯編部分:匯編部
12、分:_shift .set 3.global _shift第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 變量訪問規(guī)則變量訪問規(guī)則 匯編程序訪問用匯編程序訪問用c c程序中的變量或數(shù)組:程序中的變量或數(shù)組: (1 1)在)在匯編程序匯編程序和和c c程序中,都將該變量或數(shù)組定義成外部屬性。程序中,都將該變量或數(shù)組定義成外部屬性。(2 2)在匯編中定義該變量或數(shù)組時需在前加)在匯編中定義該變量或數(shù)組時需在前加“_”_”;c語言部分:語言部分:int speech_in160, speech_out160;main()匯編部分:匯編部分:.global _speech_in.glob
13、al _speech_outld #_speech_in, b stlm b, ar2ld #_speech_out, astlm a, ar3ld #159, astlm a, brcnopnoprptb nextmvdd *ar2+, *ar3+next: 第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 程序調(diào)用規(guī)則程序調(diào)用規(guī)則 寄存器使用說明寄存器使用說明: (1)輔助寄存器)輔助寄存器ar1、ar6、ar7由被調(diào)用函數(shù)保護,即可以在函數(shù)執(zhí)行過程由被調(diào)用函數(shù)保護,即可以在函數(shù)執(zhí)行過程中修改,但在函數(shù)返回時必須恢復。中修改,但在函數(shù)返回時必須恢復。ar0、ar2、ar3、ar
14、4、ar5可以自由可以自由使用,即在函數(shù)執(zhí)行過程中可以修改,而且不必恢復。使用,即在函數(shù)執(zhí)行過程中可以修改,而且不必恢復。(2)堆棧指針)堆棧指針sp在函數(shù)調(diào)用時必須予以保護,但其是自動保護的,即在返回在函數(shù)調(diào)用時必須予以保護,但其是自動保護的,即在返回時,壓入椎棧的內(nèi)容都將被全部彈出。時,壓入椎棧的內(nèi)容都將被全部彈出。(3)arp在函數(shù)進入和返回時,必須為在函數(shù)進入和返回時,必須為0,即當前輔助寄存器為,即當前輔助寄存器為ar0。函數(shù)執(zhí)。函數(shù)執(zhí)行時可以是其它值。行時可以是其它值。(4)在缺省的情況下,編譯器總是認為)在缺省的情況下,編譯器總是認為ovm為為0。因此,若在匯編程序中將。因此,若
15、在匯編程序中將ovm置為置為1,則在返回,則在返回c環(huán)境時,必須將其恢復為環(huán)境時,必須將其恢復為0。(5)其它狀態(tài)位和寄存器在子程序中可以任意使用,不必恢復。)其它狀態(tài)位和寄存器在子程序中可以任意使用,不必恢復。第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 程序調(diào)用規(guī)則程序調(diào)用規(guī)則 參數(shù)傳遞說明參數(shù)傳遞說明: (1)函數(shù)調(diào)用前,將參數(shù)以逆序壓入運行堆棧,即最右邊的參數(shù))函數(shù)調(diào)用前,將參數(shù)以逆序壓入運行堆棧,即最右邊的參數(shù)最先入棧,然后自右向左將參數(shù)依次入棧,最后是返回地址入棧。最先入棧,然后自右向左將參數(shù)依次入棧,最后是返回地址入棧。第一個參數(shù)(最左邊)放入累加器第一個參數(shù)(最
16、左邊)放入累加器a中進行傳遞。中進行傳遞。(2)函數(shù)調(diào)用結(jié)束后,將返回值置于累加器)函數(shù)調(diào)用結(jié)束后,將返回值置于累加器a中。中。編程實例編程實例以以32位乘法運算為例。雖然用位乘法運算為例。雖然用c/c+語言表達乘法運算較為方便和明了,語言表達乘法運算較為方便和明了,但由于但由于c/c+語言無法很好利用語言無法很好利用dsp匯編語言為實現(xiàn)各種乘法運算而提匯編語言為實現(xiàn)各種乘法運算而提供的指令,使得供的指令,使得c/c+程序效率低下。所以這里用匯編語言完成乘法運程序效率低下。所以這里用匯編語言完成乘法運算,再用算,再用c/c+程序調(diào)用它。程序調(diào)用它。第4章 dsp的軟件開發(fā)與設計編程實例(續(xù))編
17、程實例(續(xù))c語言主程序語言主程序#include #include int main() extern int *mpy32 (long x, long y); /定義函數(shù)原型,返回指針值定義函數(shù)原型,返回指針值 int w4; /定義存放相乘結(jié)果的數(shù)組定義存放相乘結(jié)果的數(shù)組 int *p; int i; p=mpy32(0 x11112222, 0 x33334444); /函數(shù)調(diào)用函數(shù)調(diào)用/該指針指向數(shù)據(jù)存儲器中,存放相乘結(jié)果單元的首地址該指針指向數(shù)據(jù)存儲器中,存放相乘結(jié)果單元的首地址for(i=0; i16,低,低16位相乘的進位位相乘的進位macsu *ar2-, *ar3+,a /
18、a+=y1*x0macsu *ar3-, *ar2, a /a+=x1*y0w0w1w2w3y0y1x0 x1ar2ar3ar4第4章 dsp的軟件開發(fā)與設計編程實例(續(xù))匯編程序編程實例(續(xù))匯編程序stl a, *ar4- /w1=ald a, -16,a /a=a16mac *ar2, *ar3,a /a+=x1*y1stl a, *ar4- /w2賦值賦值sth a, *ar4 /w3賦值賦值ld #w3,a /w3單元地址作為返回值,傳遞到單元地址作為返回值,傳遞到aret第4章 dsp的軟件開發(fā)與設計 混合編程說明:混合編程說明: 匯編語句嵌入規(guī)則匯編語句嵌入規(guī)則 在在c程序中直接
19、內(nèi)嵌匯編語句。此種方法可以在程序中直接內(nèi)嵌匯編語句。此種方法可以在c程序中實現(xiàn)程序中實現(xiàn)c語言無法實現(xiàn)的一些硬件控制功能,語言無法實現(xiàn)的一些硬件控制功能, 如修改寄存器值,或在編譯如修改寄存器值,或在編譯結(jié)果中添加注釋等。嵌入?yún)R編語句的方法比較簡單,只需在匯編語結(jié)果中添加注釋等。嵌入?yún)R編語句的方法比較簡單,只需在匯編語句的兩邊加上括號和雙引號,并且在括號前加上句的兩邊加上括號和雙引號,并且在括號前加上asm標識符即可,標識符即可,即即asm(“ 匯編語句匯編語句”)。但需注意以下幾點:。但需注意以下幾點:(1)括號中的匯編語句必須以標號、空格、)括號中的匯編語句必須以標號、空格、tab 、分號
20、開頭,這和通、分號開頭,這和通常的匯編編程的語法一樣。常的匯編編程的語法一樣。(2)不要在嵌入的匯編語句中使用修飾性匯編代碼)不要在嵌入的匯編語句中使用修飾性匯編代碼.text、.data等。等。(3)插入跳轉(zhuǎn)語句和標號會產(chǎn)生不可預測的結(jié)果。)插入跳轉(zhuǎn)語句和標號會產(chǎn)生不可預測的結(jié)果。(4)匯編語句不要改變)匯編語句不要改變c程序中變量的值。程序中變量的值。asm(“ssbx xf”)asm(“*this is an assembly language comment”)練習:練習:用用c實現(xiàn)循環(huán)延時,用嵌入式匯編語句對實現(xiàn)循環(huán)延時,用嵌入式匯編語句對xf引腳置高低電平,實現(xiàn)方波發(fā)生器。引腳置高
21、低電平,實現(xiàn)方波發(fā)生器。第4章 dsp的軟件開發(fā)與設計.asm源文件源文件.obj目標文件目標文件.out輸出文件輸出文件. cmd鏈接命鏈接命令文件令文件. lst列表文件列表文件. map存儲器存儲器映像文件映像文件- - o- - m- - l第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計常用的匯編命令:常用的匯編命令: asm500 %1 s l x 第4章 dsp的軟件開發(fā)與設計常用的匯編器命令:常用的匯編器命令: lnk500 %1.cmd lnk500:lnk500: %1.cmd:%1.cmd: 鏈接命令文件名,該文件須鏈接命令文件名,該文件須指明指明目標文件、目
22、標文件、輸入文件、輸出文件、輸入文件、輸出文件、鏈接選項和存儲器配置要求等。鏈接選項和存儲器配置要求等。 第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計目標文件目標文件目標存儲器目標存儲器.bss.data.textrame2promrom第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的
23、軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計共計共計5 5個字個字第4章 dsp的軟件開發(fā)與設計共計共計5 5個字個字第4章 dsp的軟件開發(fā)與設計源程序源程序的行號的行號 段程序段程序計數(shù)器計數(shù)器目標目標代碼代碼匯編語言匯編語言源程序源程序第4章 dsp的軟件開發(fā)與設計源程序源程序的行號的行號 段程序段程序計數(shù)器計數(shù)器目標目標代碼代碼匯編語言匯編語言源程序源程序第4章 dsp的軟件開發(fā)與設計源程序源程序的行號的行號 段程序段程序計數(shù)器計數(shù)器目標目標代碼代碼匯編語言匯編語言源
24、程序源程序第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計 0,1 15 0 0 0 a a 15 0 0 0 b b2 0 c c c 3,4 e e e e f f f f 5 d d d d 6,7h 0 0 6 8 e 0 0 6 58,9l 0 0 6 c p 0 0 7 0第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計1 0 11 0 10 0 1 0 0 10 0 1 0 0 11 0 0 0 01 0 0 0 00 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 00123h0 0 0 0 0 0
25、0 1 0 0 1 0 0 0 1 10 0 0 0 0 0 0 1 0 0 1 0 0 0 1 14h0 1 0 00 1 0 00 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 00 0 0 1 0 0 1 0 0 0 1 1 0 1 0 00 0 0 1 0 0 1 0 0 0 1 1 0 1 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計 第4章 dsp的軟件開發(fā)與設計第4章 dsp的軟件開發(fā)與設計兩個輸入文件兩個輸入文件一個輸出文件一個輸出文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會展產(chǎn)品合同范本
- 出口種子銷售合同范本
- 轉(zhuǎn)賣音響合同范本
- 勞務外包合同范例
- 中介委托租房電子合同范本
- 凱倫股合同范本
- 養(yǎng)牛合伙合同范本
- 北海吊車出租合同范本
- 公司中途入股合同范本
- 產(chǎn)品服務合同范例
- Unit1RelationshipsLesson2HowDoWeLikeTeachers'Feedback課件高中英語北師大版選擇性
- 加油站加油合同范本
- 庫存管理規(guī)劃
- 河南省南陽市2024-2025學年七年級上學期期末模擬英語試題(含答案)
- 煤礦員工安全培訓教材一通三防篇
- 表演課程教案完整版
- 2024年新疆區(qū)公務員錄用考試《行測》試題及答案解析
- 灌籃高手培訓課件
- 小學生心理健康講座5
- 貴州省房屋建筑和市政工程標準監(jiān)理電子招標文件(2023年版)
- DB14-T 2736-2023 池塘養(yǎng)殖尾水處理規(guī)范
評論
0/150
提交評論