第9章 ADS介紹及ARM匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第9章 ADS介紹及ARM匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第9章 ADS介紹及ARM匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第9章 ADS介紹及ARM匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第9章 ADS介紹及ARM匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 基于基于ARM9ARM9微處理器微處理器S3C2410AS3C2410A第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)南陽(yáng)師范學(xué)院南陽(yáng)師范學(xué)院張帥張帥第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.1 9.1 裸機(jī)開(kāi)發(fā)環(huán)境裸機(jī)開(kāi)發(fā)環(huán)境n 何謂“裸機(jī)”? 裸機(jī)是指無(wú)操作系統(tǒng)

2、下的ARM系統(tǒng)開(kāi)發(fā) 其特點(diǎn)是所有硬件資源均開(kāi)放 可以把它理解為一個(gè)高級(jí)單片機(jī)的開(kāi)發(fā)n 裸機(jī)開(kāi)發(fā)的作用 更能深入地從底層去理解ARM CPU的操作過(guò)程及系統(tǒng)設(shè)計(jì) 為日后自行設(shè)計(jì)系統(tǒng)打下基礎(chǔ) 為bootloader的編寫(xiě)打好基礎(chǔ)第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 開(kāi)發(fā)環(huán)境的作用開(kāi)發(fā)環(huán)境的作用第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.2 ADS IDE9.2 ADS IDE(集成開(kāi)發(fā)環(huán)境(集成開(kāi)發(fā)

3、環(huán)境) ) ARM應(yīng)用軟件的開(kāi)發(fā)工具根據(jù)功能的不同,可以分為編輯軟件、編譯軟件、匯編軟件、鏈接軟件、調(diào)試軟件、嵌入式實(shí)時(shí)操作系統(tǒng)、函數(shù)庫(kù)、評(píng)估板,JTAG仿真器以及在線仿真器等。 目前有多家公司可以提供以上不同類型的開(kāi)發(fā)工具,用戶采用ARM處理器進(jìn)行嵌入式系統(tǒng)開(kāi)發(fā)時(shí),選擇合適的開(kāi)發(fā)工具可以加快開(kāi)發(fā)進(jìn)度,節(jié)省開(kāi)發(fā)成本。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.2.19.2.1 ADSADS工具包的組成工具包的組成 ADS是ARM公司推出的集成開(kāi)發(fā)工具包,是專門(mén)用于ARM相關(guān)應(yīng)用開(kāi)發(fā)和調(diào)試的綜合性

4、軟件。目前常用的版本是1.2,是一款功能強(qiáng)大又易于使用的開(kāi)發(fā)工具,不過(guò)ARM公司不再升級(jí)ADS,以后ARM公司推出的集成開(kāi)發(fā)工具是RealView MDK。 ARM ADS包含有編譯器、鏈接器、CodeWarrior IDE、調(diào)試器、指令集模擬器、ARM開(kāi)發(fā)包和應(yīng)用庫(kù)等部分,可以用ADS來(lái)開(kāi)發(fā)、編譯、調(diào)試采用包括C、C+和ARM匯編語(yǔ)言編寫(xiě)的程序。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.2.2 ADS9.2.2 ADS開(kāi)發(fā)工具集開(kāi)發(fā)工具集 1.1.命令行開(kāi)發(fā)工具命令行開(kāi)發(fā)工具 ANSI C

5、 編譯器 - armcc and tcc ISO / Embedded C+ 編譯器 - armcpp and tcpp ARM / Thumb 匯編器 arms Linker - armlink 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 2.2.圖形開(kāi)發(fā)工具:圖形開(kāi)發(fā)工具: Windows 集成開(kāi)發(fā)環(huán)境 CodeWarrior Debugger AXD (ARM eXtended Debugger) armsd ARM(符號(hào)調(diào)試器)可向前兼容3.3.庫(kù)文件:庫(kù)文件: C and C+ 庫(kù)4.4.

6、輔助工具輔助工具/ /支持軟件:支持軟件: 格式轉(zhuǎn)換器 - fromelf 指令級(jí)仿真 ARMulator 庫(kù)管理器 armar第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) fromELFfromELF: ARM映像文件轉(zhuǎn)換工具 該命令將ELF格式的文件作為輸入文件,將該格式轉(zhuǎn)換為各種輸出格式的文件,包括plain binary(BIN格式映像文件), Motorola 32-bit S-record format(Motorola 32位S格式映像文件), Intel Hex 32 format(I

7、ntel 32位格式映像文件),和 Verilog-like hex format(Verilog 16進(jìn)制文件) ArmarArmar: ARM庫(kù)函數(shù)生成器將一系列ELF格式的目標(biāo)文件以庫(kù)函數(shù)的形式集合在一起,用戶可以把一個(gè)庫(kù)傳遞給一個(gè)鏈接器以代替幾個(gè)ELF文件。Flash downloaderFlash downloader: 用于把二進(jìn)制映像文件下載到ARM開(kāi)發(fā)板上的Flash存儲(chǔ)器的工具ARMulatorARMulator: ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,它提供對(duì)ARM處理器的指令集的仿真,為ARM和Thumb提供精確的模擬,用戶可以在硬件尚未做好的情況下,開(kāi)發(fā)程序

8、代碼第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 名稱描述使用方式代碼生成工具ARM匯編器ARM C/C+編譯器Thumb C/C+編譯器ARM 鏈接器由Code Warrior調(diào)用 集成開(kāi)發(fā)環(huán)境Code Warrior工程管理,編譯鏈接調(diào)試器AXD/ADW/ADU/armsd仿真調(diào)試指令模擬器ARMulator由AXD調(diào)用ARM開(kāi)發(fā)包一些底層的例程,實(shí)用程序(如fromELF)由Code Warrior調(diào)用ARM應(yīng)用庫(kù)C/C+等函數(shù)庫(kù)用戶程序調(diào)用工具調(diào)用及流程第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境

9、ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.2.3 9.2.3 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境CodeWarriorCodeWarrior使用使用 CodeWarrior集成開(kāi)發(fā)環(huán)境為管理和開(kāi)發(fā)項(xiàng)目提供了簡(jiǎn)單、多樣化的圖形用戶界面。 用戶可以使用ADS的CodeWarrior IDE為ARM處理器開(kāi)發(fā)用C,C+,或ARM匯編語(yǔ)言的程序代碼 。 全面的項(xiàng)目管理功能。 可以在CodeWarrior IDE為ARM配置以上所介紹的各種命令工具,實(shí)現(xiàn)對(duì)工程代碼的編譯,匯編和鏈接。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARM

10、ARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) C/C+Browser C/C+SensitiveEditorProjectManager第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 建立工程第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) uARM E

11、xecutable Image:用于由ARM指令的代碼生成一個(gè) ELF格式的可執(zhí)行映像文件。uARM Object Library:用于由ARM指令的代碼生成一個(gè) armar 格式的目標(biāo)文件庫(kù)。uEmpty Project:用于創(chuàng)建一個(gè)不包含任何庫(kù)或源文件的工程。uMakefile Importer Wizard: 用于將 Visual C 的 nmake 或 GNU make 文件轉(zhuǎn)入到CodeWarrior IDE 工程文件。 uThumb ARM Interworking Image:用于由 ARM指令和 Thumb 指令的混和代碼生成一個(gè)可執(zhí)行的ELF格式的映像文件。 uThumb E

12、xecutable image:用于由 Thumb指令創(chuàng)建一個(gè)可執(zhí)行的ELF格式的映像文件。 uThumb Object Library:用于由Thumb指令的代碼生成一個(gè) armar 格式的目標(biāo)文件庫(kù)。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 新建文件第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 添加文件到工程第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯

13、編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 生成目標(biāo)設(shè)置第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 每個(gè)工程項(xiàng)目都有下面3種生成目標(biāo):uDebug:包含所有調(diào)試信息uDebugRel:包含部分調(diào)試信息uRelease:不包含調(diào)試信息注:若項(xiàng)目編譯只是為了調(diào)試使用,則選擇Debug或者DebugRel;若要生成最后可以運(yùn)行的文件,則最好選擇Release。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 編譯鏈

14、接進(jìn)入編譯鏈接設(shè)置:第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 設(shè)置窗口:第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 目標(biāo)設(shè)置:第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 在Targets Settings選項(xiàng)組中,Post-Linker用于選擇鏈接器輸出文件的處理方式。用戶可以選擇的值如下: None:不進(jìn)行

15、連接的處理。 ARM fromELF:使用ARM工具fromELF處理鏈接器輸出的ELF格式文件,它可以將ELF格式的文件轉(zhuǎn)換為各種二進(jìn)制文件格式。 Batch File Runner:在連接完成后運(yùn)行一個(gè)DOS格式的批處理文件。 若用戶在編譯完成后只是用AXD來(lái)調(diào)試程序,建議選擇None;若要生成最后的編程文件,建議選擇ARM fromELF,該選項(xiàng)與Linker面板中的ARM fromELF選項(xiàng)結(jié)合來(lái)產(chǎn)生最終的編程文件。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) CPU設(shè)置:第第9 9章章 集成

16、開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) Linker設(shè)置:第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 在 Output format 下拉框中,為用戶提供了多種可以轉(zhuǎn)換的目標(biāo)格式,這里選擇 Plain binary,這是一個(gè)二進(jìn)制格式的可執(zhí)行文件,可以被燒寫(xiě)在目標(biāo)板的 Flash中。 在 Output file name 文本域輸入期望生成的輸出文件存放的路徑,或通過(guò)點(diǎn)擊 Choose.按鈕從文件對(duì)話框中選擇輸出文件路徑

17、。如果在這個(gè)文本域不輸入路徑名,則生成的二進(jìn)制文件存放在工程所在的目錄下。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 在標(biāo)簽頁(yè) Output 中,Linktype 中提供了 3 種鏈接方式: Partia :表示鏈接器只進(jìn)行部分鏈接,經(jīng)過(guò)部分鏈接生成的目標(biāo)文件,可以作為以后進(jìn)一步鏈接時(shí)的輸入文件。 Simple :默認(rèn)的鏈接方式,也是使用最為頻繁的鏈接方式,它鏈

18、接生成簡(jiǎn)單的 ELF 格式的目標(biāo)文件,使用的是鏈接器選項(xiàng)中指定的地址映射方式。 Scattered :使得鏈接器要根據(jù) scatter 格式文件中指定的地址映射,生成復(fù)雜的 ELF 格式的映像文件。一般情況下這個(gè)選項(xiàng)使用不太多。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 在選中 Simple 方式后,就會(huì)出現(xiàn) Simple image。 R0 Base:這個(gè)文本框設(shè)置包含有 R0 段的加載域和運(yùn)行域?yàn)橥粋€(gè)地址,默認(rèn)是 0 x8000。這里用戶要根據(jù)硬件的實(shí)際 SDRAM 的地址空間來(lái)修改這個(gè)地址

19、,保證在這里填寫(xiě)的地址是程序運(yùn)行時(shí) SDRAM 地址空間所能覆蓋的地址。 RW Base:這個(gè)文本框設(shè)置包含 RW 和 ZI 輸出段的運(yùn)行域地址。如果選中 split 選項(xiàng),鏈接器生成的映像文件將包含 2 個(gè)加載域和 2 個(gè)運(yùn)行域,此時(shí),在 RW Base 中所輸入的地址為包含 RW 和 ZI 輸出段的域設(shè)置了加載域和運(yùn)行域地址。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌

20、入式系統(tǒng)設(shè)計(jì) 在 Options 選項(xiàng)中,需要注意的是 Image entry point 文本框。它指定映像文件的初始入口點(diǎn)地址值,當(dāng)映像文件被加載程序加載時(shí),加載程序會(huì)跳轉(zhuǎn)到該地址處執(zhí)行。如果需要,用戶可以在這個(gè)文本框中輸入下面格式的入口點(diǎn)。 入口點(diǎn)地址:這是一個(gè)數(shù)值,例如-entry 0 x0。 符號(hào):該選項(xiàng)指定映像文件的入口點(diǎn)為該符號(hào)所代表的地址處。比如:-entry int_handler。 在此處指定的入口點(diǎn)用于設(shè)置 ELF 映像文件的入口地址。 需要注意的是,這 里不可以用符號(hào) main 作為入口點(diǎn)地址符號(hào),否則將會(huì)出現(xiàn)“Image dose not have an entry

21、point(Not specified or not set due to multiple choice)”的出錯(cuò)信息。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) Layout選項(xiàng)在連接方式為Simple時(shí)有效,用來(lái)安排一些輸入段在映像文件中的位置。在上圖中,Place at Beginning of Image選項(xiàng)用于指定某個(gè)輸入段放置在它所在的運(yùn)行時(shí)域的開(kāi)頭。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系

22、統(tǒng)設(shè)計(jì) 編譯鏈接:第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 文件輸出文件輸出第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.2.4 AXD9.2.4 AXD調(diào)試工具的使用調(diào)試工具的使用 在軟件開(kāi)發(fā)的最初階段,可能還沒(méi)有具體的硬件設(shè)備。如果要測(cè)試所開(kāi)發(fā)的軟件是否達(dá)到了

23、預(yù)期的效果,這可以由軟件仿真來(lái)完成。 當(dāng)然,也可以搭建一個(gè)PCB板,這個(gè)板上可以包含一個(gè)或多個(gè)處理器,在這個(gè)板上可以運(yùn)行和調(diào)試應(yīng)用軟件。 只有當(dāng)通過(guò)硬件或者是軟件仿真所得到的結(jié)果達(dá)到了預(yù)期的效果,才算是完成了應(yīng)用程序的編寫(xiě)工作。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 調(diào)試器能夠發(fā)送以下指令:調(diào)試器能夠發(fā)送以下指令: 裝載映像文件到目標(biāo)內(nèi)存; 啟動(dòng)或停止程序的執(zhí)行; 顯示內(nèi)存,寄存器或變量的值; 允許用戶改變存儲(chǔ)的變量值。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM

24、匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 進(jìn)入進(jìn)入AXDAXD調(diào)試工具調(diào)試工具第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 在菜單File中選擇“Load image”選項(xiàng),打開(kāi) Load Image對(duì)話框,找到要裝載的.axf映像文件,點(diǎn)擊“打開(kāi)”按鈕,就把映像文件裝載到目標(biāo)內(nèi)存中了。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) Docking windowsDocking tool

25、barsRegistersSource/Disassembly Memory 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 選擇調(diào)試目標(biāo):選擇調(diào)試目標(biāo): 點(diǎn)擊ADX窗口菜單【Options】選擇【Configure Target】,即彈出Choose Target 窗口,在沒(méi)有添加其它仿真驅(qū)動(dòng)程序前,Target 項(xiàng)中只有兩項(xiàng),分別為ADP(JTAG 硬件仿真)和ARMUL(軟件仿真)。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式

26、系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 調(diào)試工具條,從左到右依次為:調(diào)試工具條,從左到右依次為: 全速運(yùn)行(Go) 停止運(yùn)行(Stop) 單步運(yùn)行(Step In),與Step 命令不同之處在于對(duì)函數(shù)調(diào)用語(yǔ)句,Step In 命令將進(jìn)入該函數(shù)。 單步運(yùn)行(Step),每次執(zhí)行一條語(yǔ)句,這時(shí)函數(shù)調(diào)用將被作為一條語(yǔ)句執(zhí)行。 單步運(yùn)行(Step Out),執(zhí)行完當(dāng)前被調(diào)用的函數(shù),停止在函數(shù)調(diào)用的下一條語(yǔ)句。 運(yùn)行到光標(biāo)(Run To Cursor),運(yùn)行程序直到當(dāng)前光標(biāo)所在行時(shí)停止。 設(shè)置斷點(diǎn)(Toggle BreakPoint)第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程

27、序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 調(diào)試觀察窗口工具條,從左到右依次為:打開(kāi)寄存器窗口(Processor Registers)打開(kāi)觀察窗口(Processor Watch)打開(kāi)變量觀察窗口(Context Variable)打開(kāi)堆棧觀察窗口(Back Trace)打開(kāi)存儲(chǔ)器觀察窗口(Memory)打開(kāi)反匯編窗口(Disassembly)第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 處理器狀態(tài)觀察:處理器狀態(tài)觀察:包括: 寄存器 變量 存儲(chǔ)器第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境A

28、DSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 存儲(chǔ)器窗口:存儲(chǔ)器窗口:包括: 顯示格式 修改操作第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 單步執(zhí)行、斷點(diǎn):?jiǎn)尾綀?zhí)行、斷點(diǎn):第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 添加變量進(jìn)行觀察:添加變量進(jìn)行觀察:第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序

29、設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.2.5 Wiggler JTAG 仿真器的安裝與應(yīng)用簡(jiǎn)介H-JTAG調(diào)試代理使用Wiggler JTAG Wiggler JTAG 仿真器第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 簡(jiǎn)介 MagicARM2410 實(shí)驗(yàn)箱配套的Wiggler JTAG 仿真器,支持ADS1.2 集成開(kāi)發(fā)環(huán)境,支持單步、全速及斷點(diǎn)等調(diào)試功能。仿真器采用ARM 公司提出的標(biāo)準(zhǔn)20 腳JTAG 仿真調(diào)試接口,與計(jì)算機(jī)連接采用標(biāo)準(zhǔn)25 針并口(即打印機(jī)口)。第第9 9章章 集成開(kāi)發(fā)環(huán)境

30、集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 要使用Wiggler JTAG 仿真器來(lái)調(diào)試ARM 處理器,除了ADS1.2 集成開(kāi)發(fā)環(huán)境外,還需要安裝一個(gè)ARM 調(diào)試代理軟件; 推薦使用H-JTAG 軟件,H-JTAG 軟件的特點(diǎn)如下:支持ARM7/ARM9,支持自動(dòng)檢測(cè)和手動(dòng)指定內(nèi)核;使用RDI 接口,支持SDT2.51、ADS1.2、REALVIEW 和IAR 集成開(kāi)發(fā)環(huán)境;支持ARM/Thumb 模式;支持Little Endian & BIG Endian 模式;支持Wiggler、SDT JTAG 和自定義接口

31、;H-JTAG調(diào)試代理第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 使用Wiggler JTAG 仿真器雙擊桌面“H-JTAG”快捷方式啟動(dòng)H-JTAG 會(huì)自動(dòng)檢測(cè)ARM 內(nèi)核,如果JTAG 連接正確將會(huì)在H-JTAG 主窗口中顯示S3C2410A 處理器的內(nèi)核ARM920T在進(jìn)行JTAG 仿真調(diào)試時(shí),不要關(guān)閉H-JTAG 軟件第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 將計(jì)算機(jī)并口與Wiggler JTA

32、G 仿真器連接; 將仿真器JTAG口接頭插入MagicARM2410實(shí)驗(yàn)箱主板的J29上; 通過(guò)AXD 軟件的設(shè)置即可進(jìn)行JTAG仿真調(diào)試;第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 程序固化 在JTAG 仿真調(diào)試通過(guò)后,要將程序調(diào)試生成十六進(jìn)制文件并下載到外部的NOR Flash(即固化程序),才可脫機(jī)運(yùn)行。 生成HEX HEX 文件。 使用Flash Programmer Flash Programmer 燒寫(xiě)FlashFlash。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及

33、ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 生成HEX 文件 在當(dāng)前工程窗口中選用Release 生成目標(biāo),打開(kāi)工程的DebugRel Settings 窗口,在TargetSettings 項(xiàng)中設(shè)置Post-linker 選取ARM fromELF。 在ARM formELF 項(xiàng)中設(shè)置輸出文件類型,如設(shè)置為Intel 32 bit Hex,然后設(shè)置輸出文件名。生成文件默認(rèn)存放在當(dāng)前工程的xxx_DataRelease”目錄中。 重新編譯連接工程即可生成 十六進(jìn)制文件。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯

34、編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 使用Flash Programmer 燒寫(xiě)Flash 將MagicARM2410 MagicARM2410 實(shí)驗(yàn)箱主板上的JP8 JP8 跳線器斷開(kāi),選用NOR Flash NOR Flash 啟動(dòng)方式,按RST RST 鍵復(fù)位系統(tǒng) 將Wiggler JTAG 仿真器的25 針接口通過(guò)并口延長(zhǎng)線與PC 機(jī)的并口LPT1 連接,將Wiggler JTAG 仿真器的20 針接口通過(guò)20 PIN 連接電纜接到MagicARM2410 實(shí)驗(yàn)箱主板的J29 上 將配置文件DeviceARM2410.ocd 復(fù)制D:目錄下。啟動(dòng)Flash Programmer

35、 點(diǎn)擊Program按鈕,下載程序至目標(biāo)板的Flash 中 脫機(jī)運(yùn)行第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.3 ARM9.3 ARM匯編偽指令匯編偽指令 在 ARM 匯編語(yǔ)言程序里,有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記符不同,沒(méi)有相對(duì)應(yīng)的操作碼,也就是不會(huì)生成機(jī)器碼,僅僅是在編譯器軟件中起著格式化的作用,通常稱這些特殊指令助記符為偽指令。偽指令在源程序中的作用是為完成匯編程序作各種準(zhǔn)備工作的,這些偽指令僅在匯編過(guò)程中起作用,一旦匯編結(jié)束,偽指令的使命就完成。 在 ARM 的匯編程

36、序中,有如下幾種偽指令:數(shù)據(jù)常量定義偽指令、數(shù)據(jù)變量定義偽指令、內(nèi)存分配偽指令及其他偽指令。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.3.1 數(shù)據(jù)常量定義偽指令 數(shù)據(jù)常量定義偽指令EQU用于為程序中的常量、標(biāo)號(hào)等定義一個(gè)等效的字符名稱,類似于C語(yǔ)言中的#define 。 EQU語(yǔ)法格式 : 名稱 EQU 表達(dá)式 ,類型 ; 其中 EQU 可用 “ * ” 代替。 名稱為EQU偽指令定義的字符名稱,當(dāng)表達(dá)式為32 位的常量時(shí),可以指定表達(dá)式的數(shù)據(jù)類型,可以有以下三種類型: CODE16、CODE

37、32和DATA 。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.3.4 匯編控制偽指令 匯編控制偽指令用于控制匯編程序的執(zhí)行流程,常用的匯編控制偽指令包括以下幾條: (1 1) IFIF、ELSEELSE、ENDIFENDIF 語(yǔ)法格式: IF 邏輯表達(dá)式 指令序列 1 ELSE 指令序列 2 ENDIF (2 2) WHILEWHILE、WENDWEND 語(yǔ)法格式: WHILE 邏輯表達(dá)式 指令序列 WEND 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言

38、程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.3.5 其他常用的偽指令 還有一些其他的偽指令,在匯編程序中經(jīng)常會(huì)被使用,主要包括AREA、ALIGN、CODE16、CODE32、ENTRY、END、EXPORT(或 GLOBAL)、IMPORT、EXTERN、GET(或 INCLUDE )、INCBIN、RN、ROUT等。 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) (1 1)AREAAREA 語(yǔ)法格式: AREA 段名 屬性 1 ,屬性 2 , AREA 偽指令用于定義一個(gè)代碼段或數(shù)

39、據(jù)段。其中,段名若以數(shù)字開(kāi)頭,則該段名需用 “ | ” 括起來(lái),如 |1_test| 。屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個(gè)屬性用逗號(hào)分隔。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) (2 2) ALIGNALIGN 語(yǔ)法格式: ALIGN 表達(dá)式 , 偏移量 (3 3) CODE16CODE16、CODE32CODE32 語(yǔ)法格式: CODE16 (或 CODE32 )(4 4) ENTRYENTRY 語(yǔ)法格式: ENTRY (5 5) ENDEND 語(yǔ)法格式: END (6 6) E

40、XPORTEXPORT(或(或GLOBALGLOBAL) 語(yǔ)法格式: EXPORT 標(biāo)號(hào) WEAK 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) ( 7 ( 7) IMPORTIMPORT 語(yǔ)法格式: IMPORT 標(biāo)號(hào) WEAK (8 8) EXTERNEXTERN 語(yǔ)法格式: EXTERN 標(biāo)號(hào) WEAK(9 9) GETGET(或(或INCLUDEINCLUDE) 語(yǔ)法格式: GET 文件名 (1010) INCBININCBIN 語(yǔ)法格式:INCBIN 文件名 (1111) RNRN 語(yǔ)法格式

41、: 名稱 RN 表達(dá)式 第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.4 ARM9.4 ARM的匯編語(yǔ)言結(jié)構(gòu)的匯編語(yǔ)言結(jié)構(gòu) 在ARM(Thumb)匯編語(yǔ)言程序中,以相對(duì)獨(dú)立的指令或數(shù)據(jù)序列的程序段為單位組織程序代碼。 段可以分為代碼段和數(shù)據(jù)段,代碼段的內(nèi)容為執(zhí)行代碼,數(shù)據(jù)段存放代碼運(yùn)行時(shí)需要用到的數(shù)據(jù)。 一個(gè)匯編程序至少應(yīng)該有一個(gè)代碼段,也可以分割為多個(gè)代碼段和數(shù)據(jù)段,多個(gè)段在程序編譯鏈接時(shí)最終形成一個(gè)可執(zhí)行的映象文件。 可執(zhí)行映象文件通常由以下幾部分構(gòu)成: 一個(gè)或多個(gè)代碼段,代碼段的屬性為只讀。

42、 零個(gè)或多個(gè)包含初始化數(shù)據(jù)的數(shù)據(jù)段,數(shù)據(jù)段的屬性為可讀寫(xiě)。 零個(gè)或多個(gè)不包含初始化數(shù)據(jù)的數(shù)據(jù)段,數(shù)據(jù)段的屬性為可讀寫(xiě)。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.4.1 ARM匯編語(yǔ)言的語(yǔ)句格式 1.1. 基本語(yǔ)句格式基本語(yǔ)句格式ARM(Thumb)匯編語(yǔ)言的語(yǔ)句格式為: 標(biāo)號(hào) 指令或偽指令;注釋規(guī)則: 如果一條語(yǔ)句太長(zhǎng),可將其分為若干行來(lái)書(shū)寫(xiě),在行的末用續(xù)行符“”來(lái)標(biāo)識(shí)下一行與本行為同一條語(yǔ)句。 每一條指令的助記符可以全部用大寫(xiě)、或全部用小寫(xiě),但不能在一條指令中大、小寫(xiě)混用。第第9 9章章 集

43、成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 2. 2. 匯編語(yǔ)言程序中常用的符號(hào)匯編語(yǔ)言程序中常用的符號(hào) 在匯編語(yǔ)言程序設(shè)計(jì)中,可以使用各種符號(hào)代替地址、變量和常量等,以增加程序的可讀性。以下為符號(hào)命名的約定: 符號(hào)名不應(yīng)與指令或偽指令同名 符號(hào)在其作用范圍內(nèi)必須唯一。 符號(hào)區(qū)分大小寫(xiě),同名的大、小寫(xiě)符號(hào)被視為兩個(gè)不同的符號(hào)。 自定義的符號(hào)名不能與系統(tǒng)保留字相同。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 3.3. 程序中

44、的常量程序中的常量 程序中的常量是指其值在程序的運(yùn)行過(guò)程中不能被改變的量。ARM(Thumb)匯編程序所支持的常量有邏輯常量、數(shù)字常量和字符串常量。 數(shù)字常量一般為32位的整數(shù),無(wú)符號(hào)常量取值范圍為0232-1,有符號(hào)常量取值范圍為-231231-1。 邏輯常量只有兩種取值:真或假。 字符串常量為一個(gè)固定的字符串,一般用來(lái)提示程序運(yùn)行時(shí)的信息。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 4. 4. 匯編語(yǔ)言程序中的變量匯編語(yǔ)言程序中的變量 程序中的變量是指其值在程序的運(yùn)行過(guò)程中可以改變的量。 邏輯變

45、量用于在程序的運(yùn)行中保存邏輯值(真/假)。 數(shù)字變量用于在程序的運(yùn)行中保存數(shù)字值,但數(shù)字值的大小不應(yīng)超出數(shù)字變量所能表示的范圍。 字符串變量用于在程序的運(yùn)行中保存一個(gè)字符串,但字符串的長(zhǎng)度不應(yīng)超出字符串變量所能表示的范圍。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 5. 5. 程序中的變量代換程序中的變量代換 程序中的變量可通過(guò)代換操作取得一個(gè)常量。代換操作符為“$”。如果“$”在數(shù)字變量前面,編譯器會(huì)將該數(shù)字變量的值轉(zhuǎn)換為十六進(jìn)制的字符串,并將該十六進(jìn)制的字符串代換“$”后的數(shù)字變量。第第9 9章

46、章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.4.2 基于Windows下ADS的匯編語(yǔ)言程序結(jié)構(gòu) ADS環(huán)境下的ARM匯編語(yǔ)言程序結(jié)構(gòu)與其它環(huán)境下的匯編語(yǔ)言程序結(jié)構(gòu)大體相同,整個(gè)程序也是以段為單元來(lái)組織代碼。其語(yǔ)法規(guī)則總結(jié)如下: 所有標(biāo)號(hào)必須在一行的頂格書(shū)寫(xiě),其后不要添加“:”號(hào); 所有的指令均不能頂格寫(xiě); 大小寫(xiě)敏感(可以全部大寫(xiě)或全部小寫(xiě),但不能大小寫(xiě)混合使用); 注釋使用分號(hào)“;” 。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系

47、統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.5 ARM9.5 ARM匯編語(yǔ)言程序調(diào)試匯編語(yǔ)言程序調(diào)試 無(wú)論進(jìn)行嵌入式系統(tǒng)軟件開(kāi)發(fā)還是硬件電路設(shè)計(jì),調(diào)試永遠(yuǎn)是不可缺少的、非常重要的一個(gè)環(huán)節(jié)。通常嵌入式系統(tǒng)的調(diào)試方法和類型有很多種,最為常見(jiàn)的包括軟件模擬調(diào)試、硬件仿真器在線調(diào)試、Wiggler線纜調(diào)試和Linux環(huán)境下的gdb程序調(diào)試。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.5.1 ADS軟件模擬環(huán)境下的程序調(diào)試 ADS軟件模擬調(diào)試是利用ARMUL.dll提供的一個(gè)軟ARM內(nèi)核,調(diào)試工具和待調(diào)試的嵌入式軟件都在主

48、機(jī)上運(yùn)行,由主機(jī)提供一個(gè)模擬的目標(biāo)運(yùn)行環(huán)境,可以進(jìn)行語(yǔ)法和邏輯上的調(diào)試。它的優(yōu)點(diǎn)是簡(jiǎn)單方便,不需要嵌入式目標(biāo)板,軟件的調(diào)試功能較強(qiáng);功能有限,不能進(jìn)行實(shí)時(shí)聯(lián)機(jī)調(diào)試。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.5.2 ADS硬件仿真器環(huán)境下的程序調(diào)試 在ADS環(huán)境下利用JTAG硬件仿真器可以實(shí)現(xiàn)聯(lián)機(jī)調(diào)試,即在線調(diào)試嵌入式設(shè)備的Flash中的程序或者SDRAM中的程序。由于仿真器自成體系,調(diào)試時(shí)既可以連接目標(biāo)板,也可以不連接目標(biāo)板,當(dāng)然仿真器的價(jià)格也相對(duì)比較貴。一般在程序的前期開(kāi)發(fā),通常讓程序只在S

49、DRAM中調(diào)試運(yùn)行,最后才下載到Flash中進(jìn)行調(diào)試運(yùn)行。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) ARM仿真器是通過(guò)內(nèi)部硬件實(shí)現(xiàn)PC并口協(xié)議到串行JTAG(Jiont Test Action Gruop)協(xié)議的轉(zhuǎn)換。利用高速JTAG串行掃描鏈,通過(guò)調(diào)試通信通道(Debug Communications Channel,DCC)連接ARM核心內(nèi)嵌的名為“Embedded-ICE”的調(diào)試邏輯,調(diào)試邏輯實(shí)時(shí)監(jiān)測(cè)ARM核心的寄存器、數(shù)據(jù)總線和地址總線。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS

50、介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 配置配置ADSADS以支持以支持JTAGJTAG仿真器仿真器 啟動(dòng)ADS的調(diào)試器AXD后,從菜單“Option”中選擇“Configure Target”,在彈出的窗口中,添加或選擇H-JTAG.dll(如圖所示)。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 9.6 ARM9.6 ARM匯編語(yǔ)言與匯編語(yǔ)言與C C語(yǔ)言混合編程語(yǔ)言混合編程 ARM體系結(jié)構(gòu)支持C/C+以及匯編語(yǔ)言的混合編程,在一個(gè)完整的程序設(shè)計(jì)中,除

51、了初始化部分用匯編完成以外,其主要的編程任務(wù)一般都用C/C+完成。 匯編語(yǔ)言和C/C+的混合編程通常有以下幾種方式: 匯編程序中調(diào)用C程序 C程序中調(diào)用匯編程序 C程序中內(nèi)嵌匯編語(yǔ)句 從匯編程序中訪問(wèn)C程序變量第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹及ARMARM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 嵌入式系統(tǒng)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì) 規(guī)定了在混合編程時(shí)子程序調(diào)用的一些基本規(guī)則,主要包括寄存器的使用、堆棧的使用、參數(shù)傳遞和子程序結(jié)果的返回等方面的規(guī)則。1. 寄存器的使用規(guī)則 程序通過(guò)寄存器R0-R3來(lái)傳遞參數(shù),這時(shí)這些寄存器可以記作A0-A3,被調(diào)用的子程序在返回前無(wú)需恢復(fù)寄存器R0-R3的內(nèi)容。第第9 9章章 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境ADSADS介紹及介紹

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論