


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ARM ADS 集成開發(fā)環(huán)境的使用 在這一章 里,將 介紹 ARM 開發(fā) 軟件 ADS(ARM Developer Suite) 。通過學(xué) 習(xí)如何 在 CodeWarrior IDE 集成開發(fā)環(huán)境下編寫, 編譯一個(gè)工程的例子, 使讀者能夠掌握在 ADS 軟件 平臺下開發(fā)用戶應(yīng)用程序。本章還描述了如何使用 AXD 調(diào)試工程,使讀者對于調(diào)試工程有 個(gè)初步的理解,為進(jìn)一步的使用和掌握調(diào)試工具起到拋磚引玉的作用。本章主要容有: ADS 軟件組成介紹 使用 ADS 創(chuàng)建工程 用 AXD 進(jìn)行代碼調(diào)試8.1 ADS 集成開發(fā)環(huán)境組成介紹 ARM ADS 全稱為 ARM Developer Suite 。是
2、 ARM 公司推出的新一代 ARM 集成開發(fā)工具。 現(xiàn)在 ADS 的最新版本是 1.2,它取代了早期的ADS1.1 和 ADS1.0 。它除了可以安裝在Windows NT4 ,Windows 2000 ,Windows 98 和 Windows 95 操作系統(tǒng)下, 還支持 Windows XP 和 Windows Me 操作系統(tǒng)。ADS 由命令行開發(fā)工具, ARM 時(shí)實(shí)庫, GUI 開發(fā)環(huán)境 (Code Warrior 和 AXD) ,實(shí)用程序和 支持軟件組成。 有了這些部件,用戶就可以為 ARM 系列的 RISC 處理器編寫和調(diào)試自己的 開發(fā)應(yīng)用程序了。下面就詳細(xì)介紹一下 ADS 的各個(gè)組
3、成部分。8.1.1 命令行開發(fā)工具 這些工具完成將源代碼編譯,成可執(zhí)行代碼的功能。ADS 提供下面的命令行開發(fā)工具: armccarmcc 是 ARM C 編譯器。這個(gè)編譯器通過了 Plum Hall C Validation Suite 為 ANSI C 的一致 性測試。 armcc 用于將用 ANSI C 編寫的程序編譯成 32 位 ARM 指令代碼。因?yàn)?armcc 是我們最常用的編譯器,所以對此作一個(gè)詳細(xì)的介紹。 在命令控制臺環(huán)境下,輸入命令:armcc -help可以查看armcc的語法格式以及最常用的一些操作選項(xiàng)armcc 最基本的用法為: armcc options file1
4、file2 . filen 這里的option是編譯器所需要的選項(xiàng),fiel1,file2file是相關(guān)的文件名。這里簡單介紹一些最常用的操作選項(xiàng)。-c:表示只進(jìn)行編譯不文件;-C :(注意:這是大寫的C)禁止預(yù)編譯器將注釋行移走;-D<symbol> :定義預(yù)處理宏,相當(dāng)于在源程序開頭使用了宏定義語句 #define symbol , 這里 symbol 默認(rèn)為 1 ;-E:僅僅是對C源代碼進(jìn)行預(yù)處理就停止;-g<options> :指定是否在生成的目標(biāo)文件中包含調(diào)試信息表;-I<directory> :將 directory 所指的路徑添加到 #incl
5、ude 的搜索路徑列表中去; -J<directory> : 用 directory 所指的路徑代替默認(rèn)的對 #include 的搜索路徑;-o<file> :指定編譯器最終生成的輸出文件名。-O0 :不優(yōu)化;-O1 :這是控制代碼優(yōu)化的編譯選項(xiàng),大寫字母 O 后面跟的數(shù)字不同,表示的優(yōu)化級別就不 同, -O1 關(guān)閉了影響調(diào)試結(jié)果的優(yōu)化功能;-O2 :該優(yōu)化級別提供了最大的優(yōu)化功能;-S:對源程序進(jìn)行預(yù)處理和編譯,自動(dòng)生成匯編文件而不是目標(biāo)文件;-U<symbol> :取消預(yù)處理宏名,相當(dāng)于在源文件開頭,使用語句 #undef symbol; -W<o
6、ptions> :關(guān)閉所有的或被選擇的警告信息; 有關(guān)更詳細(xì)的選項(xiàng)說明,讀者可查看 ADS 軟件的在線幫助文件。armcpparmcpp 是 ARM C+ 編譯器。它將 ISO C+ 或 EC+ 編譯成 32 位 ARM 指令代碼。 tcctcc 是 Thumb C 編譯器。該編譯器通過了 Plum Hall C Validation Suite 為 ANSI 一致性的測試。 tcc 將 ANSI C 源代碼編譯成 16 位的 Thumb 指令代碼。tcpptcpp 是 Thumb C+ 編譯器。 它將 ISO C+ 和 EC+ 源碼編譯成 16 位 Thumb 指令代碼。 armasm
7、armasm 是 ARM 和 Thumb 的匯編器 . 它對用 ARM 匯編語言和 Thumb 匯編語言寫的源代碼 進(jìn)行匯編。armlink armlink 是 ARM 連接器。該命令既可以將編譯得到的一個(gè)或多個(gè)目標(biāo)文件和相關(guān)的一個(gè)或 多個(gè)庫文件進(jìn)行, 生成一個(gè)可執(zhí)行文件, 也可以將多個(gè)目標(biāo)文件部分成一個(gè)目標(biāo)文件, 以供 進(jìn)一步的。 ARM 器生成的是 ELF 格式的可執(zhí)行映像文件。armsdarmsd 是 ARM 和 Thumb 的符號調(diào)試器。它能夠進(jìn)行源碼級的程序調(diào)試。用戶可以在用C或匯編語言寫的代碼中進(jìn)行單步調(diào)試,設(shè)置斷點(diǎn),查看變量值和存單元的容。8.1.1.1 armcc 用法詳解 下
8、面為讀者介紹上述的 4 種 ARM C 和 C+ 編譯器的命令通用語法。compiler PCS-options source-language search-paths preprocessor-options output-format t arget-options debug-options code-generation-options warning-options additional-checks e rror-options source 用戶可以通過命令行操作選項(xiàng)控制編譯器的執(zhí)行。所有的選項(xiàng)都是以符號”-”開始,有些選項(xiàng)后面還跟有參數(shù)。在大多數(shù)情況下, ARM C和C+編譯
9、器允許在選項(xiàng)和參數(shù)之間存在空 格。命令行中各個(gè)選項(xiàng)出現(xiàn)順序可以任意。這里的 compiler 是指 armcc , tcc, armcpp 和 tcpp 中的一個(gè);PCS-optio ns :指定了要使用的過程調(diào)用標(biāo)準(zhǔn);source-language:指定了編譯器可以接受的編寫源程序的語言種類。對于C編譯器默認(rèn)的語言是 ANSI C ,對于 C+ 編譯器默認(rèn)是 ISO 標(biāo)準(zhǔn) C+;search-paths:該選項(xiàng)指定了對包含的文件(包括源文件和頭文件)的搜索路徑; preprocessor-options:該選項(xiàng)指定了預(yù)處理器的行為,其中包括預(yù)處理器的輸出和宏定義等 特性;output-for
10、mat :該選項(xiàng)指定了編譯器的輸出格式,可以使用該項(xiàng)生成匯編語言輸出列表文件 和目標(biāo)文件;target-options :該選項(xiàng)指定目標(biāo)處理器或ARM體系結(jié)構(gòu);debug-opti ons:該選項(xiàng)指定調(diào)試信息表是否生成,和該調(diào)試信息表生成時(shí)的格式; code-generation-options :該選項(xiàng)指定了例如優(yōu)化,字節(jié)順序和由編譯器產(chǎn)生的數(shù)據(jù)對齊格式 等選項(xiàng);warning-options :該選項(xiàng)決定警告信息是否產(chǎn)生;additional-checks :該選項(xiàng)指定了幾個(gè)能用于源碼的附加檢查,例如檢查數(shù)據(jù)流異常,檢查 沒有使用的聲明等;error-options :該選項(xiàng)可以關(guān)閉指定的
11、可恢復(fù)的錯(cuò)誤,或者將一些指定的錯(cuò)誤降級為警告;source:該選項(xiàng)提供了包含有 C或C+源代碼的一個(gè)或多個(gè)文件名,默認(rèn)的,編譯器在當(dāng)前 路徑尋找源文件和創(chuàng)建輸出文件。如果源文件是用匯編語言編寫的(也就是說該文件的文件名是以.s作為擴(kuò)展名),匯編器將被調(diào)用來處理這些源文件。如果操作系統(tǒng)對命令行的長度有限制, 可以使用下面的操作, 從文件中讀取另外的命令行選 項(xiàng):-via filename該命令打開文件名為 filename 的文件, 并從中讀取命令行選項(xiàng)。 用戶可以對 -via 進(jìn)行嵌套調(diào) 用,亦即,在文件 filename 中又通過 -via finlename2 包含了另外一個(gè)文件。在下面的
12、例子中,從 input.txt 文件中讀取指定的選項(xiàng),作為 armcpp 的操作選項(xiàng):armcpp -via input.txt source.c以上是對編譯器選項(xiàng)的一個(gè)簡單概述。它們(包括后面還要介紹的其他一些命令工具)既可以在命令控制臺環(huán)境下使用,同時(shí)由于它們被嵌入到了 ADS 的圖形界面中,所以也可以在圖 形界面下使用。8.1.1.2 armlink 用法詳解在介紹 armlink 的使用方法之前,先介紹要涉及到的一些術(shù)語。映像文件(image):是指一個(gè)可執(zhí)行文件,在執(zhí)行的時(shí)候被加載到處理器中。一個(gè)映像文件 有多個(gè)線程。它是 ELF(Executable and linking for
13、mat) 格式的。段(Section):描述映像文件的代碼或數(shù)據(jù)塊。R0:是Read-only的簡寫形式。RW:是Read-write.的簡寫形式。ZI :是 Zero-initialized 的簡寫形式。輸入段 (input section) :它包含著代碼, 初始化數(shù)據(jù)或描述了在應(yīng)用程序運(yùn)行之前必須要初始 化為 0 的一段存。輸出段(output section):它包含了一系列具有相同的 RO,RW或ZI屬性的輸入段。域(Regions):在一個(gè)映像文件中,一個(gè)域包含了1至3個(gè)輸出段。多個(gè)域組織在一起,就構(gòu)成了最終的映像文件。Read Only Position Independent(
14、ROPI) :它是指一個(gè)段, 在這個(gè)段中代碼和只讀數(shù)據(jù)的地址在 運(yùn)行時(shí)候可以改變。Read Write Position Independent(RWPI) :它是指一個(gè)段,在該段中的可讀 /寫的數(shù)據(jù)地址在運(yùn) 行期間可以改變。加載時(shí)地址:是指映像文件位于存儲(chǔ)器(在該映像文件沒有運(yùn)行時(shí))中的地址。運(yùn)行時(shí)地址:是指映像文件在運(yùn)行時(shí)的地址。下面介紹一下 armlink 命令的語法 完整的連接器命令語法如下:armlink -help -vsn -partial -output file -elf -reloc-ro-base address -ropi-rw-base address -rwpi -
15、split-scatter file-debug|-nodebug-remove?RO/RW/ZI/DBG|-noremove -entry location -keep section-id -first section-id -last section-id -libpath pathlist -scanlib|-noscanlib -local s|-nolocals -callgraph -info topics -map -symbols -symdefs file -edit file -xref -xreffr om object(section) -xrefto object(
16、section) -errors file -list file -verbose-unmangled |-mangled -match crossmangled-via file -strict-unresolved symbol-MI|-LI|-BI input-file-list 上面各選項(xiàng)的含義分別為:-help 這個(gè)選項(xiàng)會(huì)列出在命令行中常用的一些選項(xiàng)操作。-vsn 這個(gè)選項(xiàng)顯示出所用的 armlink 的版本信息。-partial 用這個(gè)選項(xiàng)創(chuàng)建的是部分的目標(biāo)文件而不是可執(zhí)行映像文件。-output file這個(gè)選項(xiàng)指定了輸出文件名, 該文件可能是部分的目標(biāo)文件, 也可能是可執(zhí)行映像
17、文件。 如 果輸出文件名沒有特別指定的話, armlink 將使用下面的默認(rèn): 如果輸出是一個(gè)可執(zhí)行映像文件,則生成的輸出文件名為_image.axf ;如果輸出是一個(gè)部分的目標(biāo)文件,在生成的文件名為_object.o;如果沒有指定輸出文件的路徑信息, 則輸出文件就在當(dāng)前目錄下生成。 如果指定了路徑信息, 則所指定的路徑成為輸出文件的當(dāng)前路徑。-elf這個(gè)選項(xiàng)生成 ELF 格式的映像文件, 這也是 armlink 所支持的唯一的一種輸出格式, 這是默 認(rèn)選項(xiàng)。-reloc 這個(gè)選項(xiàng)生成可重定址的映像。一個(gè)可重定址的映像具有動(dòng)態(tài)的段,這個(gè)段中包含可重定址信息,利用這些信息可以在后, 進(jìn)行映像文件
18、的重新定址;-reloc, -rw-base 一起使用,但是如果沒有 -split 選項(xiàng),時(shí)會(huì)產(chǎn)生錯(cuò)誤。-ro-base address這個(gè)選項(xiàng)將包含有 R0(Read-0nly屬性)輸出段的加載地址和運(yùn)行地址設(shè)置為address,該地址必須是字對齊的,如果沒有指定這個(gè)選項(xiàng),則默認(rèn)的 RO 基地址值為 0x8000。-ropi這個(gè)選項(xiàng)使得包含有 R0 輸出段的加載域和運(yùn)行域是位置無關(guān)的。 如果該選項(xiàng)沒有使用, 則 相應(yīng)的域被標(biāo)記為絕對的。 通常每一個(gè)只讀屬性的輸入段必須是只讀位置無關(guān)的。 如果使用 了這個(gè)選項(xiàng), armlink 將會(huì)進(jìn)行以下操作:檢查各段之間的重定址是否有效; 確保任何由 ar
19、mlink 自身生成的代碼是只讀位置無關(guān)的。這里希望讀者注意的是, ARM 工具直到 armlink 完成了對輸入段的處理后,才能夠決定最 終的生成映像是否為只讀位置無關(guān)的。這就意味著,即使為編譯器和匯編器指定了 R0PI選項(xiàng), armlink 也可能會(huì)產(chǎn)生 R0PI 錯(cuò)誤信息。-rw-base address這個(gè)選項(xiàng)設(shè)置包含 RW(Read/Write 屬性 )輸出段的域的運(yùn)行時(shí)地址,該地址必須是字對齊的。如果這個(gè)選項(xiàng)和 -split 選項(xiàng)一起使用,將設(shè)置包含 RW 輸出段的域的加載和運(yùn)行時(shí)地址都設(shè) 置在address處。-rwpi這個(gè)選項(xiàng)使得包含有 RW 和 ZI(Zero Initial
20、ization ,初始化為 0)屬性的輸出段的加載和運(yùn)行時(shí) 域?yàn)槲恢脽o關(guān)的。如果該選項(xiàng)沒有使用,相應(yīng)域標(biāo)記為絕對的。這個(gè)選項(xiàng)要求-rw-base 選項(xiàng)后有值,如果 -rw-base 沒有指定的話,默認(rèn)其值為0,即相當(dāng)于 -rw-base 0。通常每一個(gè)可寫的輸入段必須是可讀 / 可寫的位置無關(guān)的。如果使用了該選項(xiàng), armlink 會(huì)進(jìn)行以下的操作:檢查可讀 /可寫屬性的運(yùn)行域的輸入段是否設(shè)置了位置無關(guān)屬性; 檢查在各段之間的重定址是否有效;生成基于靜態(tài)寄存器 sb的條目,這些在 RO和RW域被拷貝和初始化的時(shí)候會(huì)用到。編譯器并不會(huì)強(qiáng)制可寫的數(shù)據(jù)一定要為位置無關(guān)的, 這就是說, 即使在為編譯器
21、和匯編器指 定了 RWPI 選項(xiàng), armlink 也可能生成數(shù)據(jù)不是 RWPI 的信息。-split這個(gè)選項(xiàng)將包含 RO和RW屬性的輸出段的加載域,分割成2個(gè)加載域。一個(gè)是包含RO輸出段的加載域,默認(rèn)的加載地址為0x8000,但是可以用-ro-base選項(xiàng)設(shè)置其他的地址值,另一個(gè)加載域包含 RO 屬性的輸出段,由 -rw-base 選項(xiàng)指定加載地址,如果沒有使用 -rw-base 選項(xiàng)的話,默認(rèn)使用的是 -rw-base 0。-scatter file這個(gè)選項(xiàng)使用在 file 中包含的分組和定位信息來創(chuàng)建映像存映射。 注意,如果使用了該選項(xiàng)的話,必須要重新實(shí)現(xiàn)堆棧初始化函數(shù)_user_ini
22、tial_stackheap() 。-debug這個(gè)選項(xiàng)使輸出文件包含調(diào)試信息, 調(diào)試信息包括,調(diào)試輸入段, 符號和字符串表。這是默 認(rèn)的選項(xiàng)。-nodebug這個(gè)選項(xiàng)使得在輸出文件中不包含調(diào)試信息。 生成的映像文件短小, 但是不能進(jìn)行源碼級的 調(diào)試。 armlink 對在輸入的目標(biāo)文件和庫函數(shù)中發(fā)現(xiàn)的任何調(diào)試輸入段都不予處理,當(dāng)加載 映像文件到調(diào)試器中的時(shí)候, 也不包含符號和字符串信息表。 這個(gè)選項(xiàng)僅僅是對裝載到調(diào)試 器的映像文件的大小有影響,但是對要下載到目標(biāo)板上的二進(jìn)制代碼的大小沒有任何影響。 如果用 armlink 進(jìn)行部分生成目標(biāo)文件而不是映像文件,則雖然在生成的目標(biāo)文件中不含有 調(diào)
23、試輸入段,但是會(huì)包含符號和字符串信息表。這里特別請讀者注意的是:如果要在完成后使用 fromELF 工具的話,不可使用 -nodebug 選項(xiàng),這是因?yàn)槿绻傻挠?像文件中不包含調(diào)試信息的話,則有下面的影響:fromELF 不能將映像文件轉(zhuǎn)換成其他格式的文件;fromELF 不能生成有意義的反匯編列表。-remove (RO/RW/ZI/DBG) 使用這個(gè)選項(xiàng)會(huì)將在輸入段未使用的段從映像文件中刪除。 如果輸入段中含有映像文件入口 點(diǎn)或者該輸入段被一個(gè)使用的段所引用,則這樣的輸入段會(huì)當(dāng)作已使用的段。在使用這個(gè)選項(xiàng)時(shí)候要注意, 不要?jiǎng)h除異常處理函數(shù)。 使用 -keep 選項(xiàng)來標(biāo)識異常處理函數(shù),
24、或用 ENTRY 偽指令標(biāo)明是入口點(diǎn)。為了更精確的控制刪除未使用的段, 可以使用段屬性限制符。 可以使用以下的段屬性限制符:RO刪除所有未使用的 RO 屬性的段;RW刪除所有未使用的ZI刪除所有未使用的DBG刪除所有未使用的RW 屬性的段;ZI 屬性的段;DEBUG 屬性的段。這些限制符出現(xiàn)的順序是任意的, 但是它們必須要有 ”() ”括住, 多個(gè)限制符之間要用符號 ”/進(jìn)行間隔。 ADS 軟件中默認(rèn)選項(xiàng)是 -remove (RO/RW/ZI/DBG) 。 如果沒有指定段屬性限制符,則所有未使用的段都會(huì)被刪除。因?yàn)?-remove 就等價(jià)于 -remove(RO/RW/ZI/DBG) 選項(xiàng)。-
25、noremove 這個(gè)選項(xiàng)保留映像文件中所有未被使用的段。-entry location這個(gè)選項(xiàng)指定映像文件中唯一的初始化入口點(diǎn)。 一個(gè)映像文件可以包含多個(gè)入口點(diǎn), 使用這 個(gè)命令定義的初始化入口點(diǎn)是存放在可執(zhí)行文件的頭部, 以供加載程序加載時(shí)使用。 當(dāng)一個(gè) 映像文件被裝載時(shí), ARM 調(diào)試器使用這個(gè)入口點(diǎn)地址來初始化 PC 指針。初始化入口點(diǎn)必 須滿足下面的條件:映像文件的入口點(diǎn)必須位于運(yùn)行域; 運(yùn)行域必須是非覆蓋的,并且必須是固定域(就是說,加載域和運(yùn)行域的地址相同)。在這里可以用以下的參數(shù)代替 location 參數(shù):1. 入口點(diǎn)地址:這是一個(gè)數(shù)值,例如 -entry 0x0 ;2. 符
26、號:該選項(xiàng)指定映像文件的入口點(diǎn)為該符號所代表的地址處,比如:-entry int_handler 表示程序入口點(diǎn)在符號 int_handler 所在處。如果該符號有多處定義存在, armlink 將產(chǎn)生出錯(cuò)信息。 offset+object(section) :該選項(xiàng)指定在某個(gè)目標(biāo)文件的段的部的某個(gè)偏移量處為映像文件的入 口地址,例如:-entry 8+startup(startupseg)如果偏移量值為 0,可以簡寫成 object(section) ,如果輸入段只有一個(gè), 則可以簡化為 object 。 -keep section-id使用該選項(xiàng),可以指定保留一個(gè)輸入段,這樣的話,即使該輸
27、入段沒有在映像文件中使用, 也不會(huì)被刪除。參數(shù) section-id 取下面一些格式:1 symbol該選項(xiàng)指定定義 symbol 的輸入段不會(huì)在刪除未使用的段時(shí)被刪除。如果映像文件中有多處 symbol 定義存在,則所有包含 symbol 定義的輸入段都不會(huì)被刪除。例如:-keep int_handler則所有定義 int_handler 的符號的段都會(huì)保留,而不被刪除。 為了保留所有含有以 _handler 結(jié)尾的符號的段,可以使用如下的選項(xiàng):-keep *_handler2 object(section) 這個(gè)選項(xiàng)指定了在刪除未使用段時(shí),保留目標(biāo)文件中的 section 段。輸入段和目標(biāo)
28、名是不區(qū) 分大小寫的,例如,為了在目標(biāo)文件 vectors.o 中保留 vect 段,使用:-keep vectors.o(vect)為了保留 vectors.o 中的所有以 vec 開頭的段名,可以使用選項(xiàng):-keep vectors.o(vec*)3 object 這個(gè)選項(xiàng)指定在刪除未使用段時(shí), 保留該目標(biāo)文件唯一的輸入段。 目標(biāo)名是不區(qū)分大小寫的, 如果使用這個(gè)選項(xiàng)的時(shí)候,目標(biāo)文件中所含的輸入段不止一個(gè)的話, armlink 會(huì)給出出錯(cuò)信 息。比如, 為了保留每一個(gè)以 dsp 開頭的只含有唯一輸入段的目標(biāo)文件,可以使用如下的選 項(xiàng):-keep dsp*.o-first section-i
29、d這個(gè)選項(xiàng)將被選擇的輸入段放在運(yùn)行域的開始。 段放置在映像文件的開始,可以用下面的參數(shù)代替 1 symbol選擇定義 symbol 的段。禁止指定在多處定義的 的開始。2 object(section) 從目標(biāo)文件中選擇段放在映像文件的開始位置。 如通過該選項(xiàng), 將包含復(fù)位和中斷向量地址的 section-id:symbol,因?yàn)槎鄠€(gè)段不能同時(shí)放在映像文件在目標(biāo)文件和括號之間不允許存在空格, 例-first init.o(init)3 o bject選擇只有一個(gè)輸入段的目標(biāo)文件。如果這個(gè)目標(biāo)文件包含多個(gè)輸入段,armlink 會(huì)產(chǎn)生錯(cuò)誤信息。用這個(gè)選項(xiàng)的例子如下:-first init.o這里
30、希望讀者注意的是:使用-first不能改變在域中按照 RO段放在開始,接著放置 RW段,最后放置ZI段的基本屬 性排放順序。如果一個(gè)域含有 RO 段, 則 RW 或 ZI 段就不能放在映像文件的開頭。 類似地, 如果一個(gè)域有 RO 或 RW 段,則 ZI 段就不能放在文件開頭。兩個(gè)不同的段不能放在同一個(gè)運(yùn)行時(shí)域的開頭, 所以使用該選項(xiàng)的時(shí)候只允許將一個(gè)段放在 映像文件的開頭。-last section-id這個(gè)選項(xiàng)將所選擇的輸入段放在運(yùn)行域的最后。 例如, 用這個(gè)選項(xiàng)能夠強(qiáng)制性的將包含校驗(yàn) 和的輸入段放置在RW段的最后。使用下面的參數(shù)可以替換section-id。1. symbol選擇定義sy
31、mbol的段放置在運(yùn)行域的最后。不能指定一個(gè)有多處定義的symbol。使用該參數(shù)的例子如下:-last checksum2. object(section)從目標(biāo)文件中選擇 section 段。在目標(biāo)文件和后面的括號間不能有空格, 用該參數(shù)的例子為:-last checksum.o(check)3. object選擇只有一個(gè)輸入段的目標(biāo),如果該目標(biāo)文件中有多個(gè)輸入段,armlink 會(huì)給出出錯(cuò)信息。和-first選項(xiàng)一樣,需要讀者注意的是;使用-last選項(xiàng)不能改變在域中將RO段放在開始,接著放置RW段,最后放置ZI段的輸出段基本的排放順序。如果一個(gè)域含有ZI段,則RW段不能放在最后,如果一個(gè)
32、域含有RW或 ZI 段,則 RO 段不能放在最后。在同一個(gè)運(yùn)行域中,兩個(gè)不同的段不能同時(shí)放在域的最后位置。-libpath pathlist這個(gè)選項(xiàng)為 ARM 標(biāo)準(zhǔn)的 C 和 C+ 庫指定了搜索路徑列表。 注意,這個(gè)選項(xiàng)不會(huì)影響對用戶庫的搜索路徑。這個(gè)選項(xiàng)覆蓋了環(huán)境變量 ARMLIB 所指定的路徑。 參數(shù) pathlist 是一個(gè)以逗號分開的多個(gè)路 徑列表,即為 pathl, path2,. pathn,這個(gè)路徑列表只是用來搜索要用到的ARM庫函數(shù)。默認(rèn)的,對于包含 ARM 庫函數(shù)的默認(rèn)路徑是由環(huán)境變量 ARMLIB 所指定的。-scanlib這個(gè)選項(xiàng)啟動(dòng)對默認(rèn)庫(標(biāo)準(zhǔn)ARM C和C+庫)的掃
33、描以解析引用的符號。這個(gè)選項(xiàng)是默認(rèn) 的設(shè)置。-noscanlib該選項(xiàng)禁止在時(shí)候掃描默認(rèn)的庫。-locals 這個(gè)選項(xiàng)指導(dǎo)器在生成一個(gè)可執(zhí)行映像文件的時(shí)候,將本地符號添加到輸出符號信息表中。該選項(xiàng)是默認(rèn)設(shè)置。-nolocals這個(gè)選項(xiàng)指導(dǎo)器在生成一個(gè)可執(zhí)行映像文件的時(shí)候, 不要將本地符號添加到輸出符號信息表 中。如果想減小輸出符號表的大小,可以使用該選項(xiàng)。-callgraph該選項(xiàng)創(chuàng)建一個(gè) HTML 格式的靜態(tài)函數(shù)調(diào)用圖。這個(gè)調(diào)用圖給出了映像文件中所有函數(shù)的 定義和引用信息。對于每一個(gè)函數(shù)它列出了:1. 函數(shù)編譯時(shí)候的處理器狀態(tài) (ARM 狀態(tài)還是 Thumb 狀態(tài));2. 調(diào)用 func 函
34、數(shù)的集合;3. 被 func 調(diào)用的函數(shù)的集合;4. 在映像文件中使用的 func 尋址的次數(shù)。 此外,調(diào)用圖還標(biāo)識了下面的函數(shù):1. 被 interworking veneers 所調(diào)用的函數(shù);2. 在映像文件外部定義的函數(shù);3. 允許未被定義的函數(shù) (以 weak 方式的引用);靜態(tài)調(diào)用圖還提供了堆棧使用信息,它顯示出了:1. 每個(gè)函數(shù)所使用的堆棧大?。?. 在全部的函數(shù)調(diào)用中,所用到的最大堆棧大小。-info topics這個(gè)選項(xiàng)打印出關(guān)于指定種類的信息,這里的參數(shù)topics 是指用逗號間隔的類型標(biāo)識符列表。類型標(biāo)識符列表可以是下面所列出的任意一個(gè):1. sizes為在映像文件中的每一
35、個(gè)輸入對象和庫成員列出了代碼和數(shù)據(jù) (這里的數(shù)據(jù)包括, RO 數(shù)據(jù), RW 數(shù)據(jù), ZI 數(shù)據(jù)和 Debug 數(shù)據(jù) )的大小;2. totals為輸入對象文件和庫,列出代碼和數(shù)據(jù)(這里的數(shù)據(jù)包括, RO 數(shù)據(jù), RW 數(shù)據(jù), ZI 數(shù)據(jù)和Debug 數(shù)據(jù) ) 總的大??;3. veneers給出由armlink生成的veneers的詳細(xì)信息;4. unused列出由于使用-remove選項(xiàng)而從映像文件中被刪除的所有未使用段。注意:在信息類型標(biāo)識符列表之間不能存在空格,比如可以輸入-info sizes,totals但是不能是-info sizes, totals( 即在逗號和 totals 之間
36、有空格是不允許的 )-map這個(gè)選項(xiàng)創(chuàng)建映像文件的信息圖。 映像文件信息圖包括映像文件中的每個(gè)加載域, 運(yùn)行域和 輸入段的大小和地址,這里的輸入段還包括調(diào)試信息和器產(chǎn)生的輸入段。-symbols 這個(gè)選項(xiàng)列出了的時(shí)候使用的每一個(gè)局部和全局符號。該符號還包括生成的符號。-symdefs file 這個(gè)選項(xiàng)創(chuàng)建一個(gè)包含來自輸出映像文件的全局符號定義的符號定義文件。 默認(rèn)的,所有的全局符號都寫入到符號定義文件中。如果文件 file 已經(jīng)存在,器將限制生成 在已存在的 symdefs 文件中已列出的符號。如果文件 file 沒有指明路徑信息, 器將在輸出映像文件的路徑搜索文件。 如果文件沒有找到, 就
37、會(huì)在該目錄下面創(chuàng)建文件。在另一個(gè)映像文件的時(shí)候,可以將符號定義文件作為的輸入文件。-edit file這個(gè)選項(xiàng)指定一個(gè) steering 類型的文件,該文件包含用于修改輸出文件中的符號信息表的命 令。可以在 steering 文件中指定具有以下功能的命令: 隱藏全局符號。使用該選項(xiàng)可以在目標(biāo)文件中隱藏指定的全局符號。重命名全局符號。使用這個(gè)選項(xiàng)可以解決符號命名沖突的現(xiàn)象。-xref 該選項(xiàng)列出了在輸入段間的所有交叉引用。-xreffrom object(section) 這個(gè)選項(xiàng)列出了從目標(biāo)文件中的輸入段對其他輸入段的交叉引用。 如果想知道某個(gè)指定的輸 入段中的引用情況,就可以使用該選項(xiàng)。-x
38、refto object(section) 該選項(xiàng)列出了從其他輸入段到目標(biāo)文件輸入段的引用。-errors file 使用該選項(xiàng)會(huì)將診斷信息從標(biāo)準(zhǔn)輸出流重定向到文件 file 中。-list file該選項(xiàng)將-info , -map, -symbols , -xref, -xreffrom 和-<refto 這幾個(gè)選項(xiàng)的輸出重新定向到 文件 file 中。如果文件 file 沒有指定路徑信息, 就會(huì)在輸出路徑創(chuàng)建該文件, 該路徑是輸出映像文件所在 的路徑。-verbose 這個(gè)選項(xiàng)將有關(guān)操作的細(xì)節(jié)打印出來,包括所包括的目標(biāo)文件和要用到的庫。-unmangled該選項(xiàng)指定器在由 xref,
39、 -xreffrom , -xrefto ,和 -symbols 所生成的診斷信息中顯示出 unmangled C+ 符號名。如果使用了這個(gè)選項(xiàng),器將unman gle C+符號名以源碼的形式顯示出來。這個(gè)選項(xiàng)是默認(rèn)的。-mangled這個(gè)選項(xiàng)指定器顯示由 -xref, -xreffrom , -xrefto ,和 -symbols 所產(chǎn)生的診斷信息中的 man gled C+符號名。如果使用了該選項(xiàng),器就不會(huì)un ma ngle C+符號名了。符號名是按照它們在目標(biāo)符號表中顯示的格式顯示的。-via file該選項(xiàng)表示從文件 file 中讀取輸入文件名列表和器選項(xiàng)。在 armlink 命令行
40、可以輸入多個(gè) -via 選項(xiàng),當(dāng)然, -via 選項(xiàng)也能夠不含在一個(gè) via 文件中。 -strict這個(gè)選項(xiàng)告訴器報(bào)告可能導(dǎo)致錯(cuò)誤而不是警告的條件。-unresolved symbol這個(gè)選項(xiàng)將未被解析的符號指向全局符號symbol。Symbol必須是已定義的全局符號,否則,symbol 會(huì)當(dāng)作一個(gè)未解析的符號,將以失敗告終。這個(gè)選項(xiàng)在自上而下的開發(fā)中尤為有用, 在這種情況下, 通過將無法指向相應(yīng)函數(shù)的引用指向一個(gè)偽函數(shù)的方法,可以測試一個(gè)部分實(shí)現(xiàn)的系統(tǒng)。該選項(xiàng)不會(huì)顯示任何警告信息。input-file-list 這是一個(gè)以空格作為間隔符的目標(biāo)或庫的列表。有一類特殊的目標(biāo)文件,即 symde
41、f 文件,也可以包含在文件列表中,為生成的映像文件提 供全局的 symbol 值。在輸入文件列表中有兩種使用庫的方法。1. 指定要從庫中提取并作為目標(biāo)文件添加到映像文件中的特定的成員。2. 指定某庫文件,器根據(jù)需要從其中提取成員。armlink 按照以下的順序處理輸入文件列表:1. 無條件的添加目標(biāo)文件2. 使用匹配模式從庫中選擇成員加載到映像文件中去。例如使用下面的命令:armlink main.o mylib(stdio.o) mylib(a*.o).將會(huì)無條件的把 mylib庫中所有的以字母 a開頭的目標(biāo)文件和stdio.o在的時(shí)候到生成的映像 文件中去。3. 添加為解析尚未解析的引用的
42、庫到庫文件列表。8.1.2 ARM 運(yùn)行時(shí)庫本小節(jié)為讀者介紹一下 ARM C/C+ 庫方面的相關(guān)容。8.1.2.1 運(yùn)行時(shí)庫類型和建立選項(xiàng)ADS提供以下的運(yùn)行時(shí)庫來支持被編譯的C和C+代碼:ANSI C 庫函數(shù):這個(gè) C 函數(shù)庫是由以下幾部分組成:1 在 ISO C 標(biāo)準(zhǔn)中定義的函數(shù);2 在 semihosted 環(huán)境下 (semihosting 是針對 ARM 目標(biāo)機(jī)的一種機(jī)制,它能夠根據(jù)應(yīng)用程 序代碼的輸入 /輸出請求,與運(yùn)行有調(diào)試功能的主機(jī)通訊。這種技術(shù)允許主機(jī)為通常沒有輸 入和輸出功能的目標(biāo)硬件提供主機(jī)資源)用來實(shí)現(xiàn)C庫函數(shù)的與目標(biāo)相關(guān)的函數(shù);3. 被C和C+編譯器所調(diào)用的支持函數(shù)。A
43、RM C庫提供了額外的一些部件支持C+,并為不同的結(jié)構(gòu)體系和處理器編譯代碼。C+庫函數(shù):C+庫函數(shù)包含由ISO C+庫標(biāo)準(zhǔn)定義的函數(shù)。C+庫依賴于相應(yīng)的 C庫實(shí)現(xiàn)與特定目標(biāo)相 關(guān)的部分,在C+庫的部本身是不包含與目標(biāo)相關(guān)的部分。這個(gè)庫是由以下幾部分組成的:1. 版本為 2.01.01 的 Rogue Wave Standard C+庫;2. C+編譯器使用的支持函數(shù);3. Rogue Wave庫所不支持的其他的 C+函數(shù)。正如上面所說, ANSI C 庫使用標(biāo)準(zhǔn)的 ARM semihosted 環(huán)境提供例如,文件輸入 /輸出的功 能。 Semihosting 是由已定義的軟件中斷 (Softw
44、are Interrupt) 操作來實(shí)現(xiàn)的。在大多數(shù)的情況 下, semihosting SWI 是被庫函數(shù)部的代碼所觸發(fā),用于調(diào)試的代理程序處理SWI 異常。調(diào)試代理程序?yàn)橹鳈C(jī)提供所需要的通信。Semihosted被ARMulator , An gel和Multi-ICE所支持。用戶可以使用在 ADS 軟件中的 ARM 開發(fā)工具去開發(fā)用戶應(yīng)用程序, 然后在 ARMulator 或在一個(gè)開發(fā)板上運(yùn)行和調(diào)試該程序。用戶可以把 C 庫中的與目標(biāo)相關(guān)的函數(shù)作為自己應(yīng)用程序中的一部分,重新進(jìn)行代碼的實(shí) 現(xiàn)。這就為用戶帶來了極大的方便,用戶可以根據(jù)自己的執(zhí)行環(huán)境,適當(dāng)?shù)牟眉?C 庫函數(shù)。 除此之外,用戶
45、還可以針對自己的應(yīng)用程序的要求, 對與目標(biāo)無關(guān)的庫函數(shù)進(jìn)行適當(dāng)?shù)牟眉簟?在 C 庫中有很多函數(shù)是獨(dú)立于其他函數(shù)的,并且與目標(biāo)硬件沒有任何依賴關(guān)系。對于這類 函數(shù),用戶可以很容易地從匯編代碼中使用它們。在建立自己的用戶應(yīng)用程序的時(shí)候,用戶必須指定一些最基本的操作選項(xiàng)。例如: 字節(jié)順序,是大端模式 (big endian: 字?jǐn)?shù)據(jù)的高字節(jié)存放在低地址,低字節(jié)存放在高地址),還是小端模式 (little endian: 字?jǐn)?shù)據(jù)的高字節(jié)存放在高地址,低字節(jié)存放在低地址);浮點(diǎn)支持:可能是 FPA, VFP,軟件浮點(diǎn)處理或不支持浮點(diǎn)運(yùn)算; 堆棧限制:是否檢查堆棧溢出;位置無關(guān) (PID) :數(shù)據(jù)是從與位
46、置無關(guān)的代碼還是從與位置相關(guān)的代碼中讀/寫,代碼是位置無關(guān)的只讀代碼還是位置相關(guān)的的只讀代碼。當(dāng)用戶對匯編程序, C 程序或 C+ 程序進(jìn)行的時(shí)候, 器會(huì)根據(jù)在建立時(shí)所指定的選項(xiàng), 選擇 適當(dāng)?shù)腃或C+運(yùn)行時(shí)庫的類型。選項(xiàng)各種不同組合都有一個(gè)相應(yīng)的ANSI C庫類型。8.1.2.2 庫路徑結(jié)構(gòu)庫路徑是在 ADS 軟件安裝路徑的 lib 目錄下的兩個(gè)子目錄。假設(shè), ADS 軟件安裝在 e:armadsv1_2 目錄,則在 e:armadsv1_2lib 目錄下的兩個(gè)子目錄 armlib 和 cpplib 是 ARM 的庫所在的路徑。armlib這個(gè)子目錄包含了 ARM C 庫,浮點(diǎn)代數(shù)運(yùn)算庫,數(shù)
47、學(xué)庫等各類庫函數(shù)。與這些庫相應(yīng)的頭文件在 e:armadsv1_2include 目錄中。cpplib這個(gè)子目錄包含了 Rogue Wave C+ 庫和 C+ 支持函數(shù)庫。 Rogue Wave C+ 庫和 C+ 支持函 數(shù)庫合在一起被稱為 ARM C+ 庫。與這些庫相應(yīng)的頭文件安裝在 e:armadsv1_2include 目 錄下。環(huán)境變量 ARMLIB 必須被設(shè)置成指向庫路徑。另外一種指定 ARM C 和 ARM C+ 庫路徑的 方法是,在的時(shí)候使用操作選項(xiàng) -libpath directory(directory 代表庫所在的路徑 ),來指明要裝 載的庫的路徑。無需對 armlib 和
48、 cpplib 這兩個(gè)庫路徑分開指明,器會(huì)自動(dòng)從用戶所指明的庫路徑中找出這 兩個(gè)子目錄。這里需要讓讀者特別注意的以下幾點(diǎn):1. ARM C 庫函數(shù)是以二進(jìn)制格式提供的;2. ARM 庫函數(shù)禁止修改。如果讀者想對庫函數(shù)創(chuàng)建新的實(shí)現(xiàn)的話,可以把這個(gè)新 的函數(shù)編譯成目標(biāo)文件, 然后在的時(shí)候把它包含進(jìn)來。 這樣在的時(shí)候, 使用的是新的函數(shù)實(shí) 現(xiàn)而不是原來的庫函數(shù)。3. 通常情況下,為了創(chuàng)建依賴于目標(biāo)的應(yīng)用程序,在 ANSI C 庫中只有很少的幾個(gè) 函數(shù)需要實(shí)現(xiàn)重建。4. Rogue Wave Standard C+ 函 數(shù) 庫 的 源 代 碼 不 是 免 費(fèi) 發(fā) 布 的 , 可 以 從 Rogue W
49、ave Software Inc. ,或 ARM 公司通過支付許可證費(fèi)用來獲得源文件。8.1.3 GUI 開發(fā)環(huán)境 (Code Warrior 和 AXD)8.1.3.1 CodeWarrior 集成開發(fā)環(huán)境CodeWarrior for ARM 是一套完整的集成開發(fā)工具,充分發(fā)揮了 ARM RISC 的優(yōu)勢 , 使產(chǎn)品 開發(fā)人員能夠很好的應(yīng)用尖端的片上系統(tǒng)技術(shù) . 該工具是專為基于 ARM RISC 的處理器而設(shè) 計(jì)的 , 它可加速并簡化嵌入式開發(fā)過程中的每一個(gè)環(huán)節(jié),使得開發(fā)人員只需通過一個(gè)集成軟件開發(fā)環(huán)境就能研制出 ARM 產(chǎn)品, 在整個(gè)開發(fā)周期中 ,開發(fā)人員無需離開 CodeWarrio
50、r 開發(fā) 環(huán)境 , 因此節(jié)省了在操做工具上花的時(shí)間 ,使得開發(fā)人員有更多的精力投入到代碼編寫上來, CodeWarrior 集成開發(fā)環(huán)境 (IDE) 為管理和開發(fā)項(xiàng)目提供了簡單多樣化的圖形用戶界面。 用戶 可以使用 ADS 的 CodeWarrior IDE 為 ARM 和 Thumb 處理器開發(fā)用 C,C+ ,或 ARM 匯編 語言的程序代碼。 通過提供下面的功能, CodeWarrior IDE 縮短了用戶開發(fā)項(xiàng)目代碼的周期。 1.全面的項(xiàng)目管理功能;2.子函數(shù)的代碼導(dǎo)航功能,使得用戶迅速找到程序中的子函數(shù)??梢栽?CodeWarrior IDE 為 ARM 配置在 8.1.1 中介紹的各
51、種命令工具, 實(shí)現(xiàn)對工程代碼的編 譯,匯編和。在 CodeWarrior IDE 中所涉及到的 target 有兩種不同的語義。目標(biāo)系統(tǒng) (Target system)是特指代碼要運(yùn)行的環(huán)境,是基于 ARM 的硬件。比如,要為 ARM 開發(fā)板上編寫要運(yùn)行在 它上面的程序,這個(gè)開發(fā)板就是目標(biāo)系統(tǒng)。生成目標(biāo) (Build target)是指用于生成特定的目標(biāo)文件的選項(xiàng)設(shè)置(包括匯編選項(xiàng),編譯選項(xiàng),選項(xiàng)以及后的處理選項(xiàng))和所用的文件的集合。CodeWarrior IDE 能夠讓用戶將源代碼文件,庫文件還有其他相關(guān)的文件以及配置設(shè)置等放 在一個(gè)工程中。 每個(gè)工程可以創(chuàng)建和管理生成目標(biāo)設(shè)置的多個(gè)配置。
52、例如, 要編譯一個(gè)包含 調(diào)試信息的生成目標(biāo)和一個(gè)基于 ARM7TDMI 的硬件優(yōu)化生成目標(biāo), 生成目標(biāo)可以在同一個(gè) 工程中共享文件,同時(shí)使用各自的設(shè)置。CodeWarrior IDE 為用戶提供下面的功能: 源代碼編輯器,它集成在 CodeWarrior IDE 的瀏覽器中,能夠根據(jù)語法格式,使用不同的顏 色顯示代碼; 源代碼瀏覽器,它保存了在源碼中定義的所有符號,能夠使用戶在源碼中快速方便的跳轉(zhuǎn); 查找和替換功能,用戶可以在多個(gè)文件中,利用字符串通配符,進(jìn)行字符串的搜索和替換; 文件比較功能,可以使用戶比較路徑中的不同文本文件的容。ADS 的 CodeWarrior IDE 是基于 Metr
53、owerks CodeWarrior IDE 4.2 版本的。它經(jīng)過適當(dāng)?shù)牟?剪以支持 ADS 工具鏈。針對 ARM 的配置面板為用戶提供了在 CodeWarrior IDE 集成環(huán)境下配置各種 ARM 開發(fā)工 具的能力, 這樣用戶可以不用在命令控制臺下就能夠使用在8.1.1 和將在 8.1.4 中介紹的各種命令。以 ARM 為目標(biāo)平臺的工程創(chuàng)建向?qū)?,可以使用戶以此為基礎(chǔ),快速創(chuàng)建 ARM 和 Thumb 工程。盡管大多數(shù)的 ARM 工具鏈已經(jīng)集成在 CodeWarrior IDE ,但是仍有許多功能在該集成環(huán)境 中沒有 實(shí) 現(xiàn) ,這些 功 能 大 多數(shù) 是和 調(diào) 試相 關(guān) 的, 因?yàn)?ARM
54、 的調(diào) 試 器沒 有集成 到 CodeWarrior IDE 中。由于 ARM 調(diào)試器 (AXD) 沒有集成在 CodeWarrior IDE 中,這就意味著,用戶不能在 CodeWarrior IDE 中進(jìn)行斷點(diǎn)調(diào)試和查看變量。對于熟悉 CodeWarrior IDE 的用戶會(huì)發(fā)現(xiàn),有許多的功能已經(jīng)從 CodeWarrior IDE For ARM 中移走,比如快速應(yīng)用程序開發(fā)模板等。在 CodeWarrior IDE For ARM 中有很多的菜單或子菜單是不能使用的。 下面介紹一下這些不 能使用的選項(xiàng)。1. View 菜單下不能使用的菜單選項(xiàng)有: Processes,Expression
55、s,Global Variable , Breakpoints , Registers。2. Project 菜單不能使用的菜單選項(xiàng):Precompile 子菜單。因?yàn)?ARM 編譯器不支持預(yù)編譯的頭文件。3. Debug 菜單 該菜單中沒有一個(gè)子菜單是可以使用的。4. Browser 菜單中不能使用的菜單選項(xiàng):New Property , New Method 和 New Event Set。5. Help menu 中不能用于 ADS 的菜單選項(xiàng)有:CodeWarrior Help , Index , Search 和 Online Manuals。有關(guān) CodeWarrior IDE 中
56、一些常用菜單的使用,將在后面的舉例中具體說明的,在此,不在 贅述。8.1.3.2 ADS 調(diào)試器 調(diào)試器本身是一個(gè)軟件,用戶通過這個(gè)軟件使用 debug agent 可以對包含有調(diào)試信息的,正 在運(yùn)行的可執(zhí)行代碼進(jìn)行比如變量的查看,斷點(diǎn)的控制等調(diào)試操作。ADS 中包含有 3 個(gè)調(diào)試器:AXD(ARM eXtended Debugger) :ARM 擴(kuò)展調(diào)試器; armsd(ARM Symbolic Debugger) : ARM 符號調(diào)試器; 與 老 版 本 兼 容 的 Windows 或 Unix 下 的 ARM 調(diào) 試 工 具 , ADW/ADU(Application Debugger Windows/Unix) 。下面對在調(diào)試映像文件中所涉及到的一些術(shù)語做一個(gè)簡單的介紹。Debug target 在軟件開發(fā)的最初階段, 可能還沒有具體的硬件設(shè)備。 如果要測試所開發(fā)的軟件是否達(dá)到了 預(yù)期的效果,這可以由軟件仿真來完成。即使調(diào)試器和要測試的軟件運(yùn)行在同一臺PC 上,也可以把目標(biāo)當(dāng)作一個(gè)獨(dú)立的硬件來看待。當(dāng)然,也可以搭建一個(gè) PCB 板,這個(gè)板上可以包含一個(gè)或多個(gè)處理器,在這個(gè)板上可以運(yùn) 行和調(diào)試應(yīng)用軟件。只有當(dāng)通過硬件或者是軟件仿真所得到的結(jié)果達(dá)到了預(yù)期的效果, 才算是完成了應(yīng)用程序的 編寫工作。調(diào)試器能夠發(fā)送以下指令:1.裝載映像文件到目標(biāo)存;2.啟動(dòng)或停止程序的執(zhí)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年氣體檢測監(jiān)控系統(tǒng)項(xiàng)目發(fā)展計(jì)劃
- 數(shù)字工具在傳統(tǒng)課堂中的應(yīng)用與效果分析
- 智能教育機(jī)器人在家庭教育的應(yīng)用前景
- 教育心理學(xué)實(shí)踐激勵(lì)學(xué)生的關(guān)鍵要素
- 教育公平政策與資源分配的實(shí)踐
- 學(xué)生自我效能感的培養(yǎng)教育心理學(xué)的秘密武器
- 教育技術(shù)的成功案例與實(shí)踐經(jīng)驗(yàn)分享
- 商業(yè)綜合體工程監(jiān)理案例分析
- 能源革新引領(lǐng)教育升級探索智能教育設(shè)施的新模式
- 商業(yè)行業(yè)如何推動(dòng)青少年健康飲食政策的落實(shí)
- 128個(gè)常用自然拼讀發(fā)音規(guī)則和1000句生活口語
- 異口同音公開課
- 專利代理人資格考試實(shí)務(wù)試題及參考答案
- 運(yùn)用信息技術(shù)助力勞動(dòng)教育創(chuàng)新發(fā)展 論文
- GB/T 602-2002化學(xué)試劑雜質(zhì)測定用標(biāo)準(zhǔn)溶液的制備
- GB/T 4074.8-2009繞組線試驗(yàn)方法第8部分:測定漆包繞組線溫度指數(shù)的試驗(yàn)方法快速法
- 2023年涉縣水庫投資管理運(yùn)營有限公司招聘筆試模擬試題及答案解析
- 新版有創(chuàng)血壓監(jiān)測ABP培訓(xùn)課件
- 重癥醫(yī)學(xué)科常用知情告知書
- 二等水準(zhǔn)測量記錄表
- 母線槽安裝檢驗(yàn)批質(zhì)量驗(yàn)收記錄
評論
0/150
提交評論