




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第6章章 C/C+語言程序設(shè)計語言程序設(shè)計6.1 C55X C/C+語言概述語言概述6.2 C55X C/C+語言編程基礎(chǔ)語言編程基礎(chǔ)6.5 C語言與匯編語言的混合編程語言與匯編語言的混合編程 6.5.1 在在C語言中直接嵌入?yún)R編語言語言中直接嵌入?yún)R編語言 6.5.2 C語言調(diào)用匯編模塊的接口語言調(diào)用匯編模塊的接口補充:補充: TI DSP軟件開發(fā)平臺軟件開發(fā)平臺l匯編語言依賴于計算機硬件,程序的可讀性和匯編語言依賴于計算機硬件,程序的可讀性和可移植性比較差。一般高級語言具有很好的可可移植性比較差。一般高級語言具有很好的可移植性,但是難以實現(xiàn)匯編語言的某些功能移植性,但是難以實現(xiàn)匯編語言的某
2、些功能(如對內(nèi)存地址的操作、位操作等)。(如對內(nèi)存地址的操作、位操作等)。lC/C+語言作為一種高級語言,既可以訪問物語言作為一種高級語言,既可以訪問物理地址又可以進行位操作,能直接對硬件進行理地址又可以進行位操作,能直接對硬件進行操作,適合用作操作,適合用作DSP開發(fā)語言。開發(fā)語言。6.1.1 C/C+語言概況語言概況6.1 C55X C/C+語言概述語言概述6.1.2 C55x C/C+語言概況語言概況lC55x C/C+編譯器全面支持編譯器全面支持ANSI C/C+語言標準,能夠把按照標準語言標準,能夠把按照標準ANSI C/C+規(guī)范編寫的源程序進行全面優(yōu)化,編譯成規(guī)范編寫的源程序進行全
3、面優(yōu)化,編譯成C55x 匯編語言源程序。匯編語言源程序。lC55x C/C+編譯器工具擁有完整的實時編譯器工具擁有完整的實時運行庫運行庫,所有的庫函數(shù)均符合所有的庫函數(shù)均符合ANSI庫標準。庫標準。C55X C/C+語言編程基礎(chǔ)語言編程基礎(chǔ)類型類型長度長度內(nèi)容內(nèi)容最小值最小值最大值最大值signed char(有符號有符號字符字符)16位位ASCII碼碼-3276832767unsigned char(無符號字符無符號字符)16位位ASCII碼碼065535short, signed short(短整型短整型)16位位二進制二進制補碼補碼-3276832767unsigned short(無無
4、符號短整型符號短整型)16位位二進制二進制數(shù)數(shù)065535類類 型型長長 度度內(nèi)內(nèi) 容容最最 小小 值值最最 大大 值值int, signed int(整型)(整型)16位位二進制二進制補碼補碼 3276832767unsigned int(無符號無符號整型)整型)16位位二進制二進制數(shù)數(shù)065535long, signed long(長(長整型)整型)32位位二進制二進制補碼補碼 2 147 483 6482 147 483 647unsigned long(無符號(無符號長整型)長整型)32位位二進制二進制數(shù)數(shù)04 249 967 295long long(40位長整型)位長整型)40位位
5、二進制二進制補碼補碼 549 755 813 888549 755 813 887unsigned long long(40位無符號長整型)位無符號長整型)40位位二進制二進制數(shù)數(shù)01 099 511 627 775emum(枚舉型)(枚舉型)16位位二進制二進制補碼補碼 3276832767float(浮點型)(浮點型)32位位32位浮位浮點數(shù)點數(shù)1.175 494e 383.40 282 346e+38類類 型型長長 度度 內(nèi)內(nèi) 容容最最 小小 值值最最 大大 值值double(雙精度浮點(雙精度浮點數(shù))數(shù))32位位32位浮位浮點數(shù)點數(shù)1.175 494e 383.40 282 346e+
6、38long double(長雙精(長雙精度浮點數(shù))度浮點數(shù))32位位32位浮位浮點數(shù)點數(shù)1.175 494e 383.40 282 346e+38大存儲器模式大存儲器模式23位位二進制二進制數(shù)數(shù)00 x7FFFFFpointers(程序指針)(程序指針)24位位二進制二進制數(shù)數(shù)00 xFFFFFF6.2.2 關(guān)鍵字關(guān)鍵字const lC55x C編譯器支持標準編譯器支持標準C語言的語言的const關(guān)鍵字。關(guān)鍵字。l將這個關(guān)鍵字使用到對任意變量或數(shù)組的定義上將這個關(guān)鍵字使用到對任意變量或數(shù)組的定義上可以確保它們的值不改變??梢源_保它們的值不改變。l如果定義一個對象為如果定義一個對象為const
7、,那么,那么const段就會為段就會為該對象分配存儲空間。使用該對象分配存儲空間。使用const關(guān)鍵字可以定義關(guān)鍵字可以定義大常數(shù)表并將它們分配到系統(tǒng)大常數(shù)表并將它們分配到系統(tǒng)ROM中。中。C55X C/C+語言編程基礎(chǔ)語言編程基礎(chǔ) 例:例:6.2.2 關(guān)鍵字關(guān)鍵字 int * const p=&x;const int *q=&x;定義指向變量定義指向變量int的常量指針的常量指針p定義指向常量定義指向常量int的變量指針的變量指針q 注意:注意:例,例,ioport關(guān)鍵字的使用。關(guān)鍵字的使用。ioport int k void foo(void)ioport int i io
8、port int *j ; /*正確正確* /; /*錯誤錯誤* /; /*正確正確* /例:定時器初始化例程例:定時器初始化例程 void TIMER_init(void) ioport unsigned int *tim0; ioport unsigned int *prd0; ioport unsigned int *tcr0; ioport unsigned int *prsc0; tim0 = (unsigned int *)0 x1000;prd0 = (unsigned int *)0 x1001;tcr0 = (unsigned int *)0 x1002;prsc0 = (u
9、nsigned int *)0 x1003; *tcr0 = 0 x04f0; *tim0 = 0; *prd0 = 0 x0ffff; *prsc0 = 2; *tcr0 = 0 x00e0; 4. c_int00是是C/C+程序的入口點,這個函數(shù)名被系統(tǒng)程序的入口點,這個函數(shù)名被系統(tǒng)復(fù)位中斷保留,該中斷服務(wù)程序用來初始化系統(tǒng)并調(diào)用復(fù)位中斷保留,該中斷服務(wù)程序用來初始化系統(tǒng)并調(diào)用main函數(shù)。函數(shù)。關(guān)于中斷的幾個要點關(guān)于中斷的幾個要點: :中斷服務(wù)程序不能中斷服務(wù)程序不能被普通被普通C C代碼調(diào)用。代碼調(diào)用。關(guān)鍵字關(guān)鍵字例:中斷服務(wù)程序例:中斷服務(wù)程序Void INTR_init( void
10、 )IVPD=0 xd0;IVPH=0 xd0;IER0=0 x10;DBIER0 =0 x10;IFR0=0 xffff;asm( BCLR INTM);interrupt void timer( ) .無參數(shù)無參數(shù)設(shè)置中斷寄存器設(shè)置中斷寄存器IER0IER0保存中斷入口的現(xiàn)場信息保存中斷入口的現(xiàn)場信息( (所用所用寄存器或全部寄存器)寄存器或全部寄存器)通過通過.sect.sect指令創(chuàng)建中指令創(chuàng)建中斷向量表。斷向量表。 .sect .vectors .ref _c_int00 .ref _timer rsv: B _c_int00 NOP .align 8nmi: .loop 8 nop
11、.endloopint0:.loop 8nop.endloopint2: B _timernop.align 8tint:B _timernop.align 8在匯編語言中,中斷程序名在匯編語言中,中斷程序名前加下劃線,如前加下劃線,如 _timer。關(guān)于中斷的幾個要點關(guān)于中斷的幾個要點:中斷處理程序可以處理單個中中斷處理程序可以處理單個中斷或多個中斷,斷或多個中斷,c_int00除外除外保存中斷入口的現(xiàn)場信息保存中斷入口的現(xiàn)場信息 ( (所用寄存器或全部寄存器)所用寄存器或全部寄存器)volatile-存儲器訪問存儲器訪問l定義格式:定義格式: register 變量類型變量類型 變量名變量
12、名l變量類型:變量類型:l整型、浮點型整型、浮點型和和指針類型指針類型register6.2.4 asm指令指令 -插入一條匯編指令插入一條匯編指令l指令格式: asm (“assembler text”);main()int i;unsigned int uWork;while ( 1 )for ( i=0;ii,i=T0 RET; 在定義匯編函數(shù)時,在函在定義匯編函數(shù)時,在函數(shù)名前加下劃線數(shù)名前加下劃線“_”. 聲明為外部函數(shù)聲明為外部函數(shù)3: 在在C代碼中訪問匯編語言變量代碼中訪問匯編語言變量l訪問訪問.bss段或段或.usect段中沒有初始化的變量:段中沒有初始化的變量:u使用使用.b
13、ss或或.usect指令來定義變量指令來定義變量u使用使用.global指令來定義為外部變量指令來定義為外部變量u在匯編語言中的變量前加下劃線在匯編語言中的變量前加下劃線“_”u在在C代碼中聲明變量為外部變量并正常地訪問它代碼中聲明變量為外部變量并正常地訪問它(b)C程序:程序:extern int var;/* 外部變量外部變量 */var = 1;/* 使用變量使用變量 */(a)匯編語言程序:)匯編語言程序: .bss var,1;定義變量定義變量 .gloabal var;聲明變量為外部變量聲明變量為外部變量l非非.bss.bss段中變量訪問段中變量訪問- -定義指向該變量的指針定義指
14、向該變量的指針u定義變量定義變量u聲明一個指向該變量起始地址的全局指針聲明一個指向該變量起始地址的全局指針u在程序中,必須先聲明該對象為在程序中,必須先聲明該對象為externextern型。型。3: 在在C代碼中訪問匯編語言變量代碼中訪問匯編語言變量(a)匯編程序:)匯編程序: .global _sine .sect ”sine_tab”_sine: .float 0.0 .float 0.015987 .float 0.022145 (b)C程序:程序:extern float sine ;float *sine_p=sine;f=sine_p2;4. 在在C語言中訪問匯編語言常數(shù)語言中訪
15、問匯編語言常數(shù)l使用使用.set和和.global指令定義匯編語言全局常數(shù)。指令定義匯編語言全局常數(shù)。l使用使用&運算符來取值。運算符來取值。(a)匯編語言程序:)匯編語言程序:_table_size .set 10000;定義常量定義常量.global _table_size ;定義該常量為全局常量定義該常量為全局常量例:例:(b)語言程序:)語言程序:extern int table_size;#define TABLE_SIZE (int)(&table_size)For(i=0;iTABLE_SIZE;+i)C和匯編語言的接口注意:和匯編語言的接口注意:例:利于混合編程
16、的方式實現(xiàn)例:利于混合編程的方式實現(xiàn)y=a+b,主程序用主程序用C實現(xiàn),子函數(shù)實現(xiàn),子函數(shù)asmf采用匯編語言采用匯編語言,已知已知a,b,y均為整數(shù)。均為整數(shù)。 主程序:主程序:Main()int a, int b;int y;a=3; b=5;y=asmf(a,b);extern int asmf(int a,int b); 匯編源程序:匯編源程序:.global _asmf.text_asmf: add T1,T0,T0 RET習(xí)題:習(xí)題: 利于混合編程的方式實現(xiàn)利于混合編程的方式實現(xiàn) 已知主程序如下,請將匯編源程序補充完整。已知主程序如下,請將匯編源程序補充完整。40iiixayMai
17、n()int anb=2,3,4,5; int xnb=1,2,3,4;int y;y=asmf(&a,&x,nb);extern long asmf(int *,int *,int); 主程序:主程序: 匯編源程序:匯編源程序:.global _asmf.text_asmf: . . RET#define nb 5;P249 作業(yè)作業(yè) 3,4,5,6, 7,9,10小結(jié):軟件開發(fā)過程第一步,分析任務(wù)需求并用高級語言寫出軟件流程。第一步,分析任務(wù)需求并用高級語言寫出軟件流程。寫流程可以采用編寫寫流程可以采用編寫“偽代碼偽代碼”的方式完成??梢郧宄囟x的方式完成。可以清楚地定義
18、信號的處理機制,并為今后程序的調(diào)試和擴展預(yù)先留好接口。在流信號的處理機制,并為今后程序的調(diào)試和擴展預(yù)先留好接口。在流程描述中,可以將每一個關(guān)鍵的處理環(huán)節(jié)用函數(shù)(或直接用語言描程描述中,可以將每一個關(guān)鍵的處理環(huán)節(jié)用函數(shù)(或直接用語言描述)來表示,確定軟件的框架。述)來表示,確定軟件的框架。第二步,根據(jù)第一步的工作寫主流程的第二步,根據(jù)第一步的工作寫主流程的C或者匯編程序?;蛘邊R編程序。整個工作過程可以充分參照例子工程做。整個工作過程可以充分參照例子工程做。第三步,細化主流程程序,按功能編寫每一個函數(shù)。第三步,細化主流程程序,按功能編寫每一個函數(shù)。第四步,完成中斷服務(wù)程序的編寫。第四步,完成中斷服
19、務(wù)程序的編寫。第五步,編寫鏈接用第五步,編寫鏈接用cmd命令文件,確定匯編程序中各命令文件,確定匯編程序中各段代碼和數(shù)據(jù)擺放的位置。段代碼和數(shù)據(jù)擺放的位置。通常情況下,程序放置在通常情況下,程序放置在SARAM內(nèi),而數(shù)據(jù)放置在內(nèi),而數(shù)據(jù)放置在DARAM 。注意程序的編制需需調(diào)程序的模塊化、常量的符號化、注意程序的編制需需調(diào)程序的模塊化、常量的符號化、變量名有意義等軟件工程的基本要素。在匯編級編程的時候,變量名有意義等軟件工程的基本要素。在匯編級編程的時候,需要做匯編語句級的優(yōu)化。需要做匯編語句級的優(yōu)化。小結(jié):軟件開發(fā)過程軟件組成:軟件組成:由代碼和數(shù)據(jù)組成由代碼和數(shù)據(jù)組成運行:運行:要運行的程
20、序其代碼和數(shù)據(jù)必須存放在要運行的程序其代碼和數(shù)據(jù)必須存放在CPU的存儲空間的存儲空間存放存放:以代碼塊和數(shù)據(jù)塊的形式存放:以代碼塊和數(shù)據(jù)塊的形式存放 代碼塊和數(shù)據(jù)塊是程序的最小單元代碼塊和數(shù)據(jù)塊是程序的最小單元 一個代碼塊或數(shù)據(jù)塊在存儲空間中連續(xù)、順序存放一個代碼塊或數(shù)據(jù)塊在存儲空間中連續(xù)、順序存放 不同的代碼塊或數(shù)據(jù)塊,可以存放于不同的存儲空間中不同的代碼塊或數(shù)據(jù)塊,可以存放于不同的存儲空間中定位:定位: 編譯時定位:編譯時定位:MCU系統(tǒng)采用編程時由系統(tǒng)采用編程時由ORG語句確定代碼塊和數(shù)據(jù)塊的語句確定代碼塊和數(shù)據(jù)塊的絕對地址編譯器以此地址為首地址,連續(xù)、順序地存放該代碼塊或數(shù)絕對地址編譯
21、器以此地址為首地址,連續(xù)、順序地存放該代碼塊或數(shù)據(jù)塊據(jù)塊 鏈接時定位:鏈接時定位:DSP系統(tǒng)采用編程時由系統(tǒng)采用編程時由“SECTION”偽指令,以區(qū)分不偽指令,以區(qū)分不同的代碼塊或數(shù)據(jù)塊編譯器每遇到一個同的代碼塊或數(shù)據(jù)塊編譯器每遇到一個“SECTION”偽指令,從偽指令,從0地址地址重新開始一個代碼塊或數(shù)據(jù)塊鏈接器將同名的重新開始一個代碼塊或數(shù)據(jù)塊鏈接器將同名的“SECTION”合并,并合并,并按按.cmd文件中的文件中的“SECTION”命令進行實際的定位命令進行實際的定位 加載時定位:加載時定位:PC機系統(tǒng)采用編程、編譯和鏈接時均未對程序進行絕對機系統(tǒng)采用編程、編譯和鏈接時均未對程序進行
22、絕對定位程序運行前,由操作系統(tǒng)對程序進行重定位,并加載到存儲空間定位程序運行前,由操作系統(tǒng)對程序進行重定位,并加載到存儲空間中中DSP C語言:C運行環(huán)境(1)存儲模型:存儲模型:C程序的代碼和數(shù)據(jù)如何定位程序的代碼和數(shù)據(jù)如何定位系統(tǒng)定義系統(tǒng)定義.cinit存放存放C程序中的變量初值和常量程序中的變量初值和常量.const 存放存放C程序中的字符常量、浮點常量和用程序中的字符常量、浮點常量和用const聲明的常量聲明的常量.switch 存放存放C程序中程序中switch語句的跳針表語句的跳針表.text 存放存放C程序的代碼程序的代碼.bss為為C程序中的全局和靜態(tài)變量保留存儲空間程序中的全
23、局和靜態(tài)變量保留存儲空間.far 為為C程序中用程序中用far聲明的全局和靜態(tài)變量保留空間聲明的全局和靜態(tài)變量保留空間.stack 為為C程序系統(tǒng)堆棧保留存儲空間,用于保存返回地址、函數(shù)程序系統(tǒng)堆棧保留存儲空間,用于保存返回地址、函數(shù)間的參數(shù)傳遞、存儲局部變量和保存中間結(jié)果間的參數(shù)傳遞、存儲局部變量和保存中間結(jié)果.sysmem用于用于C程序中程序中malloc、calloc和和realloc函數(shù)動態(tài)分配存儲函數(shù)動態(tài)分配存儲空間空間用用定義用用定義#pragmaCODE_SECTION (symbol, section name)#pragmaDATA_SECTION (symbol, sect
24、ion name)DSP C語言:C運行環(huán)境()寄存器使用規(guī)則寄存器使用規(guī)則C編譯器如何使用編譯器如何使用DSP的寄存器的寄存器函數(shù)進入和返回前,寄存器的保護函數(shù)進入和返回前,寄存器的保護函數(shù)調(diào)用規(guī)則函數(shù)調(diào)用規(guī)則函數(shù)間的參數(shù)傳遞通過寄存器和系統(tǒng)堆棧進行函數(shù)間的參數(shù)傳遞通過寄存器和系統(tǒng)堆棧進行調(diào)用函數(shù)與被調(diào)用函數(shù)必須對各自的寄存器進行保護調(diào)用函數(shù)與被調(diào)用函數(shù)必須對各自的寄存器進行保護從被調(diào)用函數(shù)返回前,被調(diào)用函數(shù)必須歸還所有已占用的堆棧空間從被調(diào)用函數(shù)返回前,被調(diào)用函數(shù)必須歸還所有已占用的堆??臻gC和和ASM混合編程混合編程C和和ASM混合編程時,必須遵循寄存器使用規(guī)則和函數(shù)調(diào)用規(guī)則混合編程時,
25、必須遵循寄存器使用規(guī)則和函數(shù)調(diào)用規(guī)則被被C調(diào)用的調(diào)用的ASM函數(shù),其函數(shù)名前應(yīng)加函數(shù),其函數(shù)名前應(yīng)加“_”中斷服務(wù)程序中斷服務(wù)程序ASM編寫的中斷服務(wù)程序必須對所有用到寄存器進行保護,以免破編寫的中斷服務(wù)程序必須對所有用到寄存器進行保護,以免破壞壞C運行環(huán)境運行環(huán)境C編寫的中斷服務(wù)程序應(yīng)用編寫的中斷服務(wù)程序應(yīng)用interrupt關(guān)鍵字聲明關(guān)鍵字聲明DSP C語言:C運行環(huán)境() 系統(tǒng)初試化系統(tǒng)初試化 在運行在運行C程序前,必須建立程序前,必須建立C運行環(huán)境,此任務(wù)由運行環(huán)境,此任務(wù)由C引導(dǎo)程引導(dǎo)程序序_c_int00完成;完成;c程序在連接的時候需要程序在連接的時候需要rst.lib庫。庫。_
26、c_int00包含在庫函數(shù)中,包含在庫函數(shù)中,build時自動將其鏈接進可時自動將其鏈接進可執(zhí)行程序中,程序的入口地址必須設(shè)為執(zhí)行程序中,程序的入口地址必須設(shè)為_c_int00起始地址。起始地址。_c_int00的源程序存放在由的源程序存放在由rts.src分離出來的分離出來的boot.asm中,用用可根據(jù)需要修改中,用用可根據(jù)需要修改 設(shè)置堆棧指針,設(shè)置堆棧指針, 初始化全局變量:將初始化全局變量:將.cinit”段段“中數(shù)據(jù)拷貝到中數(shù)據(jù)拷貝到.bss”段段“中中 調(diào)用調(diào)用C程序的主函數(shù)程序的主函數(shù)main()不同系系的不同系系的DSP,其,其C編譯器對編譯器對C運行環(huán)境的處理略有運行環(huán)境的
27、處理略有不同,具體參考各自的不同,具體參考各自的Optimizing C Compiler Users GuideDSP C語言:軟件build流程 目標文件地址是浮動的,能被重定位目標文件地址是浮動的,能被重定位鏈接器用鏈接器用.cmd文件對鏈接目標,進行重定文件對鏈接目標,進行重定位位系出目標文件、庫文件和鏈接器選項系出目標文件、庫文件和鏈接器選項用用MEMORY命令描述目標系統(tǒng)存儲空間配命令描述目標系統(tǒng)存儲空間配置置用用SECTIONS命令描述命令描述“段段”如何定位如何定位Hex轉(zhuǎn)換程序也使用轉(zhuǎn)換程序也使用.cmd文件,配置文件,配置轉(zhuǎn)換選項轉(zhuǎn)換選項 CCS 軟件開發(fā)方法 傳統(tǒng)軟件開發(fā)
28、方法用用ASM或或ASM和和C混合編程,從零開始混合編程,從零開始分配存儲器空間分配存儲器空間編寫硬件件源頭文件編寫硬件件源頭文件DSP片內(nèi)部分:片內(nèi)部分:描述片內(nèi)寄存器地址描述片內(nèi)寄存器地址描述片內(nèi)寄存器控制制狀態(tài)位位描述片內(nèi)寄存器控制制狀態(tài)位位DSP板上件源頭文件板上件源頭文件描述片外外設(shè)寄存器地址描述片外外設(shè)寄存器地址描述片外外設(shè)寄存器控制制狀態(tài)位位描述片外外設(shè)寄存器控制制狀態(tài)位位編寫應(yīng)用用用的外設(shè)設(shè)動程序編寫應(yīng)用用用的外設(shè)設(shè)動程序片內(nèi)制片外外設(shè)初試化程序片內(nèi)制片外外設(shè)初試化程序片內(nèi)制片外外設(shè)操作程序片內(nèi)制片外外設(shè)操作程序編寫中斷向量表和中斷服務(wù)程序編寫中斷向量表和中斷服務(wù)程序編寫應(yīng)用用
29、用的算法編寫應(yīng)用用用的算法編寫主控程序順序、循環(huán)執(zhí)行編寫主控程序順序、循環(huán)執(zhí)行TI倡導(dǎo)的DSP軟件架構(gòu)TI免費提供的基礎(chǔ)軟件 CSL庫:庫:Chip Support Library芯片支持庫芯片支持庫 定義定義DSP片內(nèi)外設(shè)件源,實現(xiàn)片內(nèi)外設(shè)基本操作片內(nèi)外設(shè)件源,實現(xiàn)片內(nèi)外設(shè)基本操作DDK:Driver Development Kit 設(shè)備設(shè)動程序開發(fā)包設(shè)備設(shè)動程序開發(fā)包 設(shè)計標準的設(shè)備設(shè)動程序模型,方便開發(fā)新的設(shè)備設(shè)動程序設(shè)計標準的設(shè)備設(shè)動程序模型,方便開發(fā)新的設(shè)備設(shè)動程序DSPLIB制制IMGLIB:Signal Processing Library 數(shù)學(xué)運算、矩陣運算、數(shù)學(xué)運算、矩陣運算
30、、FFT、濾波、卷積、相關(guān)等信號處理、濾波、卷積、相關(guān)等信號處理函數(shù)函數(shù) 壓縮、分析、濾波和格式轉(zhuǎn)換等圖像制視頻處理函數(shù)壓縮、分析、濾波和格式轉(zhuǎn)換等圖像制視頻處理函數(shù)DSP/BIOS:嵌入式實時、多任務(wù)操作系統(tǒng):嵌入式實時、多任務(wù)操作系統(tǒng) 實時、多任務(wù)內(nèi)核實時、多任務(wù)內(nèi)核 實時分析實時分析Reference Frameworks:程序參考架構(gòu):程序參考架構(gòu) C程序初試骨架,通過其可以迅速創(chuàng)建特定的應(yīng)用程序程序初試骨架,通過其可以迅速創(chuàng)建特定的應(yīng)用程序XDAIS:DSP Algorithm Standard,DSP算法標準算法標準 規(guī)定一系系算法編程規(guī)則,遵循這些規(guī)則的算法,可以相互規(guī)定一系系算
31、法編程規(guī)則,遵循這些規(guī)則的算法,可以相互調(diào)用調(diào)用DSP/BIOS:功能搶先型實時、多任務(wù)操作系統(tǒng)內(nèi)核搶先型實時、多任務(wù)操作系統(tǒng)內(nèi)核基于優(yōu)先級的、搶先型實時調(diào)度程序基于優(yōu)先級的、搶先型實時調(diào)度程序支持多線程管理與調(diào)度支持多線程管理與調(diào)度支持支持4種線程類型:種線程類型:HWI、SWI、TSK、IDL支持支持3種作業(yè)間的通信方式:種作業(yè)間的通信方式:Mailboxes、Semaphores、Queues支持周期函數(shù),方便實現(xiàn)固定時間間隔的數(shù)據(jù)采集,簡化多速率系支持周期函數(shù),方便實現(xiàn)固定時間間隔的數(shù)據(jù)采集,簡化多速率系統(tǒng)的設(shè)計統(tǒng)的設(shè)計提供存儲器管理,實現(xiàn)動態(tài)存儲器分配提供存儲器管理,實現(xiàn)動態(tài)存儲器分
32、配實時分析模塊實時分析模塊分析信息實時獲取、傳輸和顯示,為早期的系統(tǒng)級排錯提供幫助分析信息實時獲取、傳輸和顯示,為早期的系統(tǒng)級排錯提供幫助DSP/BIOS模塊中內(nèi)含分析信息的實時獲取功能模塊中內(nèi)含分析信息的實時獲取功能分析信息的實時傳輸由分析信息的實時傳輸由RTDX(Real-Time Data Exchange)技術(shù))技術(shù)實現(xiàn),完成目標實現(xiàn),完成目標DSP與主機之間的實時通信,與主機之間的實時通信,C6000 RTDX的帶寬的帶寬為為20KByte,RTDX是在是在idle作業(yè)期間完成,所以對程序執(zhí)行速度的作業(yè)期間完成,所以對程序執(zhí)行速度的影響最小影響最小主機可以顯示:事件記錄、線程執(zhí)行順序
33、、執(zhí)行次數(shù)的最大值或平主機可以顯示:事件記錄、線程執(zhí)行順序、執(zhí)行次數(shù)的最大值或平均值和總的均值和總的CPU負載等信息負載等信息DSP/BIOS:功能 為了方便使用,為了方便使用,TI 提供一個提供一個可視化的配置工具,用于配可視化的配置工具,用于配置實際系統(tǒng)中所需的置實際系統(tǒng)中所需的DSP/BIOS模塊模塊;可以在可以在CCS集成環(huán)境中調(diào)用之集成環(huán)境中調(diào)用之DSP/BIOS是可裁剪的,只是可裁剪的,只有被應(yīng)用程序使用的模塊才有被應(yīng)用程序使用的模塊才會被鏈接到應(yīng)用程序中會被鏈接到應(yīng)用程序中DSP/BIOS開銷?。捍a大開銷小:代碼大小:?。?K WordsCPU占用:占用:1MIPSDSP/BI
34、OS采用采用標準的標準的API,所以不同系系,所以不同系系DSP之間的移植容易之間的移植容易DSP/BIOS集成在集成在CCS中,中,無需使用許可費無需使用許可費CSL 庫 什么是什么是CSL:Chip Support Library 用于配置、控制和管理用于配置、控制和管理DSP片上外設(shè)片上外設(shè) 已為已為C6000和和C5000系系系系DSP設(shè)計了各自的設(shè)計了各自的CSL庫庫 CSL庫函數(shù)大多數(shù)是用庫函數(shù)大多數(shù)是用C語言編寫的,并已對代碼的大語言編寫的,并已對代碼的大小和速度進行了優(yōu)化小和速度進行了優(yōu)化 CSL庫是可裁剪的庫是可裁剪的:即只有被使用的:即只有被使用的CSL模塊才會包含模塊才會
35、包含進應(yīng)用程序中進應(yīng)用程序中 CSL庫是可擴展的庫是可擴展的:每個片上外設(shè)的每個片上外設(shè)的API相互獨立,增相互獨立,增加新的加新的API,對其他片上外設(shè)沒有影響,對其他片上外設(shè)沒有影響 為什么要設(shè)計為什么要設(shè)計CSL DSP片上外設(shè)種類及其應(yīng)用日趨復(fù)雜片上外設(shè)種類及其應(yīng)用日趨復(fù)雜 提供一組標準的方法用于訪問和控制片上外設(shè)提供一組標準的方法用于訪問和控制片上外設(shè) 免除用用編寫配置和控制片上外設(shè)所必需的定義和代碼免除用用編寫配置和控制片上外設(shè)所必需的定義和代碼CSL:特點 片上外設(shè)編程的標準協(xié)議:片上外設(shè)編程的標準協(xié)議: 定義一組標準的定義一組標準的APIs:函數(shù)、數(shù)據(jù)類型、宏:函數(shù)、數(shù)據(jù)類型、
36、宏對硬件進行行象,提取符號化的片上外設(shè)描對硬件進行行象,提取符號化的片上外設(shè)描述述 定義一組宏,用于訪問和建立寄存器及其位值定義一組宏,用于訪問和建立寄存器及其位值基本的件源管理基本的件源管理 對多件源的片上外設(shè)進行管理對多件源的片上外設(shè)進行管理已集成到已集成到DSP/BIOS中中 通過圖形用用接口通過圖形用用接口GUI對對CSL進行配置進行配置使片上外設(shè)容易使用使片上外設(shè)容易使用 縮短開發(fā)時間,增加可移植性縮短開發(fā)時間,增加可移植性CSL:片上外設(shè)DDK(Driver Development Kit )TI提供提供DDK的目的的目的標準的設(shè)備設(shè)動程序模型,用用無需從零開始編寫設(shè)備設(shè)動程序標準
37、的設(shè)備設(shè)動程序模型,用用無需從零開始編寫設(shè)備設(shè)動程序設(shè)備設(shè)動程序模型(設(shè)備設(shè)動程序模型(IOM)將設(shè)備設(shè)動程序分為將設(shè)備設(shè)動程序分為2個部分個部分與設(shè)備相關(guān)的:與設(shè)備相關(guān)的:“迷你迷你”設(shè)動程序(設(shè)動程序(mini-driver)與設(shè)備無關(guān)的:與設(shè)備無關(guān)的:“類類”設(shè)動程序(設(shè)動程序(class-driver)“類類”設(shè)動程序設(shè)動程序設(shè)備設(shè)動程序的上上行象,使其與特定設(shè)備無關(guān),為應(yīng)用程序提供通用的設(shè)備設(shè)動程序的上上行象,使其與特定設(shè)備無關(guān),為應(yīng)用程序提供通用的接口接口3大類大類“類類”設(shè)動程序:設(shè)動程序:SIO、PIP和和GIOSIO:流:流I/O接口,由接口,由SIO和和DIO組成,組成,D
38、IO負責(zé)緩沖器管理、信號同步以負責(zé)緩沖器管理、信號同步以及底上及底上“迷你迷你”設(shè)動程序接口設(shè)動程序接口PIP:管道接口,有:管道接口,有PIP和和PIO組成,組成,PIO負責(zé)緩沖器管理、信號同步以及負責(zé)緩沖器管理、信號同步以及底上底上“迷你迷你”設(shè)動程序接口設(shè)動程序接口GIO:通用:通用I/O,允許進行塊讀塊寫,可以用其新的用用設(shè)動程序,允許進行塊讀塊寫,可以用其新的用用設(shè)動程序“迷你迷你”設(shè)動程序設(shè)動程序設(shè)備設(shè)動程序的底上行象,與特定設(shè)備有關(guān),對設(shè)計硬件設(shè)備進行操作,設(shè)備設(shè)動程序的底上行象,與特定設(shè)備有關(guān),對設(shè)計硬件設(shè)備進行操作,DDK規(guī)定一組規(guī)定一組標準的標準的API,函數(shù)體由用用根據(jù)實
39、際硬件設(shè)備編寫,函數(shù)體由用用根據(jù)實際硬件設(shè)備編寫DDK是在是在CSL基礎(chǔ)上對外設(shè)基礎(chǔ)上對外設(shè)I/O進行更高上次的行象進行更高上次的行象TI免費提供免費提供DDK的源代碼、庫及相關(guān)文檔,可從的源代碼、庫及相關(guān)文檔,可從TI網(wǎng)站上免費下載網(wǎng)站上免費下載Signal Processing LibraryC6000系系系系DSP基本的信號處理庫基本的信號處理庫DSPLIB提供數(shù)學(xué)運算、矩陣運算、提供數(shù)學(xué)運算、矩陣運算、FFT、濾波、卷積等常用的信號處理函數(shù)、濾波、卷積等常用的信號處理函數(shù)TMS320C62x DSPLIB:用門為:用門為C62x系系系系DSP進行優(yōu)化進行優(yōu)化TMS320C67x DSP
40、LIB:用門為:用門為C67x系系系系DSP進行優(yōu)化進行優(yōu)化TMS320C64x DSPLIB:用門為:用門為C64x系系系系DSP進行優(yōu)化進行優(yōu)化FastRTS:提供快速的單精度制雙精度浮點數(shù)學(xué)運算和轉(zhuǎn)換函數(shù)提供快速的單精度制雙精度浮點數(shù)學(xué)運算和轉(zhuǎn)換函數(shù)TMS320C62x制制C64x FastRTS:用門為:用門為C62x制制C64x系系系系DSP進行優(yōu)化進行優(yōu)化TMS320C67x FastRTS:用門為:用門為C67x系系系系DSP進行優(yōu)化進行優(yōu)化IMGLIB:提供壓縮、分析、濾波和公司轉(zhuǎn)換等常用的圖像制視頻處理:提供壓縮、分析、濾波和公司轉(zhuǎn)換等常用的圖像制視頻處理函數(shù)函數(shù)TMS320
41、C62x IMGLIB:用門為:用門為C62x系系系系DSP進行優(yōu)化進行優(yōu)化TMS320C64x IMGLIB:用門為:用門為C64x系系系系DSP進行優(yōu)化進行優(yōu)化C5000系系系系DSP基本的信號處理庫基本的信號處理庫DSPLIB:提供數(shù)學(xué)運算、矩陣運算、:提供數(shù)學(xué)運算、矩陣運算、FFT、濾波、卷積等常用的信號處理、濾波、卷積等常用的信號處理函數(shù)函數(shù)TMS320C54x DSPLIB:用門為:用門為C54x系系系系DSP進行優(yōu)化進行優(yōu)化TMS320C55x DSPLIB:用門為:用門為C55x系系系系DSP進行優(yōu)化進行優(yōu)化IMGLIB:提供壓縮、分析、濾波和公司轉(zhuǎn)換等常用的圖像制視頻處理:提
42、供壓縮、分析、濾波和公司轉(zhuǎn)換等常用的圖像制視頻處理函數(shù)函數(shù)TMS320C55x IMGLIB:用門為:用門為C55x系系系系DSP進行優(yōu)化進行優(yōu)化Reference FrameworkTI提供軟件參考架構(gòu),目的:提供軟件參考架構(gòu),目的:DSP系統(tǒng)日趨復(fù)雜系統(tǒng)日趨復(fù)雜 包含多個算法(如:同時包含音頻算法和視頻算法)包含多個算法(如:同時包含音頻算法和視頻算法) 同一個算法可能需要多道運行(如:對多個視頻流進行處理)同一個算法可能需要多道運行(如:對多個視頻流進行處理) 不同算法或通道所需的數(shù)據(jù)或幀率可能不同(如:音頻幀和視不同算法或通道所需的數(shù)據(jù)或幀率可能不同(如:音頻幀和視頻幀幀率不同)頻幀幀率不同) 某些某些DSP硬件系統(tǒng)的存儲容量有限(如:硬件系統(tǒng)的存儲容量有限(如:C54x系統(tǒng))系統(tǒng)) 軟件對象可能需要動態(tài)地創(chuàng)建和刪除,導(dǎo)致存儲器需要進行動軟件對象可能需要動態(tài)地創(chuàng)建和刪除,導(dǎo)致存儲器需要進行動態(tài)管理態(tài)管理 硬件系統(tǒng)可能為由硬件系統(tǒng)可能為由DSP和通用處理器構(gòu)成的雙處理器系統(tǒng)和通用處理器構(gòu)成的雙處理器系統(tǒng)TI精選一些通用的模塊,構(gòu)成軟件參考架構(gòu)精選一些通用的模塊,構(gòu)成軟件參考架構(gòu)讓你將精力集中于系統(tǒng)的特定應(yīng)用方面讓你將精力集中于系統(tǒng)的特定應(yīng)用方面TI根據(jù)
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋梁混凝土承包協(xié)議書
- 草原分割協(xié)議書
- 耕地過戶協(xié)議書
- 安裝壓力罐合同協(xié)議書
- 財產(chǎn)規(guī)定協(xié)議書
- 田地分戶協(xié)議書
- 房產(chǎn)銷售和業(yè)主協(xié)議書
- 美國司法協(xié)議書
- 水穩(wěn)站股份合同協(xié)議書
- 簡短愛情協(xié)議書
- 算力是人工智能的基礎(chǔ)設(shè)施
- 電信總經(jīng)理談服務(wù)
- 2024年-2025年電梯檢驗員考試題庫及答案
- 02J915 公用建筑衛(wèi)生間
- 混凝土攪拌站安全操作技術(shù)交底
- 獸用生物制品保藏、運輸管理和相應(yīng)的應(yīng)急預(yù)案制度
- 水域救援課件教學(xué)課件
- 學(xué)術(shù)論文文獻閱讀與機助漢英翻譯智慧樹知到答案2024年重慶大學(xué)
- (初級)航空油料特設(shè)維修員(五級)理論考試題庫-上(單選題)
- 尾礦庫安全規(guī)程
- 互聯(lián)網(wǎng)+時代電商助農(nóng)模式的優(yōu)化策略:以S縣為例9000字(論文)
評論
0/150
提交評論