




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、山東建筑大學(xué)信息與電氣工程學(xué)院山東建筑大學(xué)信息與電氣工程學(xué)院2第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)主要內(nèi)容ADS 1.2集成開發(fā)環(huán)境簡介集成開發(fā)環(huán)境簡介 基于基于ARM的匯編語言程序設(shè)計(jì)的匯編語言程序設(shè)計(jì)基于基于ARM的硬件啟動(dòng)程序的硬件啟動(dòng)程序基于基于ARM的的C語言與匯編語言混語言與匯編語言混合編程合編程印制電路板制作簡介印制電路板制作簡介嵌入式軟件系統(tǒng)結(jié)構(gòu)嵌入式軟件系統(tǒng)結(jié)構(gòu)山東建筑大學(xué)信息與電氣工程學(xué)院3第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)l簡單的嵌入式應(yīng)用 若嵌入式系統(tǒng)的功能需求比較簡單,嵌入式系統(tǒng)軟件只需完成較簡單的監(jiān)控、驅(qū)動(dòng)和處理功能
2、,則不需要嵌入式操作系統(tǒng)的支持。如基于8051的應(yīng)用:玩具、家電、汽車等的控制系統(tǒng)l復(fù)雜的嵌入式應(yīng)用 若嵌入式系統(tǒng)的功能需求比較復(fù)雜,需要圖形用戶界面、網(wǎng)絡(luò)管理、存儲(chǔ)管理、進(jìn)程/線程管理或需要支持二次開發(fā)等,則通過嵌入式操作系統(tǒng)的幫助,可以加快嵌入式系統(tǒng)軟件的開發(fā)進(jìn)度和可靠性。如基于ARM的應(yīng)用:手機(jī)、 PDA山東建筑大學(xué)信息與電氣工程學(xué)院4第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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)重大錯(cuò)誤。void main(void) /變量、參數(shù)等的定義及說明
3、X_init( ); /系統(tǒng)初始化,一般為匯編代碼While(1) X( ); /超級(jí)循環(huán) 山東建筑大學(xué)信息與電氣工程學(xué)院5第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院6第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 用匯編語言或用匯編語言或C/C+C/C+語言編寫的程序叫語言編寫的程序叫做源程序,對(duì)應(yīng)的文件叫做源文件。做源程序,對(duì)應(yīng)的文件叫做源文件。 一個(gè)一個(gè)ARMARM工程應(yīng)由多個(gè)文件組成,其工程應(yīng)由多個(gè)文件組成,其中包括擴(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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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è)計(jì)
5、基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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映像文件是一個(gè)層次性結(jié)構(gòu)的文件,包括了域(region),輸出段(output section)和輸入段(input section)。山東建筑大學(xué)信息與電氣工程學(xué)院9第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 輸入段中包含4類內(nèi)容:代碼、已經(jīng)初始化的數(shù)據(jù)、內(nèi)容初始化為0的存儲(chǔ)區(qū)域、未經(jīng)初始化的存儲(chǔ)區(qū)域。只讀的代碼段和常量被稱作RO段(ReadOnly);可讀寫的全局變量和靜態(tài)變量被稱作RW段(ReadWrite);RW段中要
6、被初始化為零的變量被稱為ZI段(ZeroInit)。 ARM連接器根據(jù)各輸入段的屬性將這些輸入段分組,再組成對(duì)應(yīng)屬性的輸出段。山東建筑大學(xué)信息與電氣工程學(xué)院10第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 所謂域,指的就是整個(gè)映像文件所處在的區(qū)域,它又分為加所謂域,指的就是整個(gè)映像文件所處在的區(qū)域,它又分為加載域和運(yùn)行域。載域和運(yùn)行域。 加載域就是映像文件被靜態(tài)存放的工作區(qū)域,一般來說加載域就是映像文件被靜態(tài)存放的工作區(qū)域,一般來說flashflash里的整個(gè)里的整個(gè)binbin文件所在的地址空間就是加載域文件所在的地址空間就是加載域 程序一般都不會(huì)放在程序一般都不會(huì)放在fla
7、shflash里執(zhí)行,會(huì)搬到里執(zhí)行,會(huì)搬到sdramsdram里運(yùn)行工作里運(yùn)行工作,它們?cè)诒话岬?,它們?cè)诒话岬絪dramsdram里工作所處的地址空間就是運(yùn)行域。里工作所處的地址空間就是運(yùn)行域。一個(gè)域通常映射到一個(gè)物理存儲(chǔ)器上,如一個(gè)域通常映射到一個(gè)物理存儲(chǔ)器上,如ROMROM和和RAMRAM等等 首先在運(yùn)行時(shí),程序中的首先在運(yùn)行時(shí),程序中的RWRW段必須重新裝載到可讀寫的段必須重新裝載到可讀寫的RAMRAM中中, ,并將并將ZIZI所在的所在的RAMRAM區(qū)域根據(jù)編譯器給出的區(qū)域根據(jù)編譯器給出的ZIZI地址及大小全地址及大小全部清零部清零 。 其次在引導(dǎo)程序完成初始化的任務(wù)后,為加快系統(tǒng)的運(yùn)
8、行速其次在引導(dǎo)程序完成初始化的任務(wù)后,為加快系統(tǒng)的運(yùn)行速度,度,應(yīng)該把主程序也轉(zhuǎn)移到應(yīng)該把主程序也轉(zhuǎn)移到RAM中去運(yùn)行中去運(yùn)行。山東建筑大學(xué)信息與電氣工程學(xué)院11第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) ImageImage文件不包含文件不包含ZIZI數(shù)據(jù),是因?yàn)閿?shù)據(jù),是因?yàn)閆IZI數(shù)據(jù)都是數(shù)據(jù)都是0 0,沒必要包含,只要程序運(yùn)行之前將沒必要包含,只要程序運(yùn)行之前將ZIZI數(shù)據(jù)所在的數(shù)據(jù)所在的區(qū)域一律清零即可。包含進(jìn)去反而浪費(fèi)存儲(chǔ)空間區(qū)域一律清零即可。包含進(jìn)去反而浪費(fèi)存儲(chǔ)空間。映像中僅記錄了。映像中僅記錄了ZIZI段的位置和大小段的位置和大小 燒錄到燒錄到ROMROM中的中
9、的imageimage文件與實(shí)際運(yùn)行時(shí)的文件與實(shí)際運(yùn)行時(shí)的ARMARM程序程序之間并不是完全一樣的。之間并不是完全一樣的。 山東建筑大學(xué)信息與電氣工程學(xué)院12第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 4.1 ADS 1.2集成開發(fā)環(huán)境簡介 ADS ADS的英文全稱為的英文全稱為 ARM Developer SuiteARM Developer Suite,是是ARMARM公司公司推出的新一代推出的新一代ARMARM集成開發(fā)工具。集成開發(fā)工具。 ADS ADS由六個(gè)部分組成,分別是:由六個(gè)部分組成,分別是:代碼生成工具代碼生成工具: :通過編輯、匯編、鏈接生成可執(zhí)通過編輯、匯
10、編、鏈接生成可執(zhí)行代碼行代碼集成開發(fā)環(huán)境集成開發(fā)環(huán)境調(diào)試器調(diào)試器:AXD:AXD指令集模擬器指令集模擬器: :實(shí)現(xiàn)部分沒有硬件支持的調(diào)試實(shí)現(xiàn)部分沒有硬件支持的調(diào)試ARMARM開發(fā)包:包含一些底層的例程和庫開發(fā)包:包含一些底層的例程和庫ARMARM應(yīng)用庫應(yīng)用庫山東建筑大學(xué)信息與電氣工程學(xué)院13第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院15第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)1.ARM Executabl Image:用于由ARM指令的程序生成一個(gè)ELF格式的可執(zhí)行映像文件(一般情況選擇此項(xiàng))。2.ARM Object Library:用于由ARM指令的程序生成一個(gè)armar格式的目標(biāo)文件庫。3.Empty Project:用于創(chuàng)建一個(gè)不包含任何
12、庫或源文件的空工程。4.Makefile Importer Wizard:用于將Visual C的nmake或GNU make文件轉(zhuǎn)換為工程文件。5.Thumb ARM Interworking Image :用于由ARM指令和Thumb指令的混和程序生成一個(gè)可執(zhí)行的ELF格式的可執(zhí)行映像文件。6.Thumb Executable image:用于由Thumb指令創(chuàng)建一個(gè)可執(zhí)行的ELF格式的映像文件。7.Thumb Object Library:用于由Thumb指令的程序生成一個(gè)armar格式的目標(biāo)文件庫。山東建筑大學(xué)信息與電氣工程學(xué)院16第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)
13、計(jì)基礎(chǔ)在這里選擇ARM Executable Image;在“Project name:”中輸入工程文件名稱(無擴(kuò)展名);點(diǎn)選“Location:”字段的“Set”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設(shè)置好后,點(diǎn)選 “確定”新出現(xiàn)的窗口中有三個(gè)標(biāo)簽頁,分別為files, link order, target,默認(rèn)的是顯示第一個(gè)標(biāo)簽頁files。山東建筑大學(xué)信息與電氣工程學(xué)院17第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)DebugRel:使用該目標(biāo),在產(chǎn)生目標(biāo)的時(shí)候,會(huì)為每一個(gè)源文件生成調(diào)試信息。Debug: 使用該目標(biāo)為每一個(gè)源文件生成最完全的調(diào)試信息。Release
14、: 使用該目標(biāo)不會(huì)生成任何調(diào)試信息。 我們使用Debug目標(biāo)。山東建筑大學(xué)信息與電氣工程學(xué)院18第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)點(diǎn)選Edit菜單,選擇“Debug Settings”(注意,這個(gè)選項(xiàng)會(huì)因用戶選擇的目標(biāo)不同而有所不同),出現(xiàn)下頁所示的對(duì)話框。 這個(gè)對(duì)話框中的設(shè)置很多,在這里只介紹一些較為常用的設(shè)置選項(xiàng)山東建筑大學(xué)信息與電氣工程學(xué)院19第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院20第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)Linker:None是不用任何鏈接器,如果選擇此項(xiàng),則工程中的所有
15、檔案都不會(huì)被編譯器或匯編器處理 ARM Librarian表示將編譯得到的目標(biāo)文件轉(zhuǎn)換為ARM LIB文件 ARM Linker:默認(rèn)鏈接器Pre-linker:目前CodeWarrior IDE不支持該選項(xiàng)。Post-Linker:選擇在鏈接完成后,還要對(duì)輸出文件進(jìn)行的操作。其中一般選用FromELF,表示在鏈接生成映像文件后,再啟動(dòng)FromELF命令將含有ELF格式的映像文件轉(zhuǎn)換成其它格式的文件,例如生成一個(gè)可以燒寫到Flash中去的二進(jìn)制代碼。山東建筑大學(xué)信息與電氣工程學(xué)院21第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院22第第4 4章章 A
16、RMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)對(duì)程序中使用的各種語言編譯器進(jìn)行設(shè)置,包括匯編語言,ARM狀態(tài)下的C及C語言, Thumb狀態(tài)下的C及C語言共5項(xiàng)。 一般情況下我們只需選對(duì)Target and Source標(biāo)簽頁下的ARM架構(gòu)設(shè)置即可,其他選項(xiàng)使用默認(rèn)值,對(duì)于S3C2410,其架構(gòu)為ARM920T.山東建筑大學(xué)信息與電氣工程學(xué)院23第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 本頁面的設(shè)置非常重要,因?yàn)檫@些選項(xiàng)對(duì)最終生成的文件有著直接的影響。 ARM Linker頁面中提供鏈接器的設(shè)置。在標(biāo)簽頁Output中,Linktype中提供了三種鏈接方式。 Partial方式
17、表示鏈接器只進(jìn)行部分鏈接,經(jīng)過部分鏈接生成的目標(biāo)文件,可以作為以后進(jìn)一步鏈接時(shí)的輸入文件。 Simple方式是預(yù)設(shè)的鏈接方式,也是使用最為頻繁的鏈接方式,它鏈接生成簡單的ELF格式的目標(biāo)文件,使用的是鏈接器選項(xiàng)中指定的位元址映像方式。 Scattered方式使得鏈接器要依據(jù)scatter格式文件中指定的地址映像,生成復(fù)雜的ELF格式的映像檔案。山東建筑大學(xué)信息與電氣工程學(xué)院24第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院25第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)我們選擇Simple方式后,就會(huì)出現(xiàn)Simple image。RO
18、 Base:設(shè)置程序代碼在執(zhí)行域存放的起始地址。預(yù)設(shè)是設(shè)置程序代碼在執(zhí)行域存放的起始地址。預(yù)設(shè)是0 x8000。這里用戶要依據(jù)自己硬件的實(shí)際。這里用戶要依據(jù)自己硬件的實(shí)際SDRAM的地址空的地址空間來修改這個(gè)地址,保證在這里填寫的地址,是程序執(zhí)行間來修改這個(gè)地址,保證在這里填寫的地址,是程序執(zhí)行時(shí),時(shí),SDRAM地址空間所能覆蓋的地址。例如系統(tǒng)使用地址空間所能覆蓋的地址。例如系統(tǒng)使用64M的的SDRAM,尋址空間為,尋址空間為0 x30000000-0 x33FFFFFF,可以選用可以選用0 x30000000作為程序的起始地址。作為程序的起始地址。RW Base:這個(gè)字段設(shè)置了包含這個(gè)字段設(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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)Split Image:把包含:把包含RO和和RW的輸出段的加載區(qū)的輸出段的加載區(qū)域分成域分成2個(gè)加載區(qū)域:一個(gè)是包含個(gè)加載區(qū)域:一個(gè)是包含RO輸出段的區(qū)輸出段的區(qū)域,一個(gè)是包含域,一個(gè)是包含RW輸出段的區(qū)域。輸出段的區(qū)域。這個(gè)選項(xiàng)要求RW Base有值
20、。Relocatable:選擇這個(gè)選項(xiàng)保留了映像文件的重:選擇這個(gè)選項(xiàng)保留了映像文件的重置地址偏移量。這些偏移量為程序加載器提供了置地址偏移量。這些偏移量為程序加載器提供了有用的信息。有用的信息。在Options選項(xiàng)中,主要關(guān)注Image entry point字段,其他可使用默認(rèn)值。 Image entry point指定映像文件的初始進(jìn)入點(diǎn)地址值,當(dāng)映像文件被加載程序加載時(shí),加載程序會(huì)跳轉(zhuǎn)到該地址處執(zhí)行。山東建筑大學(xué)信息與電氣工程學(xué)院27第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院28第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)
21、山東建筑大學(xué)信息與電氣工程學(xué)院29第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)Scatter file (分散加載描述文件)用于armlink的輸入?yún)?shù),他指定映像文件內(nèi)部各區(qū)域的加載與運(yùn)行時(shí)位置。山東建筑大學(xué)信息與電氣工程學(xué)院30第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)存在復(fù)雜的地址映射:例如代碼和數(shù)據(jù)需要分開放在在多個(gè)區(qū)域。存在多種存儲(chǔ)器類型:例如包含 Flash,ROM,SDRAM,快速SRAM。我們根據(jù)代碼與數(shù)據(jù)的特性把他們放在不同的存儲(chǔ)器中,比如中斷處理部分放在快速SRAM內(nèi)部來提高響應(yīng)速度,而把不常用到的代碼放到速度比較慢的Flash內(nèi)。函數(shù)的地
22、址固定定位:可以利用Scatter file實(shí)現(xiàn)把某個(gè)函數(shù)放在固定地址,而不管其應(yīng)用程序是否已經(jīng)改變或重新編譯。利用符號(hào)確定堆與堆棧:內(nèi)存映射的I/O:采用scatter file可以實(shí)現(xiàn)把某個(gè)數(shù)據(jù)段放在精確的地址處。山東建筑大學(xué)信息與電氣工程學(xué)院31第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)SDRAM加載時(shí)域RW屬性內(nèi)容RO屬性內(nèi)容加載時(shí)地址映射關(guān)系FLASHRO屬性內(nèi)容RW屬性內(nèi)容ZI屬性內(nèi)容ZI屬性的運(yùn)行時(shí)域RW屬性的運(yùn)行時(shí)域RO屬性的運(yùn)行時(shí)域運(yùn)行時(shí)地址映射關(guān)系0 x000000000 xA0100000山東建筑大學(xué)信息與電氣工程學(xué)院32第第4 4章章 ARMARM系統(tǒng)
23、硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)Scatter文件LOAD 0 x0;定義加載時(shí)域,起始地址Flash中0 x0 ROM_EXEC +0 ;定義第一個(gè)運(yùn)行時(shí)域,起始地址和加載時(shí);域相同 boot.o(boot,+FIRST);boot.o位于該域開頭*(+RO);RO屬性的內(nèi)容連續(xù)放置RAM 0 xA0100000 0 x40000 ;定義第二個(gè)運(yùn)行時(shí)域 ;地址0 xA0100000,長度 ;0 x40000,其中包含RW和ZI數(shù)據(jù) *(+RW,+ZI)山東建筑大學(xué)信息與電氣工程學(xué)院33第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)在在Linker下還有一個(gè)下還有一個(gè)ARM from
24、 ELF,如,如下頁下頁圖所示。圖所示。只有在只有在Target設(shè)置中選擇了設(shè)置中選擇了Post-linker,才可以使用,才可以使用該選項(xiàng)。該選項(xiàng)。在在Output format下拉選單中,為用戶提供了多種可下拉選單中,為用戶提供了多種可以轉(zhuǎn)換的目標(biāo)格式。以轉(zhuǎn)換的目標(biāo)格式。在在Output file name字段輸入期望生成的輸出文件存字段輸入期望生成的輸出文件存放的路徑,或通過點(diǎn)放的路徑,或通過點(diǎn)Choose按鈕選擇按鈕選擇 經(jīng)過以上步驟,設(shè)置基本完畢。經(jīng)過以上步驟,設(shè)置基本完畢。山東建筑大學(xué)信息與電氣工程學(xué)院34第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息
25、與電氣工程學(xué)院35第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)Factory Settings恢復(fù)出廠默認(rèn)設(shè)置Revert 恢復(fù)到上一次保存的狀態(tài).Import Panel 導(dǎo)入一個(gè)XML文件 .Export Panel 輸出一個(gè)XML文件山東建筑大學(xué)信息與電氣工程學(xué)院36第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 可以直接添加已有的文件,也可以動(dòng)手寫文可以直接添加已有的文件,也可以動(dòng)手寫文件,然后加入工程中。件,然后加入工程中。 為工程新增程序常用的方法有兩種,可以使為工程新增程序常用的方法有兩種,可以使用右鍵在用右鍵在files界面上單擊選擇界面上單擊選擇
26、“Add Files”,也可以在也可以在“Project”菜單選項(xiàng)中,選擇菜單選項(xiàng)中,選擇“Add Files”,這兩種方法都會(huì)打開文件瀏覽對(duì)話框,這兩種方法都會(huì)打開文件瀏覽對(duì)話框,用戶可以把已經(jīng)存在的文件新增到工程中來。用戶可以把已經(jīng)存在的文件新增到工程中來。當(dāng)選好要新增的文件時(shí),會(huì)出現(xiàn)一個(gè)對(duì)話框,當(dāng)選好要新增的文件時(shí),會(huì)出現(xiàn)一個(gè)對(duì)話框,詢問用戶把文件新增到何類目標(biāo)中,在這里,詢問用戶把文件新增到何類目標(biāo)中,在這里,我們選擇我們選擇Debug目標(biāo)。目標(biāo)。山東建筑大學(xué)信息與電氣工程學(xué)院37第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 點(diǎn)選CodeWarrior IDE的菜單Pr
27、oject下的make菜單,就可以對(duì)工程進(jìn)行編譯和鏈接了。 由于我們使用的是Debug目標(biāo),所以生成的最終文件都在該目錄下。進(jìn)入到Debug目錄中去,會(huì)看到make后生成的映像文件和二進(jìn)制文件,映像文件用于調(diào)試,二進(jìn)制文件可以下載到SDRAM中執(zhí)行。山東建筑大學(xué)信息與電氣工程學(xué)院38第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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)生一個(gè)后綴為一個(gè)后綴為. .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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)AXD調(diào)試器本身是一個(gè)軟件,用戶通過這個(gè)軟件可以對(duì)包含有調(diào)試信息的、正在運(yùn)行的可執(zhí)行代碼進(jìn)行變量的查看、斷點(diǎn)的設(shè)置、單步執(zhí)行等調(diào)試操作。在ARM體系中,常見調(diào)試方式有以下幾種:ARMulator:在電腦主機(jī)上利用軟件模擬仿真Angel:運(yùn)行在目標(biāo)板上的監(jiān)控程序,通過通訊線與主機(jī)鏈接Multi-ICE:獨(dú)立的硬件調(diào)試板山東建筑大學(xué)信息與電氣工程學(xué)院40第第4 4章章 ARMA
29、RM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)山東建筑大學(xué)信息與電氣工程學(xué)院41第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 啟動(dòng)AXD可使用兩種方法,一是從“開始程序”啟動(dòng),然后選擇File Load ImageLoad Image;二是直接在CodeWarrior下從“ProjectDebug”啟動(dòng),程序?qū)⒆詣?dòng)裝載當(dāng)前工程的鏡像文件。 選擇 ExecuteExecute Go Go (或者按 F5),相關(guān)文件的處理器視圖被打開,并在缺省斷點(diǎn)處停止 若要重復(fù)執(zhí)行程序,選擇File Reload Current Image山東建筑大學(xué)信息與電氣工程學(xué)院42第第4 4章章 ARMARM系統(tǒng)
30、硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)File 文件Search 查找Processor Views僅針對(duì)當(dāng)前所選處理器的觀察窗口System Views針對(duì)整個(gè)系統(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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)Options Configure Target. 山東建筑大學(xué)信息與電氣工程學(xué)院44第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)添加斷點(diǎn)的三種方法: 右鍵點(diǎn)擊行,從彈出Menu中選 Toggle Toggle BreakpointBreakpoint 左鍵點(diǎn)擊行,按F9, 雙擊行的Margin部分選擇 System Views BreakpointsSystem Views Breakpoints 編輯斷點(diǎn)按F5 恢復(fù)執(zhí)行加
32、斷點(diǎn)后的程序山東建筑大學(xué)信息與電氣工程學(xué)院45第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)主要內(nèi)容ADS 1.2集成開發(fā)環(huán)境簡介集成開發(fā)環(huán)境簡介 基于基于ARM的匯編語言程序設(shè)計(jì)的匯編語言程序設(shè)計(jì)基于基于ARM的硬件啟動(dòng)程序的硬件啟動(dòng)程序基于基于ARM的的C語言與匯編語言混語言與匯編語言混合編程合編程印制電路板制作簡介印制電路板制作簡介山東建筑大學(xué)信息與電氣工程學(xué)院46第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 4.2.1 ARM匯編器支持的偽指令 偽指令是偽指令是ARMARM匯編語言程序中的一些特殊指令助記符,這匯編語言程序中的一些特殊指令助記符,這些助記符
33、與指令系統(tǒng)的助記符不同,沒有相對(duì)應(yīng)的操作碼,些助記符與指令系統(tǒng)的助記符不同,沒有相對(duì)應(yīng)的操作碼,它們所完成的操作稱為偽操作。它們所完成的操作稱為偽操作。偽指令在源程序中的作用是為完成匯編程序做各種準(zhǔn)備工偽指令在源程序中的作用是為完成匯編程序做各種準(zhǔn)備工作的,這些偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,作的,這些偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,偽指令的使命就完成了。偽指令的使命就完成了。ARMARM匯編器支持的偽指令包括:符號(hào)定義偽指令、數(shù)據(jù)定匯編器支持的偽指令包括:符號(hào)定義偽指令、數(shù)據(jù)定義偽指令、匯編控制偽指令、宏指令以及其他偽指令。義偽指令、匯編控制偽指令、宏指令以及其他偽指令。
34、 山東建筑大學(xué)信息與電氣工程學(xué)院47第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)分類分類指令指令舉例舉例符號(hào)定義符號(hào)定義偽指令偽指令GBLA/GBLL/GBLS/LCLA/LCLL/LCLS/SETA/SETL/SETS/RLISTGBLA Test1;定義一個(gè)名為定義一個(gè)名為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é)存儲(chǔ)的一段連續(xù)字節(jié)存儲(chǔ)單元存放字符串單元存放字符串
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;定義一個(gè)名為定義一個(gè)名為Seg的宏指令的宏指令其他其他偽指令偽指令A(yù)REA/ALIGN/CODE16/CODE32/ENTRY/END/EQU/EXPORT/GLOBAL/IMPORT/EXTERN/GET/INCLUDE/IN
36、CBINAREA Init,CODE,READONLY,ALIGN=3;定義了一個(gè)代碼段,段名為定義了一個(gè)代碼段,段名為Init,屬性屬性為只讀,并指定其后的指令為為只讀,并指定其后的指令為8(23)字)字節(jié)對(duì)齊。節(jié)對(duì)齊。ARMARM匯編器支持的常見偽指令匯編器支持的常見偽指令 山東建筑大學(xué)信息與電氣工程學(xué)院48第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 符號(hào)定義偽指令用于定義符號(hào)定義偽指令用于定義ARM匯編程序中的變量、對(duì)匯編程序中的變量、對(duì)變量賦值以及定義寄存器的別名等操作。常見的數(shù)據(jù)變量定變量賦值以及定義寄存器的別名等操作。常見的數(shù)據(jù)變量定義偽指令有如下幾種:義偽指令有
37、如下幾種: (1)GBLA、GBLL 和和GBLS 語法格式:語法格式:GBLA ( GBLL 或或 GBLS ) 全局變量名全局變量名 GBLA 、 GBLL 和和 GBLS 偽指令用于定義全局變量,并將偽指令用于定義全局變量,并將其初始化。其中:其初始化。其中: GBLA用于定義一個(gè)全局的用于定義一個(gè)全局的數(shù)字?jǐn)?shù)字變量,并初始化為變量,并初始化為 0 GBLL用于定義一個(gè)全局的用于定義一個(gè)全局的邏輯邏輯變量,并初始化變量,并初始化F(假假) GBLS用于定義一個(gè)全局的用于定義一個(gè)全局的字符串字符串變量,并初始化為空變量,并初始化為空 GBLA Test1 ;定義一個(gè)全局的數(shù)字變量,變量名為
38、;定義一個(gè)全局的數(shù)字變量,變量名為 Test1 山東建筑大學(xué)信息與電氣工程學(xué)院49第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(2)LCLA、LCLL 和和LCLS 語法格式:語法格式: LCLA ( LCLL 或或 LCLS ) 局部變量名局部變量名 LCLA 、 LCLL 和和 LCLS 偽指令用于定義一個(gè)偽指令用于定義一個(gè) ARM 程序程序中的局部變量,并將其初始化。其中:中的局部變量,并將其初始化。其中: LCLA偽指令用于定義一個(gè)局部的偽指令用于定義一個(gè)局部的數(shù)字?jǐn)?shù)字變量,并初始化為變量,并初始化為 0 ; LCLL偽指令用于定義一個(gè)局部的偽指令用于定義一個(gè)局部的邏輯
39、邏輯變量,并初始化為變量,并初始化為 F(假);(假); LCLS 偽指令用于定義一個(gè)局部的偽指令用于定義一個(gè)局部的字符串字符串變量,并初始化變量,并初始化為空;為空; LCLL Test5 ;聲明一個(gè)局部的邏輯變量,變量名為;聲明一個(gè)局部的邏輯變量,變量名為 Test5 山東建筑大學(xué)信息與電氣工程學(xué)院50第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(3)SETA、SETL 和和SETS 語法格式:變量名語法格式:變量名 SETA ( SETL 或或 SETS ) 表達(dá)式表達(dá)式 偽指令偽指令 SETA 、 SETL 、 SETS 用于給一個(gè)已經(jīng)定義的全用于給一個(gè)已經(jīng)定義的全局變
40、量或局部變量賦值。局變量或局部變量賦值。 SETA 偽指令用于給一個(gè)偽指令用于給一個(gè)數(shù)學(xué)數(shù)學(xué)變量賦值;變量賦值; SETL 偽指令用于給一個(gè)偽指令用于給一個(gè)邏輯邏輯變量賦值;變量賦值; SETS 偽指令用于給一個(gè)偽指令用于給一個(gè)字符串字符串變量賦值;變量賦值; Test3 SETA 0 xaa ;將該變量賦值為;將該變量賦值為 0 xaa Test4 SETL TRUE ;將該變量賦值為真;將該變量賦值為真 Test6 SETS “ Testing ” ;將該變量賦值為;將該變量賦值為 “ Testing ” 山東建筑大學(xué)信息與電氣工程學(xué)院51第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬
41、件設(shè)計(jì)基礎(chǔ)(4)RLIST 語法格式:名稱語法格式:名稱 RLIST 寄存器列表寄存器列表 RLIST 偽指令可用于對(duì)一個(gè)通用寄存器列表定偽指令可用于對(duì)一個(gè)通用寄存器列表定義名稱,使用該偽指令定義的名稱可在義名稱,使用該偽指令定義的名稱可在 ARM 指指令令 LDM/STM 中使用。在中使用。在 LDM/STM 指令中,列指令中,列表中的寄存器訪問次序?yàn)楸碇械募拇嫫髟L問次序?yàn)楦鶕?jù)寄存器的編號(hào)由低根據(jù)寄存器的編號(hào)由低到高到高,而,而與列表中的寄存器排列次序無關(guān)與列表中的寄存器排列次序無關(guān)。 RegList RLIST R0-R5 , R8 , R10 ;將寄存;將寄存器列表名稱定義為器列表名稱定
42、義為 RegList 。 山東建筑大學(xué)信息與電氣工程學(xué)院52第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,同時(shí)可完成已分配存儲(chǔ)單元的初始化。常見有如下幾種:同時(shí)可完成已分配存儲(chǔ)單元的初始化。常見有如下幾種: (1) DCB :用于分配一片連續(xù)的:用于分配一片連續(xù)的字節(jié)字節(jié)存儲(chǔ)單元并用偽指令中存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為指定的表達(dá)式初始化。其中,表達(dá)式可以為 0 255 的數(shù)的數(shù)字或字符串字或字符串 . 語法格式:語法格式: 標(biāo)號(hào)標(biāo)號(hào) DCB 表達(dá)式表達(dá)式
43、 Str DCB “ This is a test ! ” (2) DCW(或(或DCWU)用于分配一片連續(xù)的)用于分配一片連續(xù)的半字半字存儲(chǔ)單元并存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。用偽指令中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號(hào)標(biāo)號(hào) DCW (或(或 DCWU ) 表達(dá)式表達(dá)式 DataTest DCW 1 , 2 , 3 山東建筑大學(xué)信息與電氣工程學(xué)院53第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(3)DCD(或(或DCDU)用于分配一片連續(xù)的)用于分配一片連續(xù)的字字存儲(chǔ)單元并用存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。偽指令中指定的表達(dá)式初始化。 語法格式
44、:語法格式: 標(biāo)號(hào)標(biāo)號(hào) DCD (或(或 DCDU ) 表達(dá)式表達(dá)式 DataTest DCD 4 , 5 , 6 (4)DCFD(或(或DCFDU)用于為)用于為雙精度的浮點(diǎn)數(shù)雙精度的浮點(diǎn)數(shù)分配一片連分配一片連續(xù)的續(xù)的雙字雙字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號(hào)標(biāo)號(hào) DCFD (或(或 DCFDU ) 表達(dá)式表達(dá)式 FDataTest DCFD 2E115 , -5E7 (5)DCFS(或(或DCFSU)用于為)用于為單精度的浮點(diǎn)數(shù)單精度的浮點(diǎn)數(shù)分配一片連分配一片連續(xù)的續(xù)的字字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。存儲(chǔ)
45、單元并用偽指令中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號(hào)標(biāo)號(hào) DCFS (或(或 DCFSU ) 表達(dá)式表達(dá)式山東建筑大學(xué)信息與電氣工程學(xué)院54第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) (6)DCQ(或或DCQU)用于分配一片用于分配一片以以 8 個(gè)字節(jié)為單位個(gè)字節(jié)為單位的連續(xù)存儲(chǔ)區(qū)域并用偽指令的連續(xù)存儲(chǔ)區(qū)域并用偽指令中指定的表達(dá)式初始化。中指定的表達(dá)式初始化。 語法格式:語法格式: 標(biāo)號(hào)標(biāo)號(hào) DCQ (或(或 DCQU ) 表達(dá)式表達(dá)式 (7) SPACE 用于分配一片連續(xù)的存儲(chǔ)區(qū)域并用于分配一片連續(xù)的存儲(chǔ)區(qū)域并初始化為初始化為 0 。其中,表達(dá)式為要分配。其中,
46、表達(dá)式為要分配的字節(jié)數(shù)。的字節(jié)數(shù)。SPACE 也可用也可用 “ ” 代替。代替。 語法格式:語法格式: 標(biāo)號(hào)標(biāo)號(hào) SPACE 表達(dá)式表達(dá)式 DataSpace SPACE 100 (8)MAP 用于定義用于定義一個(gè)結(jié)構(gòu)化的內(nèi)存表的首地址一個(gè)結(jié)構(gòu)化的內(nèi)存表的首地址。 MAP 也可用也可用 “ ” 代替。代替。 語法格式:語法格式: MAP 表達(dá)式表達(dá)式 ,基址寄存器,基址寄存器 (9)FILED 用于定義用于定義一個(gè)結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域一個(gè)結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域。 可用可用 “ # ” 代替。代替。 語法格式:標(biāo)號(hào)語法格式:標(biāo)號(hà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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)1、 IF、ELSE、ENDIF 根據(jù)條件的成立與否決定根據(jù)條件的成立與否決定是否執(zhí)行是否執(zhí)行某個(gè)指令序列。某個(gè)指令序列。 G
48、BLL Test ;聲明一個(gè)全局的邏輯變量,變量名為;聲明一個(gè)全局的邏輯變量,變量名為 Test IF Test = TRUE 指令序列指令序列 1 ELSE 指令序列指令序列 2 ENDIF 2、 WHILE、WEND 根據(jù)條件的成立與否決定根據(jù)條件的成立與否決定是否循環(huán)執(zhí)行是否循環(huán)執(zhí)行某個(gè)指令序列某個(gè)指令序列 GBLA Counter ;聲明一個(gè)全局的數(shù)學(xué)變量,變量名為;聲明一個(gè)全局的數(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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(1) MACRO、MEND 語法格式:語法格式: MACRO $ 標(biāo)號(hào)標(biāo)號(hào) 宏名宏名 $ 參數(shù)參數(shù) 1 , $ 參數(shù)參數(shù) 2 , 指令序列指令序列 MEND MACRO、MEND偽指令可以偽指令可以將一段代碼定義為一個(gè)將一段代碼定義為一個(gè)整體整體,然后就可以在程序中通過宏指令多次調(diào)用該段代,然后就可以在程序中通過宏指令多次調(diào)用該段代碼。碼。(2) MEXIT 語法格式:語法格式: MEXIT MEXIT 用于用于從宏定義中跳轉(zhuǎn)出去從宏定義中跳轉(zhuǎn)出去。 山東建筑大學(xué)信息與電氣工程學(xué)院57第第4 4章章 ARMARM系統(tǒng)硬件
50、設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)1.宏定義宏定義MACRO$HandlerLabel HANDLER $HandleLabel ;宏的;宏的名稱為名稱為HANDLER,有,有1個(gè)參數(shù)個(gè)參數(shù)$HandleLabel$HandlerLabelsub sp,sp,#4 stmfd sp!,r0 ldr r0,=$HandleLabelldr r0,r0 str r0,sp,#4 ldmfd sp!,r0,pc MEND宏定義實(shí)例山東建筑大學(xué)信息與電氣工程學(xué)院58第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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ù)留一個(gè)字的存儲(chǔ)空間預(yù)留一個(gè)字的存儲(chǔ)空間 stmfd sp!,r0 ; r0 入棧入棧 ldr r0,=HandleIRQ ; HandleIRQ 為預(yù)留的為預(yù)留的4字節(jié)標(biāo)號(hào)地址字節(jié)標(biāo)號(hào)地址 ldr r0,r0 ; str r0,sp,#4 ; ldmfd sp!,r0,pc ;山東建筑大學(xué)信息與電氣工程學(xué)院59第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(1)AREA 語法格式:語法格式: AREA 段名段名 屬性屬性
52、1 ,屬性,屬性 2 , AREA 偽指令用于偽指令用于定義一個(gè)代碼段或數(shù)據(jù)段定義一個(gè)代碼段或數(shù)據(jù)段。其中,段。其中,段名若以數(shù)字開頭,則該段名需用名若以數(shù)字開頭,則該段名需用 “ | ” 括起來,如括起來,如 |1_test| 。屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個(gè)屬屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個(gè)屬性用逗號(hào)分隔。性用逗號(hào)分隔。AREA Init , CODE , READONLY ; 該偽指令定義了一該偽指令定義了一個(gè)代碼段,段名為個(gè)代碼段,段名為 Init ,屬性為只讀,屬性為只讀 AREA DataRAM , DATA,READWRITE ;聲明一數(shù)據(jù)段,聲
53、明一數(shù)據(jù)段,名為名為DataRAM 山東建筑大學(xué)信息與電氣工程學(xué)院60第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(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è)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(3) ALIGN 通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對(duì)齊對(duì)齊方式方式 | 。表達(dá)式的值用于指定對(duì)齊方式,可能的表達(dá)式的值用于指定對(duì)齊方式,可能的取
55、值為取值為 2 的冪的冪,如,如 1 、 2 、 4 、 8 、 16 等。等。 語法格式:語法格式: ALIGN 表達(dá)式表達(dá)式 , 偏移量偏移量 AREA Init , CODE , READONLY , ALIEN 3 ;指定后面的指;指定后面的指令為令為 8 字節(jié)對(duì)齊。字節(jié)對(duì)齊。 指令序列指令序列 END (4) ENTRY 用于用于指定匯編程序的入口點(diǎn)指定匯編程序的入口點(diǎn)。在一個(gè)完整的匯編程序中至少。在一個(gè)完整的匯編程序中至少要有一個(gè)要有一個(gè) ENTRY (也可以有多個(gè),當(dāng)有多個(gè)(也可以有多個(gè),當(dāng)有多個(gè) ENTRY 時(shí),程序的真正入時(shí),程序的真正入口點(diǎn)由鏈接器指定),但在一個(gè)源文件里最
56、多只能有一個(gè)口點(diǎn)由鏈接器指定),但在一個(gè)源文件里最多只能有一個(gè) ENTRY (可以(可以沒有)。沒有)。 語法格式:語法格式: ENTRY AREA Init , CODE , READONLY ENTRY ;指定應(yīng)用程序的入口點(diǎn);指定應(yīng)用程序的入口點(diǎn) 山東建筑大學(xué)信息與電氣工程學(xué)院62第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(5) END 用于通知編譯器已經(jīng)到了源程序的用于通知編譯器已經(jīng)到了源程序的結(jié)尾結(jié)尾。 語法格式:語法格式: END (6) EXPORT(或(或GLOBAL)用于在程序中聲明一個(gè)用于在程序中聲明一個(gè)全局全局的標(biāo)號(hào)的標(biāo)號(hào) 語法格式:語法格式: EXPO
57、RT 標(biāo)號(hào)標(biāo)號(hào) (7) IMPORT 和和EXTERN 用于通知編譯器要在當(dāng)前源文件中使用于通知編譯器要在當(dāng)前源文件中使用的標(biāo)號(hào)在其他的源文件中定義用的標(biāo)號(hào)在其他的源文件中定義 語法格式:語法格式: IMPORT 標(biāo)號(hào)標(biāo)號(hào) AREA Init , CODE , READONLY IMPORT Main ;通知編譯器當(dāng)前文件要引用;通知編譯器當(dāng)前文件要引用Main,Main 在在其他源文件中定義其他源文件中定義 END 山東建筑大學(xué)信息與電氣工程學(xué)院63第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)(8) GET(或(或INCLUDE)將一個(gè)源文件包含到當(dāng)前的源文件中將一個(gè)源文件包
58、含到當(dāng)前的源文件中 語法格式:語法格式: GET 文件名文件名 (9) INCBIN 用于將一個(gè)目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文用于將一個(gè)目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件中件中 語法格式:語法格式:INCBIN 文件名文件名 INCBIN a1.dat ;通知編譯器當(dāng)前源文件包含文件;通知編譯器當(dāng)前源文件包含文件a1.dat (10) RN 給一個(gè)寄存器定義一個(gè)給一個(gè)寄存器定義一個(gè)別名別名 語法格式:語法格式: 名稱名稱 RN 表達(dá)式表達(dá)式 Temp RN R0 ;將;將R0 定義一個(gè)別名定義一個(gè)別名Temp (11) EQU 為常量或標(biāo)號(hào)定義為常量或標(biāo)號(hào)定義別名別名山東建筑大學(xué)信息與電
59、氣工程學(xué)院64第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 4.2.2 基于ARM的匯編語言語句格式 ARMARM匯編語言的語句格式匯編語言的語句格式 標(biāo)號(hào)標(biāo)號(hào) 指令或偽指令指令或偽指令 ; ;注釋注釋 標(biāo)號(hào)是代表地址的符號(hào),標(biāo)號(hào)是代表地址的符號(hào),必須在一行的頂格書寫必須在一行的頂格書寫,其后不能添加,其后不能添加冒號(hào)冒號(hào)“:”,而,而所有指令均不能頂格書寫所有指令均不能頂格書寫。ARMARM匯編語言對(duì)標(biāo)識(shí)符的匯編語言對(duì)標(biāo)識(shí)符的大小寫敏感大小寫敏感,書寫標(biāo)號(hào)及指令時(shí)字母大,書寫標(biāo)號(hào)及指令時(shí)字母大小寫要一致。小寫要一致。在在ARMARM匯編語言中,匯編語言中,ARMARM指令、偽
60、指令、寄存器名等指令、偽指令、寄存器名等可以全部大可以全部大寫或者全部小寫寫或者全部小寫,但不能大小寫混合使用。,但不能大小寫混合使用。為了使源文件易讀,可以將一條長的指令通過使用反為了使源文件易讀,可以將一條長的指令通過使用反斜杠字符斜杠字符“ ”將其分成幾行書寫。將其分成幾行書寫。每行從第一個(gè)每行從第一個(gè)分號(hào)開始到本行結(jié)束為注釋分號(hào)開始到本行結(jié)束為注釋內(nèi)容,所有的注釋內(nèi)容內(nèi)容,所有的注釋內(nèi)容均被匯編器忽略。均被匯編器忽略。山東建筑大學(xué)信息與電氣工程學(xué)院65第第4 4章章 ARMARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)系統(tǒng)硬件設(shè)計(jì)基礎(chǔ) 4.2.3 ARM匯編語言程序的基本結(jié)構(gòu) 在在ARMARM匯編語言程序中,
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤基高端新材料項(xiàng)目建議書(參考)
- 歷史建筑修繕工程規(guī)劃設(shè)計(jì)方案(參考模板)
- 老字號(hào)品牌振興計(jì)劃可行性研究報(bào)告(模板)
- 淮北師范大學(xué)《煤的潔凈燃燒與高效利用技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 合肥幼兒師范高等專科學(xué)?!毒幊涕_發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 的車輛安全檢查工作制度
- 河北師范大學(xué)《量子力學(xué)ⅡA》2023-2024學(xué)年第二學(xué)期期末試卷
- 長沙學(xué)院《舞臺(tái)演播室形體》2023-2024學(xué)年第二學(xué)期期末試卷
- 西北工業(yè)大學(xué)《飛行器制導(dǎo)與控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖州職業(yè)技術(shù)學(xué)院《金屬材料制備實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年江蘇省揚(yáng)州市廣陵區(qū)中考二模道德與法治試題
- 臨床診療指南及規(guī)范自查報(bào)告
- 課前游戲-數(shù)字炸彈-模板可修改
- MOOC 跨文化交際入門-華中師范大學(xué) 中國大學(xué)慕課答案
- 掏土糾偏法在地基糾偏中的應(yīng)用
- 醫(yī)療器械注冊(cè)質(zhì)量管理體系核查指南
- 金蝶云星空操作手冊(cè)
- 《精益生產(chǎn)培訓(xùn)》課件
- 班主任基本功大賽:模擬情景題及參考答案匯編(初中組)
- 國外關(guān)于學(xué)前教育的政策法規(guī)
- 基于單片機(jī)的恒壓供水系統(tǒng)設(shè)計(jì)(附原理圖、程序清單及外文翻譯)
評(píng)論
0/150
提交評(píng)論