版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、山東建筑大學(xué)信息與電氣工程學(xué)院山東建筑大學(xué)信息與電氣工程學(xué)院2第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)主要內(nèi)容ADS 1.2集成開發(fā)環(huán)境簡介集成開發(fā)環(huán)境簡介 基于基于ARM的匯編語言程序設(shè)計的匯編語言程序設(shè)計基于基于ARM的硬件啟動程序的硬件啟動程序基于基于ARM的的C語言與匯編語言混語言與匯編語言混合編程合編程印制電路板制作簡介印制電路板制作簡介嵌入式軟件系統(tǒng)結(jié)構(gòu)嵌入式軟件系統(tǒng)結(jié)構(gòu)山東建筑大學(xué)信息與電氣工程學(xué)院3第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)l簡單的嵌入式應(yīng)用 若嵌入式系統(tǒng)的功能需求比較簡單,嵌入式系統(tǒng)軟件只需完成較簡單的監(jiān)控、驅(qū)動和處理功能
2、,則不需要嵌入式操作系統(tǒng)的支持。如基于8051的應(yīng)用:玩具、家電、汽車等的控制系統(tǒng)l復(fù)雜的嵌入式應(yīng)用 若嵌入式系統(tǒng)的功能需求比較復(fù)雜,需要圖形用戶界面、網(wǎng)絡(luò)管理、存儲管理、進(jìn)程/線程管理或需要支持二次開發(fā)等,則通過嵌入式操作系統(tǒng)的幫助,可以加快嵌入式系統(tǒng)軟件的開發(fā)進(jìn)度和可靠性。如基于ARM的應(yīng)用:手機(jī)、 PDA山東建筑大學(xué)信息與電氣工程學(xué)院4第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)l不需要使用操作系統(tǒng),基于裸機(jī)開發(fā)l系統(tǒng)上電后轉(zhuǎn)移到main函數(shù)入口,首先進(jìn)行系統(tǒng)初始化,然后進(jìn)入工作循環(huán)直到系統(tǒng)停電或者出現(xiàn)重大錯誤。void main(void) /變量、參數(shù)等的定義及說明
3、X_init( ); /系統(tǒng)初始化,一般為匯編代碼While(1) X( ); /超級循環(huán) 山東建筑大學(xué)信息與電氣工程學(xué)院5第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院6第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 用匯編語言或用匯編語言或C/C+C/C+語言編寫的程序叫語言編寫的程序叫做源程序,對應(yīng)的文件叫做源文件。做源程序,對應(yīng)的文件叫做源文件。 一個一個ARMARM工程應(yīng)由多個文件組成,其工程應(yīng)由多個文件組成,其中包括擴(kuò)展名為中包括擴(kuò)展名為.S.S的匯編語言源文件、擴(kuò)的匯編語言源文件、擴(kuò)展名為展名為.C.C的的C C語言源文件
4、,擴(kuò)展名為語言源文件,擴(kuò)展名為.CPP.CPP的的C+C+源文件、擴(kuò)展名為源文件、擴(kuò)展名為.H.H的頭文件等。的頭文件等。山東建筑大學(xué)信息與電氣工程學(xué)院7第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)連接器連接器匯編語言匯編語言源文件源文件匯編器匯編器目標(biāo)文件目標(biāo)文件C/C+語言語言源文件源文件編譯器編譯器目標(biāo)文件目標(biāo)文件頭文件頭文件C/C+庫文件庫文件可執(zhí)行文件可執(zhí)行文件 ARMARM工程的各種源文件之間的關(guān)系,工程的各種源文件之間的關(guān)系,以及最后形成可執(zhí)行文件的過程如下:以及最后形成可執(zhí)行文件的過程如下:山東建筑大學(xué)信息與電氣工程學(xué)院8第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計
5、基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)域1域2輸出段1.1輸出段1.2輸出段1.3輸入段1.1.1輸入段1.1.2輸入段1.2.1輸入段1.3.1輸入段1.3.2 ARM映像文件是一個層次性結(jié)構(gòu)的文件,包括了域(region),輸出段(output section)和輸入段(input section)。山東建筑大學(xué)信息與電氣工程學(xué)院9第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 輸入段中包含4類內(nèi)容:代碼、已經(jīng)初始化的數(shù)據(jù)、內(nèi)容初始化為0的存儲區(qū)域、未經(jīng)初始化的存儲區(qū)域。只讀的代碼段和常量被稱作RO段(ReadOnly);可讀寫的全局變量和靜態(tài)變量被稱作RW段(ReadWrite);RW段中要
6、被初始化為零的變量被稱為ZI段(ZeroInit)。 ARM連接器根據(jù)各輸入段的屬性將這些輸入段分組,再組成對應(yīng)屬性的輸出段。山東建筑大學(xué)信息與電氣工程學(xué)院10第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 所謂域,指的就是整個映像文件所處在的區(qū)域,它又分為加所謂域,指的就是整個映像文件所處在的區(qū)域,它又分為加載域和運行域。載域和運行域。 加載域就是映像文件被靜態(tài)存放的工作區(qū)域,一般來說加載域就是映像文件被靜態(tài)存放的工作區(qū)域,一般來說flashflash里的整個里的整個binbin文件所在的地址空間就是加載域文件所在的地址空間就是加載域 程序一般都不會放在程序一般都不會放在fla
7、shflash里執(zhí)行,會搬到里執(zhí)行,會搬到sdramsdram里運行工作里運行工作,它們在被搬到,它們在被搬到sdramsdram里工作所處的地址空間就是運行域。里工作所處的地址空間就是運行域。一個域通常映射到一個物理存儲器上,如一個域通常映射到一個物理存儲器上,如ROMROM和和RAMRAM等等 首先在運行時,程序中的首先在運行時,程序中的RWRW段必須重新裝載到可讀寫的段必須重新裝載到可讀寫的RAMRAM中中, ,并將并將ZIZI所在的所在的RAMRAM區(qū)域根據(jù)編譯器給出的區(qū)域根據(jù)編譯器給出的ZIZI地址及大小全地址及大小全部清零部清零 。 其次在引導(dǎo)程序完成初始化的任務(wù)后,為加快系統(tǒng)的運
8、行速其次在引導(dǎo)程序完成初始化的任務(wù)后,為加快系統(tǒng)的運行速度,度,應(yīng)該把主程序也轉(zhuǎn)移到應(yīng)該把主程序也轉(zhuǎn)移到RAM中去運行中去運行。山東建筑大學(xué)信息與電氣工程學(xué)院11第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) ImageImage文件不包含文件不包含ZIZI數(shù)據(jù),是因為數(shù)據(jù),是因為ZIZI數(shù)據(jù)都是數(shù)據(jù)都是0 0,沒必要包含,只要程序運行之前將沒必要包含,只要程序運行之前將ZIZI數(shù)據(jù)所在的數(shù)據(jù)所在的區(qū)域一律清零即可。包含進(jìn)去反而浪費存儲空間區(qū)域一律清零即可。包含進(jìn)去反而浪費存儲空間。映像中僅記錄了。映像中僅記錄了ZIZI段的位置和大小段的位置和大小 燒錄到燒錄到ROMROM中的中
9、的imageimage文件與實際運行時的文件與實際運行時的ARMARM程序程序之間并不是完全一樣的。之間并不是完全一樣的。 山東建筑大學(xué)信息與電氣工程學(xué)院12第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 4.1 ADS 1.2集成開發(fā)環(huán)境簡介 ADS ADS的英文全稱為的英文全稱為 ARM Developer SuiteARM Developer Suite,是是ARMARM公司公司推出的新一代推出的新一代ARMARM集成開發(fā)工具。集成開發(fā)工具。 ADS ADS由六個部分組成,分別是:由六個部分組成,分別是:代碼生成工具代碼生成工具: :通過編輯、匯編、鏈接生成可執(zhí)通過編輯、匯
10、編、鏈接生成可執(zhí)行代碼行代碼集成開發(fā)環(huán)境集成開發(fā)環(huán)境調(diào)試器調(diào)試器:AXD:AXD指令集模擬器指令集模擬器: :實現(xiàn)部分沒有硬件支持的調(diào)試實現(xiàn)部分沒有硬件支持的調(diào)試ARMARM開發(fā)包:包含一些底層的例程和庫開發(fā)包:包含一些底層的例程和庫ARMARM應(yīng)用庫應(yīng)用庫山東建筑大學(xué)信息與電氣工程學(xué)院13第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 4.1.1 ADS 1.2集成開發(fā)環(huán)境下工程的創(chuàng)建使用使用ADSADS創(chuàng)建工程的步驟創(chuàng)建工程的步驟 :新建工程新建工程 “File|NewFile|New” 設(shè)置目標(biāo)及其參數(shù)設(shè)置目標(biāo)及其參數(shù) “Edit|DebugEdit|Debug Setti
11、ngs Settings” 向工程中添加文件向工程中添加文件 “Project|AddProject|Add Files Files” 山東建筑大學(xué)信息與電氣工程學(xué)院14第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院15第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)1.ARM Executabl Image:用于由ARM指令的程序生成一個ELF格式的可執(zhí)行映像文件(一般情況選擇此項)。2.ARM Object Library:用于由ARM指令的程序生成一個armar格式的目標(biāo)文件庫。3.Empty Project:用于創(chuàng)建一個不包含任何
12、庫或源文件的空工程。4.Makefile Importer Wizard:用于將Visual C的nmake或GNU make文件轉(zhuǎn)換為工程文件。5.Thumb ARM Interworking Image :用于由ARM指令和Thumb指令的混和程序生成一個可執(zhí)行的ELF格式的可執(zhí)行映像文件。6.Thumb Executable image:用于由Thumb指令創(chuàng)建一個可執(zhí)行的ELF格式的映像文件。7.Thumb Object Library:用于由Thumb指令的程序生成一個armar格式的目標(biāo)文件庫。山東建筑大學(xué)信息與電氣工程學(xué)院16第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)
13、計基礎(chǔ)在這里選擇ARM Executable Image;在“Project name:”中輸入工程文件名稱(無擴(kuò)展名);點選“Location:”字段的“Set”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設(shè)置好后,點選 “確定”新出現(xiàn)的窗口中有三個標(biāo)簽頁,分別為files, link order, target,默認(rèn)的是顯示第一個標(biāo)簽頁files。山東建筑大學(xué)信息與電氣工程學(xué)院17第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)DebugRel:使用該目標(biāo),在產(chǎn)生目標(biāo)的時候,會為每一個源文件生成調(diào)試信息。Debug: 使用該目標(biāo)為每一個源文件生成最完全的調(diào)試信息。Release
14、: 使用該目標(biāo)不會生成任何調(diào)試信息。 我們使用Debug目標(biāo)。山東建筑大學(xué)信息與電氣工程學(xué)院18第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)點選Edit菜單,選擇“Debug Settings”(注意,這個選項會因用戶選擇的目標(biāo)不同而有所不同),出現(xiàn)下頁所示的對話框。 這個對話框中的設(shè)置很多,在這里只介紹一些較為常用的設(shè)置選項山東建筑大學(xué)信息與電氣工程學(xué)院19第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院20第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)Linker:None是不用任何鏈接器,如果選擇此項,則工程中的所有
15、檔案都不會被編譯器或匯編器處理 ARM Librarian表示將編譯得到的目標(biāo)文件轉(zhuǎn)換為ARM LIB文件 ARM Linker:默認(rèn)鏈接器Pre-linker:目前CodeWarrior IDE不支持該選項。Post-Linker:選擇在鏈接完成后,還要對輸出文件進(jìn)行的操作。其中一般選用FromELF,表示在鏈接生成映像文件后,再啟動FromELF命令將含有ELF格式的映像文件轉(zhuǎn)換成其它格式的文件,例如生成一個可以燒寫到Flash中去的二進(jìn)制代碼。山東建筑大學(xué)信息與電氣工程學(xué)院21第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院22第第4 4章章 A
16、RMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)對程序中使用的各種語言編譯器進(jìn)行設(shè)置,包括匯編語言,ARM狀態(tài)下的C及C語言, Thumb狀態(tài)下的C及C語言共5項。 一般情況下我們只需選對Target and Source標(biāo)簽頁下的ARM架構(gòu)設(shè)置即可,其他選項使用默認(rèn)值,對于S3C2410,其架構(gòu)為ARM920T.山東建筑大學(xué)信息與電氣工程學(xué)院23第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 本頁面的設(shè)置非常重要,因為這些選項對最終生成的文件有著直接的影響。 ARM Linker頁面中提供鏈接器的設(shè)置。在標(biāo)簽頁Output中,Linktype中提供了三種鏈接方式。 Partial方式
17、表示鏈接器只進(jìn)行部分鏈接,經(jīng)過部分鏈接生成的目標(biāo)文件,可以作為以后進(jìn)一步鏈接時的輸入文件。 Simple方式是預(yù)設(shè)的鏈接方式,也是使用最為頻繁的鏈接方式,它鏈接生成簡單的ELF格式的目標(biāo)文件,使用的是鏈接器選項中指定的位元址映像方式。 Scattered方式使得鏈接器要依據(jù)scatter格式文件中指定的地址映像,生成復(fù)雜的ELF格式的映像檔案。山東建筑大學(xué)信息與電氣工程學(xué)院24第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院25第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)我們選擇Simple方式后,就會出現(xiàn)Simple image。RO
18、 Base:設(shè)置程序代碼在執(zhí)行域存放的起始地址。預(yù)設(shè)是設(shè)置程序代碼在執(zhí)行域存放的起始地址。預(yù)設(shè)是0 x8000。這里用戶要依據(jù)自己硬件的實際。這里用戶要依據(jù)自己硬件的實際SDRAM的地址空的地址空間來修改這個地址,保證在這里填寫的地址,是程序執(zhí)行間來修改這個地址,保證在這里填寫的地址,是程序執(zhí)行時,時,SDRAM地址空間所能覆蓋的地址。例如系統(tǒng)使用地址空間所能覆蓋的地址。例如系統(tǒng)使用64M的的SDRAM,尋址空間為,尋址空間為0 x30000000-0 x33FFFFFF,可以選用可以選用0 x30000000作為程序的起始地址。作為程序的起始地址。RW Base:這個字段設(shè)置了包含這個字段設(shè)
19、置了包含RW(可讀寫)和(可讀寫)和ZI(初始(初始化為化為0)輸出段的執(zhí)行域地址。)輸出段的執(zhí)行域地址。0 x305f0000Ropi:使包含有使包含有RO輸出段的執(zhí)行位置無關(guān)。輸出段的執(zhí)行位置無關(guān)。Rwpi:使包含RW和ZI輸出段的執(zhí)行域位置無關(guān)。山東建筑大學(xué)信息與電氣工程學(xué)院26第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)Split Image:把包含:把包含RO和和RW的輸出段的加載區(qū)的輸出段的加載區(qū)域分成域分成2個加載區(qū)域:一個是包含個加載區(qū)域:一個是包含RO輸出段的區(qū)輸出段的區(qū)域,一個是包含域,一個是包含RW輸出段的區(qū)域。輸出段的區(qū)域。這個選項要求RW Base有值
20、。Relocatable:選擇這個選項保留了映像文件的重:選擇這個選項保留了映像文件的重置地址偏移量。這些偏移量為程序加載器提供了置地址偏移量。這些偏移量為程序加載器提供了有用的信息。有用的信息。在Options選項中,主要關(guān)注Image entry point字段,其他可使用默認(rèn)值。 Image entry point指定映像文件的初始進(jìn)入點地址值,當(dāng)映像文件被加載程序加載時,加載程序會跳轉(zhuǎn)到該地址處執(zhí)行。山東建筑大學(xué)信息與電氣工程學(xué)院27第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院28第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)
21、山東建筑大學(xué)信息與電氣工程學(xué)院29第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)Scatter file (分散加載描述文件)用于armlink的輸入?yún)?shù),他指定映像文件內(nèi)部各區(qū)域的加載與運行時位置。山東建筑大學(xué)信息與電氣工程學(xué)院30第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)存在復(fù)雜的地址映射:例如代碼和數(shù)據(jù)需要分開放在在多個區(qū)域。存在多種存儲器類型:例如包含 Flash,ROM,SDRAM,快速SRAM。我們根據(jù)代碼與數(shù)據(jù)的特性把他們放在不同的存儲器中,比如中斷處理部分放在快速SRAM內(nèi)部來提高響應(yīng)速度,而把不常用到的代碼放到速度比較慢的Flash內(nèi)。函數(shù)的地
22、址固定定位:可以利用Scatter file實現(xiàn)把某個函數(shù)放在固定地址,而不管其應(yīng)用程序是否已經(jīng)改變或重新編譯。利用符號確定堆與堆棧:內(nèi)存映射的I/O:采用scatter file可以實現(xiàn)把某個數(shù)據(jù)段放在精確的地址處。山東建筑大學(xué)信息與電氣工程學(xué)院31第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)SDRAM加載時域RW屬性內(nèi)容RO屬性內(nèi)容加載時地址映射關(guān)系FLASHRO屬性內(nèi)容RW屬性內(nèi)容ZI屬性內(nèi)容ZI屬性的運行時域RW屬性的運行時域RO屬性的運行時域運行時地址映射關(guān)系0 x000000000 xA0100000山東建筑大學(xué)信息與電氣工程學(xué)院32第第4 4章章 ARMARM系統(tǒng)
23、硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)Scatter文件LOAD 0 x0;定義加載時域,起始地址Flash中0 x0 ROM_EXEC +0 ;定義第一個運行時域,起始地址和加載時;域相同 boot.o(boot,+FIRST);boot.o位于該域開頭*(+RO);RO屬性的內(nèi)容連續(xù)放置RAM 0 xA0100000 0 x40000 ;定義第二個運行時域 ;地址0 xA0100000,長度 ;0 x40000,其中包含RW和ZI數(shù)據(jù) *(+RW,+ZI)山東建筑大學(xué)信息與電氣工程學(xué)院33第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)在在Linker下還有一個下還有一個ARM from
24、 ELF,如,如下頁下頁圖所示。圖所示。只有在只有在Target設(shè)置中選擇了設(shè)置中選擇了Post-linker,才可以使用,才可以使用該選項。該選項。在在Output format下拉選單中,為用戶提供了多種可下拉選單中,為用戶提供了多種可以轉(zhuǎn)換的目標(biāo)格式。以轉(zhuǎn)換的目標(biāo)格式。在在Output file name字段輸入期望生成的輸出文件存字段輸入期望生成的輸出文件存放的路徑,或通過點放的路徑,或通過點Choose按鈕選擇按鈕選擇 經(jīng)過以上步驟,設(shè)置基本完畢。經(jīng)過以上步驟,設(shè)置基本完畢。山東建筑大學(xué)信息與電氣工程學(xué)院34第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息
25、與電氣工程學(xué)院35第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)Factory Settings恢復(fù)出廠默認(rèn)設(shè)置Revert 恢復(fù)到上一次保存的狀態(tài).Import Panel 導(dǎo)入一個XML文件 .Export Panel 輸出一個XML文件山東建筑大學(xué)信息與電氣工程學(xué)院36第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 可以直接添加已有的文件,也可以動手寫文可以直接添加已有的文件,也可以動手寫文件,然后加入工程中。件,然后加入工程中。 為工程新增程序常用的方法有兩種,可以使為工程新增程序常用的方法有兩種,可以使用右鍵在用右鍵在files界面上單擊選擇界面上單擊選擇
26、“Add Files”,也可以在也可以在“Project”菜單選項中,選擇菜單選項中,選擇“Add Files”,這兩種方法都會打開文件瀏覽對話框,這兩種方法都會打開文件瀏覽對話框,用戶可以把已經(jīng)存在的文件新增到工程中來。用戶可以把已經(jīng)存在的文件新增到工程中來。當(dāng)選好要新增的文件時,會出現(xiàn)一個對話框,當(dāng)選好要新增的文件時,會出現(xiàn)一個對話框,詢問用戶把文件新增到何類目標(biāo)中,在這里,詢問用戶把文件新增到何類目標(biāo)中,在這里,我們選擇我們選擇Debug目標(biāo)。目標(biāo)。山東建筑大學(xué)信息與電氣工程學(xué)院37第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 點選CodeWarrior IDE的菜單Pr
27、oject下的make菜單,就可以對工程進(jìn)行編譯和鏈接了。 由于我們使用的是Debug目標(biāo),所以生成的最終文件都在該目錄下。進(jìn)入到Debug目錄中去,會看到make后生成的映像文件和二進(jìn)制文件,映像文件用于調(diào)試,二進(jìn)制文件可以下載到SDRAM中執(zhí)行。山東建筑大學(xué)信息與電氣工程學(xué)院38第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)4.1.2 ADS1.2集成開發(fā)環(huán)境下進(jìn)行仿真和調(diào)試的方法集成開發(fā)環(huán)境下進(jìn)行仿真和調(diào)試的方法在在CodewarriorCodewarrior中,如果中,如果工程編譯成功,將產(chǎn)生工程編譯成功,將產(chǎn)生一個后綴為一個后綴為. .axfaxf的映像文的映像文件,接
28、下來就可以使用件,接下來就可以使用AXD DebuggerAXD Debugger進(jìn)行調(diào)試。進(jìn)行調(diào)試。 常用調(diào)試按鈕常用調(diào)試按鈕 山東建筑大學(xué)信息與電氣工程學(xué)院39第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)AXD調(diào)試器本身是一個軟件,用戶通過這個軟件可以對包含有調(diào)試信息的、正在運行的可執(zhí)行代碼進(jìn)行變量的查看、斷點的設(shè)置、單步執(zhí)行等調(diào)試操作。在ARM體系中,常見調(diào)試方式有以下幾種:ARMulator:在電腦主機(jī)上利用軟件模擬仿真Angel:運行在目標(biāo)板上的監(jiān)控程序,通過通訊線與主機(jī)鏈接Multi-ICE:獨立的硬件調(diào)試板山東建筑大學(xué)信息與電氣工程學(xué)院40第第4 4章章 ARMA
29、RM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院41第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 啟動AXD可使用兩種方法,一是從“開始程序”啟動,然后選擇File Load ImageLoad Image;二是直接在CodeWarrior下從“ProjectDebug”啟動,程序?qū)⒆詣友b載當(dāng)前工程的鏡像文件。 選擇 ExecuteExecute Go Go (或者按 F5),相關(guān)文件的處理器視圖被打開,并在缺省斷點處停止 若要重復(fù)執(zhí)行程序,選擇File Reload Current Image山東建筑大學(xué)信息與電氣工程學(xué)院42第第4 4章章 ARMARM系統(tǒng)
30、硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)File 文件Search 查找Processor Views僅針對當(dāng)前所選處理器的觀察窗口System Views針對整個系統(tǒng)的觀察窗口Execute 控制鏡像文件的執(zhí)行, 設(shè)置 watchpoints, 設(shè)置或刪除 breakpoints.Options 設(shè)置反匯編模式 配置調(diào)試器用戶界面,配置 target system, 和處理器屬性 maintain a list of directories that are searched to find source files enable or disable the display of the status
31、 barWindow 窗口顯示控制窗口顯示控制Help 幫助山東建筑大學(xué)信息與電氣工程學(xué)院43第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)Options Configure Target. 山東建筑大學(xué)信息與電氣工程學(xué)院44第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)添加斷點的三種方法: 右鍵點擊行,從彈出Menu中選 Toggle Toggle BreakpointBreakpoint 左鍵點擊行,按F9, 雙擊行的Margin部分選擇 System Views BreakpointsSystem Views Breakpoints 編輯斷點按F5 恢復(fù)執(zhí)行加
32、斷點后的程序山東建筑大學(xué)信息與電氣工程學(xué)院45第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)主要內(nèi)容ADS 1.2集成開發(fā)環(huán)境簡介集成開發(fā)環(huán)境簡介 基于基于ARM的匯編語言程序設(shè)計的匯編語言程序設(shè)計基于基于ARM的硬件啟動程序的硬件啟動程序基于基于ARM的的C語言與匯編語言混語言與匯編語言混合編程合編程印制電路板制作簡介印制電路板制作簡介山東建筑大學(xué)信息與電氣工程學(xué)院46第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 4.2.1 ARM匯編器支持的偽指令 偽指令是偽指令是ARMARM匯編語言程序中的一些特殊指令助記符,這匯編語言程序中的一些特殊指令助記符,這些助記符
33、與指令系統(tǒng)的助記符不同,沒有相對應(yīng)的操作碼,些助記符與指令系統(tǒng)的助記符不同,沒有相對應(yīng)的操作碼,它們所完成的操作稱為偽操作。它們所完成的操作稱為偽操作。偽指令在源程序中的作用是為完成匯編程序做各種準(zhǔn)備工偽指令在源程序中的作用是為完成匯編程序做各種準(zhǔn)備工作的,這些偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,作的,這些偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,偽指令的使命就完成了。偽指令的使命就完成了。ARMARM匯編器支持的偽指令包括:符號定義偽指令、數(shù)據(jù)定匯編器支持的偽指令包括:符號定義偽指令、數(shù)據(jù)定義偽指令、匯編控制偽指令、宏指令以及其他偽指令。義偽指令、匯編控制偽指令、宏指令以及其他偽指令。
34、 山東建筑大學(xué)信息與電氣工程學(xué)院47第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)分類分類指令指令舉例舉例符號定義符號定義偽指令偽指令GBLA/GBLL/GBLS/LCLA/LCLL/LCLS/SETA/SETL/SETS/RLISTGBLA Test1;定義一個名為定義一個名為Test1的全局?jǐn)?shù)值字變量的全局?jǐn)?shù)值字變量數(shù)據(jù)定義數(shù)據(jù)定義偽指令偽指令DCB/DCW/DCD/ DCFD/DCFS/DCQ/ SPACE/MAP/ FIELDstr DCB “This is a test”;分配起始地址為分配起始地址為str的一段連續(xù)字節(jié)存儲的一段連續(xù)字節(jié)存儲單元存放字符串單元存放字符串
35、匯編控制匯編控制偽指令偽指令I(lǐng) F / E L S E / E N D I F / WHILE/WEND/IF TestTRUE ;如果條件成立如果條件成立 指令序列指令序列1 ;執(zhí)行指令序列執(zhí)行指令序列1ELSE ;否則執(zhí)行指令序列否則執(zhí)行指令序列2 指令序列指令序列2ENDIF宏指令宏指令MACRO/MEND/ MEXITMACRO Seg指令序列指令序列MEND;定義一個名為定義一個名為Seg的宏指令的宏指令其他其他偽指令偽指令A(yù)REA/ALIGN/CODE16/CODE32/ENTRY/END/EQU/EXPORT/GLOBAL/IMPORT/EXTERN/GET/INCLUDE/IN
36、CBINAREA Init,CODE,READONLY,ALIGN=3;定義了一個代碼段,段名為定義了一個代碼段,段名為Init,屬性屬性為只讀,并指定其后的指令為為只讀,并指定其后的指令為8(23)字)字節(jié)對齊。節(jié)對齊。ARMARM匯編器支持的常見偽指令匯編器支持的常見偽指令 山東建筑大學(xué)信息與電氣工程學(xué)院48第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 符號定義偽指令用于定義符號定義偽指令用于定義ARM匯編程序中的變量、對匯編程序中的變量、對變量賦值以及定義寄存器的別名等操作。常見的數(shù)據(jù)變量定變量賦值以及定義寄存器的別名等操作。常見的數(shù)據(jù)變量定義偽指令有如下幾種:義偽指令有
37、如下幾種: (1)GBLA、GBLL 和和GBLS 語法格式:語法格式:GBLA ( GBLL 或或 GBLS ) 全局變量名全局變量名 GBLA 、 GBLL 和和 GBLS 偽指令用于定義全局變量,并將偽指令用于定義全局變量,并將其初始化。其中:其初始化。其中: GBLA用于定義一個全局的用于定義一個全局的數(shù)字?jǐn)?shù)字變量,并初始化為變量,并初始化為 0 GBLL用于定義一個全局的用于定義一個全局的邏輯邏輯變量,并初始化變量,并初始化F(假假) GBLS用于定義一個全局的用于定義一個全局的字符串字符串變量,并初始化為空變量,并初始化為空 GBLA Test1 ;定義一個全局的數(shù)字變量,變量名為
38、;定義一個全局的數(shù)字變量,變量名為 Test1 山東建筑大學(xué)信息與電氣工程學(xué)院49第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(2)LCLA、LCLL 和和LCLS 語法格式:語法格式: LCLA ( LCLL 或或 LCLS ) 局部變量名局部變量名 LCLA 、 LCLL 和和 LCLS 偽指令用于定義一個偽指令用于定義一個 ARM 程序程序中的局部變量,并將其初始化。其中:中的局部變量,并將其初始化。其中: LCLA偽指令用于定義一個局部的偽指令用于定義一個局部的數(shù)字?jǐn)?shù)字變量,并初始化為變量,并初始化為 0 ; LCLL偽指令用于定義一個局部的偽指令用于定義一個局部的邏輯
39、邏輯變量,并初始化為變量,并初始化為 F(假);(假); LCLS 偽指令用于定義一個局部的偽指令用于定義一個局部的字符串字符串變量,并初始化變量,并初始化為空;為空; LCLL Test5 ;聲明一個局部的邏輯變量,變量名為;聲明一個局部的邏輯變量,變量名為 Test5 山東建筑大學(xué)信息與電氣工程學(xué)院50第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(3)SETA、SETL 和和SETS 語法格式:變量名語法格式:變量名 SETA ( SETL 或或 SETS ) 表達(dá)式表達(dá)式 偽指令偽指令 SETA 、 SETL 、 SETS 用于給一個已經(jīng)定義的全用于給一個已經(jīng)定義的全局變
40、量或局部變量賦值。局變量或局部變量賦值。 SETA 偽指令用于給一個偽指令用于給一個數(shù)學(xué)數(shù)學(xué)變量賦值;變量賦值; SETL 偽指令用于給一個偽指令用于給一個邏輯邏輯變量賦值;變量賦值; SETS 偽指令用于給一個偽指令用于給一個字符串字符串變量賦值;變量賦值; Test3 SETA 0 xaa ;將該變量賦值為;將該變量賦值為 0 xaa Test4 SETL TRUE ;將該變量賦值為真;將該變量賦值為真 Test6 SETS “ Testing ” ;將該變量賦值為;將該變量賦值為 “ Testing ” 山東建筑大學(xué)信息與電氣工程學(xué)院51第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬
41、件設(shè)計基礎(chǔ)(4)RLIST 語法格式:名稱語法格式:名稱 RLIST 寄存器列表寄存器列表 RLIST 偽指令可用于對一個通用寄存器列表定偽指令可用于對一個通用寄存器列表定義名稱,使用該偽指令定義的名稱可在義名稱,使用該偽指令定義的名稱可在 ARM 指指令令 LDM/STM 中使用。在中使用。在 LDM/STM 指令中,列指令中,列表中的寄存器訪問次序為表中的寄存器訪問次序為根據(jù)寄存器的編號由低根據(jù)寄存器的編號由低到高到高,而,而與列表中的寄存器排列次序無關(guān)與列表中的寄存器排列次序無關(guān)。 RegList RLIST R0-R5 , R8 , R10 ;將寄存;將寄存器列表名稱定義為器列表名稱定
42、義為 RegList 。 山東建筑大學(xué)信息與電氣工程學(xué)院52第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲單元,數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲單元,同時可完成已分配存儲單元的初始化。常見有如下幾種:同時可完成已分配存儲單元的初始化。常見有如下幾種: (1) DCB :用于分配一片連續(xù)的:用于分配一片連續(xù)的字節(jié)字節(jié)存儲單元并用偽指令中存儲單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為指定的表達(dá)式初始化。其中,表達(dá)式可以為 0 255 的數(shù)的數(shù)字或字符串字或字符串 . 語法格式:語法格式: 標(biāo)號標(biāo)號 DCB 表達(dá)式表達(dá)式
43、 Str DCB “ This is a test ! ” (2) DCW(或(或DCWU)用于分配一片連續(xù)的)用于分配一片連續(xù)的半字半字存儲單元并存儲單元并用偽指令中指定的表達(dá)式初始化。用偽指令中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號標(biāo)號 DCW (或(或 DCWU ) 表達(dá)式表達(dá)式 DataTest DCW 1 , 2 , 3 山東建筑大學(xué)信息與電氣工程學(xué)院53第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(3)DCD(或(或DCDU)用于分配一片連續(xù)的)用于分配一片連續(xù)的字字存儲單元并用存儲單元并用偽指令中指定的表達(dá)式初始化。偽指令中指定的表達(dá)式初始化。 語法格式
44、:語法格式: 標(biāo)號標(biāo)號 DCD (或(或 DCDU ) 表達(dá)式表達(dá)式 DataTest DCD 4 , 5 , 6 (4)DCFD(或(或DCFDU)用于為)用于為雙精度的浮點數(shù)雙精度的浮點數(shù)分配一片連分配一片連續(xù)的續(xù)的雙字雙字存儲單元并用偽指令中指定的表達(dá)式初始化。存儲單元并用偽指令中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號標(biāo)號 DCFD (或(或 DCFDU ) 表達(dá)式表達(dá)式 FDataTest DCFD 2E115 , -5E7 (5)DCFS(或(或DCFSU)用于為)用于為單精度的浮點數(shù)單精度的浮點數(shù)分配一片連分配一片連續(xù)的續(xù)的字字存儲單元并用偽指令中指定的表達(dá)式初始化。存儲
45、單元并用偽指令中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號標(biāo)號 DCFS (或(或 DCFSU ) 表達(dá)式表達(dá)式山東建筑大學(xué)信息與電氣工程學(xué)院54第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) (6)DCQ(或或DCQU)用于分配一片用于分配一片以以 8 個字節(jié)為單位個字節(jié)為單位的連續(xù)存儲區(qū)域并用偽指令的連續(xù)存儲區(qū)域并用偽指令中指定的表達(dá)式初始化。中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號標(biāo)號 DCQ (或(或 DCQU ) 表達(dá)式表達(dá)式 (7) SPACE 用于分配一片連續(xù)的存儲區(qū)域并用于分配一片連續(xù)的存儲區(qū)域并初始化為初始化為 0 。其中,表達(dá)式為要分配。其中,
46、表達(dá)式為要分配的字節(jié)數(shù)。的字節(jié)數(shù)。SPACE 也可用也可用 “ ” 代替。代替。 語法格式:語法格式: 標(biāo)號標(biāo)號 SPACE 表達(dá)式表達(dá)式 DataSpace SPACE 100 (8)MAP 用于定義用于定義一個結(jié)構(gòu)化的內(nèi)存表的首地址一個結(jié)構(gòu)化的內(nèi)存表的首地址。 MAP 也可用也可用 “ ” 代替。代替。 語法格式:語法格式: MAP 表達(dá)式表達(dá)式 ,基址寄存器,基址寄存器 (9)FILED 用于定義用于定義一個結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域一個結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域。 可用可用 “ # ” 代替。代替。 語法格式:標(biāo)號語法格式:標(biāo)號 FIELD 表達(dá)式表達(dá)式 MAP 0 x100 ;定義結(jié)構(gòu)化內(nèi)存
47、表首地址的值為;定義結(jié)構(gòu)化內(nèi)存表首地址的值為 0 x100 。 A FIELD 16 ;定義;定義 A 的長度為的長度為 16 字節(jié),位置為字節(jié),位置為 0 x100 B FIELD 32 ;定義;定義 B 的長度為的長度為 32 字節(jié),位置為字節(jié),位置為 0 x110 S FIELD 256 ;定義;定義 S 的長度為的長度為 256 字節(jié),位置為字節(jié),位置為 0 x130 山東建筑大學(xué)信息與電氣工程學(xué)院55第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)1、 IF、ELSE、ENDIF 根據(jù)條件的成立與否決定根據(jù)條件的成立與否決定是否執(zhí)行是否執(zhí)行某個指令序列。某個指令序列。 G
48、BLL Test ;聲明一個全局的邏輯變量,變量名為;聲明一個全局的邏輯變量,變量名為 Test IF Test = TRUE 指令序列指令序列 1 ELSE 指令序列指令序列 2 ENDIF 2、 WHILE、WEND 根據(jù)條件的成立與否決定根據(jù)條件的成立與否決定是否循環(huán)執(zhí)行是否循環(huán)執(zhí)行某個指令序列某個指令序列 GBLA Counter ;聲明一個全局的數(shù)學(xué)變量,變量名為;聲明一個全局的數(shù)學(xué)變量,變量名為 Counter Counter SETA 3 ;由變量;由變量Counter 控制循環(huán)次數(shù)控制循環(huán)次數(shù) WHILE Counter 10 指令序列指令序列 WEND 山東建筑大學(xué)信息與電氣
49、工程學(xué)院56第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(1) MACRO、MEND 語法格式:語法格式: MACRO $ 標(biāo)號標(biāo)號 宏名宏名 $ 參數(shù)參數(shù) 1 , $ 參數(shù)參數(shù) 2 , 指令序列指令序列 MEND MACRO、MEND偽指令可以偽指令可以將一段代碼定義為一個將一段代碼定義為一個整體整體,然后就可以在程序中通過宏指令多次調(diào)用該段代,然后就可以在程序中通過宏指令多次調(diào)用該段代碼。碼。(2) MEXIT 語法格式:語法格式: MEXIT MEXIT 用于用于從宏定義中跳轉(zhuǎn)出去從宏定義中跳轉(zhuǎn)出去。 山東建筑大學(xué)信息與電氣工程學(xué)院57第第4 4章章 ARMARM系統(tǒng)硬件
50、設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)1.宏定義宏定義MACRO$HandlerLabel HANDLER $HandleLabel ;宏的;宏的名稱為名稱為HANDLER,有,有1個參數(shù)個參數(shù)$HandleLabel$HandlerLabelsub sp,sp,#4 stmfd sp!,r0 ldr r0,=$HandleLabelldr r0,r0 str r0,sp,#4 ldmfd sp!,r0,pc MEND宏定義實例山東建筑大學(xué)信息與電氣工程學(xué)院58第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)2.異常跳轉(zhuǎn)語句異常跳轉(zhuǎn)語句b HandlerIRQ ;handler for IRQ
51、interrupt3.調(diào)用宏調(diào)用宏 HandlerIRQ HANDLER HandleIRQ4.展開宏展開宏HandlerIRQsub sp,sp,#4 ; 預(yù)留一個字的存儲空間預(yù)留一個字的存儲空間 stmfd sp!,r0 ; r0 入棧入棧 ldr r0,=HandleIRQ ; HandleIRQ 為預(yù)留的為預(yù)留的4字節(jié)標(biāo)號地址字節(jié)標(biāo)號地址 ldr r0,r0 ; str r0,sp,#4 ; ldmfd sp!,r0,pc ;山東建筑大學(xué)信息與電氣工程學(xué)院59第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(1)AREA 語法格式:語法格式: AREA 段名段名 屬性屬性
52、1 ,屬性,屬性 2 , AREA 偽指令用于偽指令用于定義一個代碼段或數(shù)據(jù)段定義一個代碼段或數(shù)據(jù)段。其中,段。其中,段名若以數(shù)字開頭,則該段名需用名若以數(shù)字開頭,則該段名需用 “ | ” 括起來,如括起來,如 |1_test| 。屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個屬屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個屬性用逗號分隔。性用逗號分隔。AREA Init , CODE , READONLY ; 該偽指令定義了一該偽指令定義了一個代碼段,段名為個代碼段,段名為 Init ,屬性為只讀,屬性為只讀 AREA DataRAM , DATA,READWRITE ;聲明一數(shù)據(jù)段,聲
53、明一數(shù)據(jù)段,名為名為DataRAM 山東建筑大學(xué)信息與電氣工程學(xué)院60第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(2) CODE16、CODE32 通知編譯器,其后的指令序列為通知編譯器,其后的指令序列為 16 位的位的 Thumb 指令或指令或 32 位的位的 ARM 指令。指令。 語法格式:語法格式: CODE16 (或(或 CODE32 ) AREA Init , CODE , READONLY CODE32 ;通知編譯器其后的指令為;通知編譯器其后的指令為 32 位的位的 ARM 指令指令 LDR R0 , NEXT 1 ;將跳轉(zhuǎn)地址放入寄存器;將跳轉(zhuǎn)地址放入寄存器
54、R0 BX R0 ;程序跳轉(zhuǎn)到新的位置執(zhí)行,并將處理器切換到;程序跳轉(zhuǎn)到新的位置執(zhí)行,并將處理器切換到 Thumb 工作狀態(tài)工作狀態(tài) CODE16 ;通知編譯器其后的指令為;通知編譯器其后的指令為 16 位的位的 Thumb 指令指令 NEXT LDR R3,0 x3FF END ;程序結(jié)束;程序結(jié)束 山東建筑大學(xué)信息與電氣工程學(xué)院61第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(3) ALIGN 通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對齊對齊方式方式 | 。表達(dá)式的值用于指定對齊方式,可能的表達(dá)式的值用于指定對齊方式,可能的取
55、值為取值為 2 的冪的冪,如,如 1 、 2 、 4 、 8 、 16 等。等。 語法格式:語法格式: ALIGN 表達(dá)式表達(dá)式 , 偏移量偏移量 AREA Init , CODE , READONLY , ALIEN 3 ;指定后面的指;指定后面的指令為令為 8 字節(jié)對齊。字節(jié)對齊。 指令序列指令序列 END (4) ENTRY 用于用于指定匯編程序的入口點指定匯編程序的入口點。在一個完整的匯編程序中至少。在一個完整的匯編程序中至少要有一個要有一個 ENTRY (也可以有多個,當(dāng)有多個(也可以有多個,當(dāng)有多個 ENTRY 時,程序的真正入時,程序的真正入口點由鏈接器指定),但在一個源文件里最
56、多只能有一個口點由鏈接器指定),但在一個源文件里最多只能有一個 ENTRY (可以(可以沒有)。沒有)。 語法格式:語法格式: ENTRY AREA Init , CODE , READONLY ENTRY ;指定應(yīng)用程序的入口點;指定應(yīng)用程序的入口點 山東建筑大學(xué)信息與電氣工程學(xué)院62第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(5) END 用于通知編譯器已經(jīng)到了源程序的用于通知編譯器已經(jīng)到了源程序的結(jié)尾結(jié)尾。 語法格式:語法格式: END (6) EXPORT(或(或GLOBAL)用于在程序中聲明一個用于在程序中聲明一個全局全局的標(biāo)號的標(biāo)號 語法格式:語法格式: EXPO
57、RT 標(biāo)號標(biāo)號 (7) IMPORT 和和EXTERN 用于通知編譯器要在當(dāng)前源文件中使用于通知編譯器要在當(dāng)前源文件中使用的標(biāo)號在其他的源文件中定義用的標(biāo)號在其他的源文件中定義 語法格式:語法格式: IMPORT 標(biāo)號標(biāo)號 AREA Init , CODE , READONLY IMPORT Main ;通知編譯器當(dāng)前文件要引用;通知編譯器當(dāng)前文件要引用Main,Main 在在其他源文件中定義其他源文件中定義 END 山東建筑大學(xué)信息與電氣工程學(xué)院63第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ)(8) GET(或(或INCLUDE)將一個源文件包含到當(dāng)前的源文件中將一個源文件包
58、含到當(dāng)前的源文件中 語法格式:語法格式: GET 文件名文件名 (9) INCBIN 用于將一個目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文用于將一個目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件中件中 語法格式:語法格式:INCBIN 文件名文件名 INCBIN a1.dat ;通知編譯器當(dāng)前源文件包含文件;通知編譯器當(dāng)前源文件包含文件a1.dat (10) RN 給一個寄存器定義一個給一個寄存器定義一個別名別名 語法格式:語法格式: 名稱名稱 RN 表達(dá)式表達(dá)式 Temp RN R0 ;將;將R0 定義一個別名定義一個別名Temp (11) EQU 為常量或標(biāo)號定義為常量或標(biāo)號定義別名別名山東建筑大學(xué)信息與電
59、氣工程學(xué)院64第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 4.2.2 基于ARM的匯編語言語句格式 ARMARM匯編語言的語句格式匯編語言的語句格式 標(biāo)號標(biāo)號 指令或偽指令指令或偽指令 ; ;注釋注釋 標(biāo)號是代表地址的符號,標(biāo)號是代表地址的符號,必須在一行的頂格書寫必須在一行的頂格書寫,其后不能添加,其后不能添加冒號冒號“:”,而,而所有指令均不能頂格書寫所有指令均不能頂格書寫。ARMARM匯編語言對標(biāo)識符的匯編語言對標(biāo)識符的大小寫敏感大小寫敏感,書寫標(biāo)號及指令時字母大,書寫標(biāo)號及指令時字母大小寫要一致。小寫要一致。在在ARMARM匯編語言中,匯編語言中,ARMARM指令、偽
60、指令、寄存器名等指令、偽指令、寄存器名等可以全部大可以全部大寫或者全部小寫寫或者全部小寫,但不能大小寫混合使用。,但不能大小寫混合使用。為了使源文件易讀,可以將一條長的指令通過使用反為了使源文件易讀,可以將一條長的指令通過使用反斜杠字符斜杠字符“ ”將其分成幾行書寫。將其分成幾行書寫。每行從第一個每行從第一個分號開始到本行結(jié)束為注釋分號開始到本行結(jié)束為注釋內(nèi)容,所有的注釋內(nèi)容內(nèi)容,所有的注釋內(nèi)容均被匯編器忽略。均被匯編器忽略。山東建筑大學(xué)信息與電氣工程學(xué)院65第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計基礎(chǔ)系統(tǒng)硬件設(shè)計基礎(chǔ) 4.2.3 ARM匯編語言程序的基本結(jié)構(gòu) 在在ARMARM匯編語言程序中,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版家畜養(yǎng)殖保險產(chǎn)品定制及銷售合同3篇
- 2025年度智能門禁系統(tǒng)與消防報警系統(tǒng)聯(lián)動合同4篇
- 二零二五版跨境電商運營服務(wù)戰(zhàn)略合作協(xié)議3篇
- 2025年度新型門窗及欄桿研發(fā)與生產(chǎn)合作協(xié)議4篇
- 2025年高端個人財富管理代客理財協(xié)議3篇
- 2025年度個人經(jīng)營性貸款擔(dān)保保證合同3篇
- 2025版綠色建筑地坪材料供應(yīng)合同3篇
- 2025年度共享經(jīng)濟(jì)門面房租賃與平臺建設(shè)合同3篇
- 個人汽車購買資助合同2024年模板版B版
- XX市重點蓄水池施工合作合同版
- 2025水利云播五大員考試題庫(含答案)
- 中藥飲片驗收培訓(xùn)
- DB34T 1831-2013 油菜收獲與秸稈粉碎機(jī)械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 創(chuàng)傷處理理論知識考核試題及答案
- 稅前工資反算表模板
- 2019級水電站動力設(shè)備專業(yè)三年制人才培養(yǎng)方案
- 肝素誘導(dǎo)的血小板減少癥培訓(xùn)課件
- 抖音認(rèn)證承諾函
- 高等數(shù)學(xué)(第二版)
- 四合一體系基礎(chǔ)知識培訓(xùn)課件
- ICD-9-CM-3手術(shù)與操作國家臨床版亞目表
評論
0/150
提交評論