存儲器的結(jié)構(gòu)、映像及CMD文件的編寫._第1頁
存儲器的結(jié)構(gòu)、映像及CMD文件的編寫._第2頁
存儲器的結(jié)構(gòu)、映像及CMD文件的編寫._第3頁
存儲器的結(jié)構(gòu)、映像及CMD文件的編寫._第4頁
存儲器的結(jié)構(gòu)、映像及CMD文件的編寫._第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第7章 存儲器的結(jié)構(gòu)、映像及CMD文件的編寫7.1 存儲器相關(guān)的總線知識地址總線PAB (Program Address Bus)程序地址總線,它是一個22位的總線,用于傳送程序空間的讀寫地址。程序在運行的時候,假如CPU執(zhí)行到了某一個指令,那么需要去找到這段代碼的地址,就是用PAB來傳送。DRAB(Data-Read Address Bus)數(shù)據(jù)讀地址總線,它是個32位的總線,用于傳送數(shù)據(jù)空間的讀地址。假如CPU要讀取數(shù)據(jù)空間某一個單元的內(nèi)容,那么這個單元的地址就是通過DRAB來傳送。DWAB(Data-Write Address Bus)數(shù)據(jù)寫地址總線,它也是個32位的總線,用于傳送數(shù)據(jù)空

2、間的寫地址。類似的,如果CPU要對數(shù)據(jù)空間的某一個單元進行寫操作,那么這個單元的地址就是通過DWAB來傳送 數(shù)據(jù)總線PRDW(Program-Read Data Bus)程序讀數(shù)據(jù)總線,它是一個32位的總線,用于傳送讀取程序空間時的指令或者數(shù)據(jù)。CPU在執(zhí)行代碼的時候,首先是通過PAB傳送并找到了存放該指令的存儲單元,但是這個存儲單元下的具體內(nèi)容就要由PRDW來傳送了。DRDB(Data-Read Data Bus)數(shù)據(jù)讀數(shù)據(jù)總線,它是一個32位的總線,在讀取數(shù)據(jù)空間時用來傳送數(shù)據(jù)。CPU在進行讀操作時,先通過DRAB總線確定了需要進行讀操作的數(shù)據(jù)單元的地址,接下來傳送這個數(shù)據(jù)單元下面的具體內(nèi)

3、容時就需要DRDB了。DWDB(Data/Program-Write Data Bus)數(shù)據(jù)寫數(shù)據(jù)總線,它是一個32位的總線,在進行寫操作時,向數(shù)據(jù)空間/程序空間傳送相應(yīng)的數(shù)據(jù)。也就是假如CPU要對數(shù)據(jù)空間的某一個單元進行寫操作,通過DWAB傳送了這一個單元的地址,同時需要DWDB來傳送寫入的內(nèi)容。7.2.1 F2812存儲器的結(jié)構(gòu)1)程序/數(shù)據(jù)存儲器。2)保留區(qū)。數(shù)據(jù)區(qū)的某些地址被保留作為CPU的寄存器使用。3)CPU中斷向量。在程序地址中保留了64個地址作為CPU的32個中斷向量,通過ST1的為VMAP可以將CPU的中斷向量影像到程序空間的頂部或底部。7.2.1 F2812片內(nèi)存儲器資源存

4、儲器名稱存儲器容量FLASH128K*16位H0(SRAM)8K*16位L0(SRAM)4K*16位L1(SRAM)4K*16位M0(SRAM)1K*16位M1(SRAM)1K*16位Boot ROM4K*16位OTP(One Time Programmable ROM)1K*16位7.2.2 映像與統(tǒng)一編址的理解7.2.2 F2812的存儲器映像 “映像”用英文單詞來表示是“Map”,“Map”在中文里又是“地圖”的意思。地圖應(yīng)該都比較熟悉吧,在地圖上,建筑物都有自己詳細的地址,根據(jù)地圖的指引,按照地址,就能找到相應(yīng)的地方。類似的,當(dāng)存儲器單元的地址在設(shè)計時都確定下來后,就形成了存儲器的“地

5、圖”,也就是存儲器映像,根據(jù)存儲單元的地址,就能找到相應(yīng)的存儲單元。7.2.3-1 片內(nèi)SRAMn總共18K*16位大小nH0 8K*16位nL0 4K*16位 受CSM保護nL1 4K*16位 受CSM保護nM0 1K*16位nM1 1K*16位7.2.3-2 片內(nèi)OTP 片內(nèi)OTP實質(zhì)是ROM空間。OTP是One Time Programmable的縮寫,即一次性可編程的ROM,其大小為2K*16位,其中1K*16位由TI公司保留作為系統(tǒng)測試使用,剩余1K*16位用戶可以使用,這部分空間也均可以作為程序空間或者數(shù)據(jù)空間。OTP里面的內(nèi)容受到CSM的保護。7.2.3-3 Boot ROMnB

6、oot ROM,可以叫做引導(dǎo)ROM。該存儲空間內(nèi)由TI公司裝載了產(chǎn)品的版本號、發(fā)布的數(shù)據(jù)、校驗求和信息、復(fù)位矢量、CPU矢量(僅為測試)及數(shù)學(xué)表等。 7.2.3-4 片內(nèi)Flash地址范圍區(qū)段名稱0 x3D 80000 x3D 9FFF段J,8K*16位0 x3D A0000 x3D BFFF段I,8K*16位0 x3D C0000 x3D FFFF段H,16K*16位0 x3E 00000 x3E 3FFF段G,16K*16位0 x3E 40000 x3E 7FFF段F,16K*16位0 x3E 80000 x3E BFFF段E,16K*16位0 x3E C0000 x3E FFFF段D,1

7、6K*16位0 x3F 00000 x3F 3FFF段C,16K*16位0 x3F 40000 x3F 5FFF段B,8K*16位0 x3F 60000 x3F7FF60 x3F7FF7段A,16K*16位Boot到FLASH的入口處,此處有程序分支指令0 x3F 7FF80 x3F 7FFF安全密碼,8*16位7.2.3-5 代碼安全模塊CSMnCSM是Code Security Module的縮寫,即代碼安全模塊。在開發(fā)完程序,將代碼燒寫進芯片的存儲器后,常常會擔(dān)心別人通過JTAG口從存儲器中將代碼讀出來,為了保護代碼安全,F(xiàn)2812設(shè)計有代碼安全模塊CSM,其地址為0 x3F 7FF80

8、 x3F 7FFF,共128位。n受到CSM保護的模塊有FLASH、OTP、L0及L1。 FLASH燒寫界面存儲影像注意事項n保留區(qū)是為了將來擴展而保留的,在實際應(yīng)用中不應(yīng)該去訪問這些區(qū)域。n外設(shè)幀02的存儲器映像僅與數(shù)據(jù)存儲器有關(guān),用戶程序不能在程序空間訪問這些存儲器。n某些范圍的存儲器收到EALLOW保護,避免配置后的改寫。n在外擴的XINTF區(qū)0和XINTF區(qū)1共用一個片選信號,外擴的XINTF區(qū)6和區(qū)7共用1個片選信號。n在同一時刻,只對M0,PIE,BROM及XINTF中的一種向量映像進行使能。nBootROM和外擴的XINTF區(qū)7不能被同時激活,由MP/MC引腳的電平來指定哪個被激

9、活。當(dāng)MP/MC=0時,激活片內(nèi)的BootROM;當(dāng)MP/MC=1時,激活外擴的XINTF區(qū)7。7.3 CMD文件 連接命令文件(Linker Command Files), 以后綴.cmd結(jié)尾,簡稱為CMD文件。 COFF概念n通用目標(biāo)文件格式COFF(Common Object File Format),是一種很流行的二進制可執(zhí)行文件格式。二進制可執(zhí)行文件包括了庫文件(以后綴.lib結(jié)尾),目標(biāo)文件(以后綴.obj結(jié)尾),最終的可執(zhí)行文件(以后綴.out結(jié)尾)等,平時燒寫程序時使用的就是.out結(jié)尾的文件。段概念n使用段的好處是鼓勵模塊化編程,提供更強大而又靈活的方法來管理代碼和目標(biāo)系統(tǒng)的

10、存儲空間。這里模塊化編程的意思是指程序員可以自由決定愿意把哪些代碼歸屬到哪些段,然后加以不同的處理。比如,把已經(jīng)初始化的數(shù)據(jù)放到一個段里,未初始化的數(shù)據(jù)放到另一個段里,而不是混雜的放在一起。編譯器處理段的過程1.把每個源文件都編譯成獨立的目標(biāo)文件(以后綴.obj結(jié)尾),每個目標(biāo)文件都含有自己的段。2.連接器把這些目標(biāo)文件中相同段名的部分連接在一起,生成最終的可執(zhí)行文件(以后綴.out結(jié)尾)。 7.3.2-1 已初始化的段ntext:編譯C語言中的語句時,生成的匯編指令代碼存放于此。ncinit:存放用來對全局和靜態(tài)變量初始化的常數(shù)。nconst:包含字符串常量和初始化的全局變量和靜態(tài)變量(由c

11、onst聲明)的初始化和說明。neconst:包含字符串常量和初始化的全局變量和靜態(tài)變量(由far const聲明)的初始化和說明。npinit:全局構(gòu)造器(C+)程序列表。nswitch:存放switch語句產(chǎn)生的常數(shù)表格。7.3.2-2 未初始化的段nbss:為全局變量和局部變量保留的空間,在程序上電時,.cinit空間中的數(shù)據(jù)復(fù)制出來并存儲在.bss空間中。nebss:為使用大寄存器模式時的全局變量和靜態(tài)變量預(yù)留的空間,在程序上電時,.cinit空間中的數(shù)據(jù)復(fù)制出來并存儲在.ebss中。nstack:為系統(tǒng)堆棧保留的空間,主要用于和函數(shù)傳遞變量或為局部變量分配空間。nsystem:為動態(tài)

12、存儲分配保留的空間。如果有宏函數(shù),此空間被宏函數(shù)占用,如果沒有的話,此空間保留為0。nesysmem:為動態(tài)存儲分配保留的空間。如果有far函數(shù),此空間被相應(yīng)的占用,如果沒有的化,此空間保留為0。預(yù)處理命令#pragma語法#pragma CODE_SECTION(symbol,”section name”);#pragma DATA_SECTION(symbol,”section name”);例7-1 #pragma DATA_SECTION(s,”newsect”); unsigned int s100; void main(void) 將全局數(shù)組變量s100單獨編譯成一個新的段,取名為

13、”newsect”。 段的存儲特性段存儲器類型分配的存儲空間.textROM OR RAM (FLASH)Page0.cinitROM OR RAM (FLASH)Page0.constROM OR RAM (FLASH)Page1.econstROM OR RAM (FLASH)Page1.pinitROM OR RAM (FLASH)Page0.switchROM OR RAM (FLASH)Page0/page1.bssRAMPage1.ebssRAMPage1.stackRAMPage1.systemRAMPage1.esystemRAMPage1通過#pragma CODE_SECTION定義的段ROM OR RAM (FLASH)Page0通過#pragma DATA_SECTION定義的段RAMPage17.3.3 CMD文件的編寫nCMD文件支持C語言中的塊注釋符“/*”和“*/”,但不支持行注釋符“/”。CMD文件會使用到為數(shù)不多的幾個關(guān)鍵字,下面會根據(jù)需要來介紹一些常用的關(guān)鍵字。 nCMD文件的兩大主要功能是指示存儲空間和分配段到存儲空間 。1.通過MEMORY偽指令來指示存儲空間MEMORY偽指令語法如下:MEM

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論