2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第4章 如何構(gòu)建一個(gè)完整的工程,4.1 一個(gè)完整的工程由哪些文件構(gòu)成,頭文件庫文件源文件CMD文件,4.1.1頭文件,頭文件是以.h為后綴的文件。h即為“head”的縮寫。,4.1.2 庫文件,庫文件是以.lib為后綴的文件Lib即“l(fā)ibrary”的縮寫CCS中庫文件的默認(rèn)路徑為:C:\CCStudio_v3.3\c2000\cgtools\lib\庫文件不僅包含了寄存器的地址與對(duì)應(yīng)標(biāo)示符的定義,還包含了C/C++運(yùn)

2、行支持庫函數(shù),如系統(tǒng)啟動(dòng)函數(shù)_c_int00等。,靜態(tài)庫與動(dòng)態(tài)庫的區(qū)別(1),lib是編譯時(shí)需要的,而dll是運(yùn)行時(shí)需要的。如果要完成源代碼的編譯,有l(wèi)ib就夠了。如果要使動(dòng)態(tài)鏈接的程序運(yùn)行起來,有dll就夠了。當(dāng)然,在開發(fā)和調(diào)試階段,最好兩者都有。,靜態(tài)庫與動(dòng)態(tài)庫的區(qū)別(2),一般的動(dòng)態(tài)庫程序有l(wèi)ib文件和dll文件。lib文件是必須在編譯期就連接到應(yīng)用程序中的,而dll文件是運(yùn)行期才會(huì)被調(diào)用的。如果有dll文件,那么對(duì)應(yīng)的lib文件

3、一般是一些索引信息,具體的實(shí)現(xiàn)在dll文件中。如果只有l(wèi)ib文件,那么這個(gè)lib文件是靜態(tài)編譯出來的,索引和實(shí)現(xiàn)都在其中。靜態(tài)編譯的lib文件優(yōu)點(diǎn)是給用戶安裝時(shí)就不需要再掛動(dòng)態(tài)庫了。但也有缺點(diǎn),就是導(dǎo)致應(yīng)用程序比較大,而且失去了動(dòng)態(tài)庫的靈活性,在版本升級(jí)時(shí),同時(shí)要發(fā)布新的應(yīng)用程序才行。,靜態(tài)庫與動(dòng)態(tài)庫的區(qū)別(3),在動(dòng)態(tài)庫的情況下,有兩個(gè)文件,一個(gè)是引入庫(.lib)文件,一個(gè)是dll文件,引入庫文件包含被dll導(dǎo)出的函數(shù)的名稱和位置,

4、dll包含實(shí)際的函數(shù)和數(shù)據(jù),應(yīng)用程序使用lib文件鏈接到所需要使用的dll文件,庫中的函數(shù)和數(shù)據(jù)并不復(fù)制到可執(zhí)行文件中,因此在應(yīng)用程序的可執(zhí)行文件中,存放的不是被調(diào)用的函數(shù)代碼,而是dll中所要調(diào)用的函數(shù)的內(nèi)存地址,這樣當(dāng)一個(gè)或多個(gè)應(yīng)用程序運(yùn)行是再把程序代碼和被調(diào)用的函數(shù)代碼鏈接起來,從而節(jié)省了內(nèi)存資源。,4.1.3 源文件,源文件是以.c為后綴的文件C即為“source”的縮寫源文件是整個(gè)工程的核心,包含了所有需要實(shí)現(xiàn)的功能的代碼

5、,F2812常用的源文件,CMD文件,CMD文件的作用是為代碼和數(shù)據(jù)分配存儲(chǔ)空間CMD文件有兩種:一種是分配RAM空間,用于將程序下載到RAM空間一種是分配FLASH空間,用于將程序固化到FLASH空間,4.2 通用擴(kuò)展語言GEL,GEL是General Extended Language的縮寫,即通用擴(kuò)展語言,是一種類似于C的解釋性語言。用戶可以通過在文件中使用GEL語言來創(chuàng)建函數(shù),從而擴(kuò)展CCS的功能。通過GEL,可以訪問目標(biāo)

6、板的存儲(chǔ)器,并為CCS的GEL菜單添加選項(xiàng)。,7.1 存儲(chǔ)器相關(guān)的總線知識(shí),地址總線,PAB (Program Address Bus)程序地址總線,它是一個(gè)22位的總線,用于傳送程序空間的讀寫地址。程序在運(yùn)行的時(shí)候,假如CPU執(zhí)行到了某一個(gè)指令,那么需要去找到這段代碼的地址,就是用PAB來傳送。DRAB(Data-Read Address Bus)數(shù)據(jù)讀地址總線,它是個(gè)32位的總線,用于傳送數(shù)據(jù)空間的讀地址。假如CPU要讀取

7、數(shù)據(jù)空間某一個(gè)單元的內(nèi)容,那么這個(gè)單元的地址就是通過DRAB來傳送。DWAB(Data-Write Address Bus)數(shù)據(jù)寫地址總線,它也是個(gè)32位的總線,用于傳送數(shù)據(jù)空間的寫地址。類似的,如果CPU要對(duì)數(shù)據(jù)空間的某一個(gè)單元進(jìn)行寫操作,那么這個(gè)單元的地址就是通過DWAB來傳送,數(shù)據(jù)總線,PRDW(Program-Read Data Bus)程序讀數(shù)據(jù)總線,它是一個(gè)32位的總線,用于傳送讀取程序空間時(shí)的指令或者數(shù)據(jù)。CP

8、U在執(zhí)行代碼的時(shí)候,首先是通過PAB傳送并找到了存放該指令的存儲(chǔ)單元,但是這個(gè)存儲(chǔ)單元下的具體內(nèi)容就要由PRDW來傳送了。DRDB(Data-Read Data Bus)數(shù)據(jù)讀數(shù)據(jù)總線,它是一個(gè)32位的總線,在讀取數(shù)據(jù)空間時(shí)用來傳送數(shù)據(jù)。CPU在進(jìn)行讀操作時(shí),先通過DRAB總線確定了需要進(jìn)行讀操作的數(shù)據(jù)單元的地址,接下來傳送這個(gè)數(shù)據(jù)單元下面的具體內(nèi)容時(shí)就需要DRDB了。DWDB(Data/Program-Write D

9、ata Bus)數(shù)據(jù)寫數(shù)據(jù)總線,它是一個(gè)32位的總線,在進(jìn)行寫操作時(shí),向數(shù)據(jù)空間/程序空間傳送相應(yīng)的數(shù)據(jù)。也就是假如CPU要對(duì)數(shù)據(jù)空間的某一個(gè)單元進(jìn)行寫操作,通過DWAB傳送了這一個(gè)單元的地址,同時(shí)需要DWDB來傳送寫入的內(nèi)容。,7.2.1 F2812片內(nèi)存儲(chǔ)器資源,7.2.2 映像與統(tǒng)一編址的理解,7.2.2 F2812的存儲(chǔ)器映像,“映像”用英文單詞來表示是“Map”,“Map”在中文里又是“地圖”的意思。地圖應(yīng)該都比較熟悉吧

10、,在地圖上,建筑物都有自己詳細(xì)的地址,根據(jù)地圖的指引,按照地址,就能找到相應(yīng)的地方。類似的,當(dāng)存儲(chǔ)器單元的地址在設(shè)計(jì)時(shí)都確定下來后,就形成了存儲(chǔ)器的“地圖”,也就是存儲(chǔ)器映像,根據(jù)存儲(chǔ)單元的地址,就能找到相應(yīng)的存儲(chǔ)單元。,7.2.3-1 片內(nèi)SRAM,總共18K*16位大小H0 8K*16位L0 4K*16位 受CSM保護(hù)L1 4K*16位 受CSM保護(hù)M0 1K*16位M1 1K*16位,7.2.3-2 片

11、內(nèi)OTP,片內(nèi)OTP實(shí)質(zhì)是ROM空間。OTP是One Time Programmable的縮寫,即一次性可編程的ROM,其大小為2K*16位,其中1K*16位由TI公司保留作為系統(tǒng)測(cè)試使用,剩余1K*16位用戶可以使用,這部分空間也均可以作為程序空間或者數(shù)據(jù)空間。OTP里面的內(nèi)容受到CSM的保護(hù)。,7.2.3-3 Boot ROM,Boot ROM,可以叫做引導(dǎo)ROM。該存儲(chǔ)空間內(nèi)由TI公司裝載了產(chǎn)品的版本號(hào)、發(fā)布的數(shù)據(jù)、校驗(yàn)求和信息、

12、復(fù)位矢量、CPU矢量(僅為測(cè)試)及數(shù)學(xué)表等。,7.2.3-4 片內(nèi)Flash,7.2.3-5 代碼安全模塊CSM,CSM是Code Security Module的縮寫,即代碼安全模塊。在開發(fā)完程序,將代碼燒寫進(jìn)芯片的存儲(chǔ)器后,常常會(huì)擔(dān)心別人通過JTAG口從存儲(chǔ)器中將代碼讀出來,為了保護(hù)代碼安全,F(xiàn)2812設(shè)計(jì)有代碼安全模塊CSM,其地址為0x3F 7FF8~0x3F 7FFF,共128位。受到CSM保護(hù)的模塊有FLASH、OTP、

13、L0及L1。,FLASH燒寫界面,7.3 CMD文件,連接命令文件(Linker Command Files), 以后綴.cmd結(jié)尾,簡(jiǎn)稱為CMD文件。,COFF概念,通用目標(biāo)文件格式COFF(Common Object File Format),是一種很流行的二進(jìn)制可執(zhí)行文件格式。二進(jìn)制可執(zhí)行文件包括了庫文件(以后綴.lib結(jié)尾),目標(biāo)文件(以后綴.obj結(jié)尾),最終的可執(zhí)行文件(以后綴.out結(jié)尾)等,平時(shí)燒寫程序時(shí)使用的就

14、是.out結(jié)尾的文件。,段概念,使用段的好處是鼓勵(lì)模塊化編程,提供更強(qiáng)大而又靈活的方法來管理代碼和目標(biāo)系統(tǒng)的存儲(chǔ)空間。這里模塊化編程的意思是指程序員可以自由決定愿意把哪些代碼歸屬到哪些段,然后加以不同的處理。比如,把已經(jīng)初始化的數(shù)據(jù)放到一個(gè)段里,未初始化的數(shù)據(jù)放到另一個(gè)段里,而不是混雜的放在一起。,編譯器處理段的過程,1.把每個(gè)源文件都編譯成獨(dú)立的目標(biāo)文件(以后綴.obj結(jié)尾),每個(gè)目標(biāo)文件都含有自己的段。2.連接器把這些目標(biāo)文件中相

15、同段名的部分連接在一起,生成最終的可執(zhí)行文件(以后綴.out結(jié)尾)。,7.3.2-1 已初始化的段,text:編譯C語言中的語句時(shí),生成的匯編指令代碼存放于此。cinit:存放用來對(duì)全局和靜態(tài)變量初始化的常數(shù)。const:包含字符串常量和初始化的全局變量和靜態(tài)變量(由const聲明)的初始化和說明。econst:包含字符串常量和初始化的全局變量和靜態(tài)變量(由far const聲明)的初始化和說明。pinit:全局構(gòu)造器(C++)

16、程序列表。switch:存放switch語句產(chǎn)生的常數(shù)表格。,7.3.2-2 未初始化的段,bss:為全局變量和局部變量保留的空間,在程序上電時(shí),.cinit空間中的數(shù)據(jù)復(fù)制出來并存儲(chǔ)在.bss空間中。ebss:為使用大寄存器模式時(shí)的全局變量和靜態(tài)變量預(yù)留的空間,在程序上電時(shí),.cinit空間中的數(shù)據(jù)復(fù)制出來并存儲(chǔ)在.ebss中。stack:為系統(tǒng)堆棧保留的空間,主要用于和函數(shù)傳遞變量或?yàn)榫植孔兞糠峙淇臻g。system:為動(dòng)態(tài)存

17、儲(chǔ)分配保留的空間。如果有宏函數(shù),此空間被宏函數(shù)占用,如果沒有的話,此空間保留為0。esysmem:為動(dòng)態(tài)存儲(chǔ)分配保留的空間。如果有far函數(shù),此空間被相應(yīng)的占用,如果沒有的化,此空間保留為0。,預(yù)處理命令#pragma語法,#pragma CODE_SECTION(symbol,”section name”);#pragma DATA_SECTION(symbol,”section name”);,例7-1,#pragma DAT

18、A_SECTION(s,”newsect”); unsigned int s[100]; void main(void) { …… },將全局?jǐn)?shù)組變量s[100]單獨(dú)編譯成一個(gè)新的段,取名為”newsect”。,段的存儲(chǔ)特性,7.3.3 CMD文件的編寫,CMD文件支持C語言中的塊注釋符“/*”和“*/”,但不支持行注釋符“//”。CMD文件會(huì)使用到為數(shù)不多的幾個(gè)關(guān)鍵字,下面會(huì)根

19、據(jù)需要來介紹一些常用的關(guān)鍵字。 CMD文件的兩大主要功能是指示存儲(chǔ)空間和分配段到存儲(chǔ)空間 。,1.通過MEMORY偽指令來指示存儲(chǔ)空間,MEMORY偽指令語法如下:MEMORY{ PAGE0:name0[(attr)]:origin=constant,length=constant PAGEn:namen[(attr)]:origin=constant,length=constant},2.通過SECTIONS偽指令

20、來分配到存儲(chǔ)空間,SECTIONS{ name:[property,property,property,…] name:[property,property,property,…] ……},SECTIONS偽指令語法如下:,程序是什么?,組成:由代碼和數(shù)據(jù)組成運(yùn)行:要運(yùn)行的程序其代碼必須存放在可由CPU尋址的存儲(chǔ)空間存放:以代碼塊和數(shù)據(jù)塊的形式存放代碼塊和數(shù)據(jù)塊是程序的最小單元一個(gè)代碼塊或數(shù)據(jù)塊

21、在存儲(chǔ)空間中連續(xù)、順序存放不同的代碼塊或數(shù)據(jù)塊,可以存放于不同的存儲(chǔ)空間中定位:,編譯時(shí)定位:MCU系統(tǒng)采用編程時(shí)由ORG語句確定代碼塊和數(shù)據(jù)塊的絕對(duì)地址編譯器以此地址為首地址,連續(xù)、順序地存放該代碼塊或數(shù)據(jù)塊鏈接時(shí)定位:DSP系統(tǒng)采用編程時(shí)由“SECTION”偽指令,以區(qū)分不同的代碼塊或數(shù)據(jù)塊編譯器每遇到一個(gè)“SECTION”偽指令,從0地址重新開始一個(gè)代碼 塊或數(shù)據(jù)塊鏈接器將同名的“SECTION”合并,并按.cmd

22、文件中的“SECTION”命令進(jìn)行實(shí)際的定位加載時(shí)定位:PC機(jī)系統(tǒng)采用編程、編譯和鏈接時(shí)均未對(duì)程序進(jìn)行絕對(duì)定位程序運(yùn)行前,由操作系統(tǒng)對(duì)程序進(jìn)行重定位,并加載到存儲(chǔ)空間中,,程序定位方式的比較,編譯時(shí)定位ORG xxxx,絕對(duì)定位優(yōu)點(diǎn):簡(jiǎn)單、容易上手缺點(diǎn):程序員必須熟悉硬件資源、模塊化編程差、工程化不支持,鏈接時(shí)定位SECTION,相對(duì)定位缺點(diǎn):靈活、上手較難優(yōu)點(diǎn):程序員不必熟悉硬件資源、模塊化編程強(qiáng)、工程化管理支持,加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論