版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)設(shè)計與開發(fā)第9章 ARM嵌入式開發(fā)工具本章提要 9.1 ARM下層開發(fā)工具 9.2 ARM開發(fā)工具概述 9.3 ARM的ADS 9.4 Embest IDE的介紹9.1 ARM下層開發(fā)工具由于程序的編譯環(huán)境和運行環(huán)境不同,所以ARM嵌入式開發(fā)采用交叉編譯方法進(jìn)行。首先,在通用計算機上對源程序進(jìn)行編寫、編譯、匯編、連接形成可以在目標(biāo)系統(tǒng)上運行的目標(biāo)文件;接著,通過連接/調(diào)試裝置將目標(biāo)文件下載到目標(biāo)系統(tǒng)上運行;源程序在目標(biāo)系統(tǒng)上運行的情況連接裝置在計算機中反映出來,開發(fā)人員通過反映出的情況根據(jù)開發(fā)項目的需要進(jìn)行相應(yīng)的修改并重復(fù)上述操作直至達(dá)到項目開發(fā)預(yù)期結(jié)果。因此,可以把ARM嵌入式開發(fā)
2、工具分為上層裝在計算機中的開發(fā)工具、中間的連接裝置和下層的ARM芯片本身具有的支持嵌入式開發(fā)的工具。ARM 嵌入式系統(tǒng)實時開發(fā)組織結(jié)構(gòu)圖9.1.1 JTAG接口 JTAG接口標(biāo)準(zhǔn)是由測試聯(lián)合行動組(joint test action group)于19861988年推出的基于邊界掃描機制的標(biāo)準(zhǔn)化草案。1990年IEEE組織將這些草案標(biāo)準(zhǔn)化,并命名為IEEE 1149.1標(biāo)準(zhǔn),俗稱JTAG調(diào)試標(biāo)準(zhǔn)。JTAG除了實現(xiàn)通常意義上的調(diào)試功能外,還可實現(xiàn)代碼下載或單步執(zhí)行程序等功能。 邊界掃描機制主要的思想是:通過在內(nèi)部邏輯之間,即在內(nèi)部邏輯的邊界上增加串行的可讀寫的邊界掃描單元,從而提供芯片級、板級、
3、系統(tǒng)級的標(biāo)準(zhǔn)測試框架。邊界掃描機制可以實現(xiàn)下列目標(biāo):測試不同單元之間的連接。測試單個單元的功能。應(yīng)用邊界掃描寄存器完成其他測 試功能,如偽隨機測試、特征分 析和靜態(tài)測試等。JTAG接口 的6個主要信號 :1)Test Clock Input(TCK)。TCK為TAP的操作提供了一個 獨立的、基本的時鐘信號,TAP的所有操作都是通過這個時鐘信號來驅(qū)動的。TCK在IEEE 1149.1標(biāo)準(zhǔn)里是強制要求的。 2)Test Mode Selection Input(TMS)。TMS信號用來控制TAP狀態(tài)機的轉(zhuǎn)換,通過TMS信號,可以控制TAP在不同的狀態(tài)間相互轉(zhuǎn)換。TMS信號在TCK的上升沿有效。TM
4、S在IEEE 1149.1標(biāo)準(zhǔn)里是強制要求的。 3)Test Data Input(TDI)。TDI是數(shù)據(jù)輸入接口。所有要輸入到特定寄存器的數(shù)據(jù)都是通過TDI接口一位一位串行輸入的(由TCK驅(qū)動)。TDI在IEEE 1149.1標(biāo)準(zhǔn)里是強制要求的。 4)Test Data Output(TDO)。TDO是數(shù)據(jù)輸出的接口。所有要從特定邊界掃描鏈采樣的保存在寄存器中的數(shù)據(jù)都是通過TDO接口一位一位串行輸出的(由TCK驅(qū)動);在芯片串行測試時,將數(shù)據(jù)傳送給下一個芯片。TDO在IEEE 1149.1標(biāo)準(zhǔn)里是強制要求的。 5)Test Reset Input(TRST/nTRST)。TRST可以用來對T
5、AP Controller進(jìn)行復(fù)位(初始化)即JTAG復(fù)位。該信號接口在IEEE 1149.1標(biāo)準(zhǔn)里是可選的,因為通過TMS也可以對TAP Controller進(jìn)行復(fù)位/初始化。為了防止誤觸發(fā),應(yīng)在該端加適當(dāng)上拉電阻。6)System Reset(nSRST/SRST)。與目標(biāo)板上的系統(tǒng)復(fù)位信號相連。可以直接對目標(biāo)系統(tǒng)復(fù)位,同時可以檢測目標(biāo)系統(tǒng)的復(fù)位情況。該信號接口在IEEE 1149.1標(biāo)準(zhǔn)里是可選的,并不是強制要求的。20針JTAG接口信號 20針JTAG接口連接 9.1.2 JTAG TAP JTAG測試訪問端口JTAG TAP是一個通用端口,是外部JTAG接口連接芯片的通道,由JTAG
6、 TAP控制器和掃描鏈構(gòu)成。通過TAP可以訪問芯片提供的所有數(shù)據(jù)寄存器(DR,data register)和指令寄存器(IR,instruction register)。對整個TAP的控制是通過TAP Controller完成的。TAP有5個接口信號:TCK、TMS、TDI、TDO和TRST,提供給JTAG接口。掃描鏈?zhǔn)怯煽拷酒妮斎?輸出管腳上各增加一個用于實現(xiàn)對芯片輸入/輸出信號進(jìn)行觀察和控制的移位寄存器單元,相互連接構(gòu)成。即在芯片/內(nèi)部邏輯的周圍形成一個邊界掃描鏈(boundary-scan chain)。如果需要捕獲芯片某個管腳上的輸出,首先需要把該管腳上的輸出裝載到邊界掃描鏈的寄存
7、器單元里,然后通過TDO輸出,得到相應(yīng)管腳的輸出信號。如果要在芯片的某個管腳上加載一個特定的信號,則首先通過TDI把期望的信號移位到與相應(yīng)管腳相連的邊界掃描鏈的寄存器單元里,然后把該寄存器單元的值加載到相應(yīng)的芯片管腳。 在IEEE 1149.1標(biāo)準(zhǔn)里面,寄存器分為兩大類:數(shù)據(jù)寄存器DR和指令寄存器IR。邊界掃描鏈屬于數(shù)據(jù)寄存器的一種,用來實現(xiàn)對芯片的輸入/輸出的觀察和控制,而指令寄存器用來實現(xiàn)對數(shù)據(jù)寄存器的控制。如在芯片提供的所有邊界掃描鏈中選擇一條指定的邊界掃描鏈作為當(dāng)前的目標(biāo)掃描鏈,并作為訪問對象就是由相應(yīng)指令寄存器完成的。通過TAP接口,對數(shù)據(jù)寄存器進(jìn)行訪問的一般過程是:1)通過指令寄存
8、器,選定一個需要訪問的數(shù)據(jù)寄存器。2)把選定的數(shù)據(jù)寄存器連接到TDI和TDO之間。3)由TCK驅(qū)動,通過TDI,把需要的數(shù)據(jù)輸入到選定的數(shù)據(jù)寄存器中,同時把選定的數(shù)據(jù)寄存器中的數(shù)據(jù)通過TDO讀出來。 JTAG TAP 控制器狀態(tài)轉(zhuǎn)換圖 指令寄存器和數(shù)據(jù)寄存器工作過程: 1)系統(tǒng)上電后在TMS信號驅(qū)動下,TAP Controller進(jìn)入Test-Logic Reset狀態(tài),然后可依次進(jìn)入Run-Test/IdleSelect-DR-ScanSelect-IR-ScanCapture-IRShift-IR Exit1-IRPause-IRExit2-IRUpdate-IR,最后回到Run-Test
9、/Idle狀態(tài)。在Capture-IR狀態(tài)中,一個特定的指令加載到指令寄存器中,進(jìn)入到Shift-IR狀態(tài)。在Shift-IR狀態(tài)下,通過TCK的驅(qū)動,可以將該指令送到指令寄存器中。每條指令都將確定一個相應(yīng)的數(shù)據(jù)寄存器。然后可以沿著Shift-IRExit1-IRPause-IRExit2-IRUpdate-IR路徑進(jìn)行,也可以沿著其他的路徑到達(dá)Update-IR狀態(tài)。在Update-IR狀態(tài),剛才輸入到指令寄存器中的指令將更新指令寄存器成為當(dāng)前指令。最后,進(jìn)入到Run-Test/Idle狀態(tài),指令生效,完成對指令寄存器的訪問。 2)對當(dāng)前數(shù)據(jù)寄存器的訪問由指令寄存器中的當(dāng)前指令決定。要訪問由
10、指令選定的數(shù)據(jù)寄存器,需要以Run-Test/Idle為起點在TMS信號驅(qū)動下,依次進(jìn)入Select-DR-Scan Capture-DR Shift-DRExit1-DRPause-DRExit2-DRUpdate-DR,最后回到Run-Test/Idle狀態(tài)。在這個過程中,被當(dāng)前指令選定的數(shù)據(jù)寄存器會被連接在TDI和TDO之間。通過TDI和TDO,就可以將新的數(shù)據(jù)加載到數(shù)據(jù)寄存器中,同時,也可以捕獲數(shù)據(jù)寄存器中的數(shù)據(jù)。現(xiàn)在常用的ARM7和ARM9的微內(nèi)核ARM7TDMI與ARM9TDMI都提供了4條掃描鏈: 1)Scan Chain 0 測試鏈2)Scan Chain 1調(diào)試鏈3)Scan
11、 Chain 2編程鏈4)Scan Chain 3外圍測試鏈ARM9TDMI邊界掃描鏈1的另外兩個信號DDEN和SYSSPEED的作用是:DDEN在ARM9TDMI內(nèi)部測試模式下,是可獲取、可測試的。在ARM9TDMI外部測試模式下低電平表示將獲取數(shù)據(jù)總線上輸入的數(shù)據(jù),高電平表示將要輸出掃描鏈上存儲的數(shù)據(jù)。在ARM9TDMI進(jìn)入調(diào)試狀態(tài)時,SYSSPEED將輸出。低電平表示微內(nèi)核現(xiàn)在進(jìn)入斷點調(diào)試,高電平表示微內(nèi)核進(jìn)入觀 察點調(diào)試狀態(tài)。 9.1.3 Embedded ICE 嵌入式在線仿真器 系統(tǒng)中內(nèi)核調(diào)試功能,主要由4部分組成: ARM核內(nèi)的一組調(diào)試擴(kuò)展。Embedded ICE宏。Embed
12、ded ICE宏接口?;贘TAG接口的在主機和內(nèi)核之間的調(diào)試通信通道。 Embedded ICE寄存器 地 址 寬 度 功 能 地 址 寬 度 功 能 00000 6 調(diào)試控制寄存器 01100 9觀察點0控制值寄存器 00001 5調(diào)試狀態(tài)寄存器 01101 8觀察點0控制屏蔽寄存器 00010 1中止?fàn)顟B(tài)寄存器 10000 32觀察點1地址值寄存器 00100 6調(diào)試通信控制寄存器 10001 32觀察點1地址屏蔽寄存器 00101 32調(diào)試通信數(shù)據(jù)寄存器 10010 32觀察點1數(shù)據(jù)值寄存器 01000 32觀察點0地址值寄存器 10011 32觀察點1數(shù)據(jù)屏蔽寄存器 01001 32
13、觀察點0地址屏蔽寄存器 10100 9觀察點1控制值寄存器 01010 32觀察點0數(shù)據(jù)值寄存器 10101 8觀察點1控制屏蔽寄存器 01011 32觀察點0數(shù)據(jù)屏蔽寄存器 調(diào)試控制寄存器(debug control register)用來控制Embedded ICE,6位分別對應(yīng)6種控制信號,從低到高依次是DBGACK、DBGRQ、INTDIS、SBZ/RAZ、Monitor Mode Enable和Embedded ICE。DBGRQ調(diào)試請求信號,通過將該信號置1,可以強制ARM7TDMI/ARM9TDMI暫停當(dāng)前的指令,進(jìn)入調(diào)試狀態(tài);INTDIS用來控制中斷;SBZ/RAZ任何時候都必
14、須被置0;Monitor Mode Enable用來控制是否進(jìn)入Monitor模式; Embedded ICE-RT Disable用來控制整個Embedded ICE-RT,是啟用還是禁用,如果禁用的話,ARM7TDMI/ARM9TDMI將一直保持在正常的運行狀態(tài)。通過調(diào)試狀態(tài)寄存器(debug status register)可以查詢當(dāng)前系統(tǒng)的狀態(tài)。調(diào)試狀態(tài)寄存器是可讀可寫的,但一般只進(jìn)行讀操作。5位信號從低位到高位分別是:DBGACK、DBGRQ、IFEN、CGENL和TBIT,其中DBGACK標(biāo)識當(dāng)前系統(tǒng)是否處于調(diào)試狀態(tài),置1表示處于調(diào)試狀態(tài);DBGRQ標(biāo)識DBGRQ信號的當(dāng)前狀態(tài);I
15、FEN標(biāo)識系統(tǒng)的中斷狀態(tài)是啟用還是禁用;CGENL標(biāo)識調(diào)試狀態(tài)下對存儲器的訪問是否完成;TBIT用來判斷是從ARM還是Thumb模式進(jìn)入調(diào)試狀態(tài)。中止?fàn)顟B(tài)寄存器(abort status register)用來確定異常的產(chǎn)生原因:斷點、觀察點還是真的異常。調(diào)試通信控制寄存器(debug comms control register)和調(diào)試通信數(shù)據(jù)寄存器(debug comms data register)是用來控制和操作調(diào)試通信通道。其他的寄存器都是關(guān)于觀察點WATCH POINT的寄存器,用于設(shè)置斷點和觀察點。剩下的12個寄存器可以表示成如下形式:觀察點0/1地址值/屏蔽寄存器。觀察點0/1
16、數(shù)據(jù)值/屏蔽寄存器。觀察點0/1控制值/屏蔽寄存器。9.1.4 ETM嵌入式跟蹤宏 ETM能捕獲指令和數(shù)據(jù)序列,訪問并把它們的記錄發(fā)送給芯片上或芯片外的緩沖器,ARM的ETM既可設(shè)置成允許觸發(fā)器工作也可設(shè)置成允許跟蹤結(jié)果被濾出。使用ETM的過濾功能,可以只捕獲特別中斷的或特殊文件的代碼執(zhí)行,即相當(dāng)于提供了對代碼的壓縮功能。ETM由如下兩部分組成:跟蹤端口,用于實時執(zhí)行的跟蹤。代碼執(zhí)行時,CPU發(fā)送串行、經(jīng)過編碼、壓縮的分支目標(biāo)地址、管線狀態(tài)、讀寫數(shù)據(jù)給ETM。觸發(fā)裝置,規(guī)范已被開發(fā)。該規(guī)范允許指定特定應(yīng)用所需的觸發(fā)源的準(zhǔn)確集合。資源包括地址和數(shù)據(jù)比較器、計數(shù)器和定序器。9.2 ARM開發(fā)工具概
17、述9.2.1 JTAG仿真器JTAG仿真器也稱為JTAG調(diào)試器,是通過ARM芯片的JTAG邊界掃描口進(jìn)行調(diào)試的設(shè)備。JTAG仿真器連接比較方便,通過現(xiàn)有的JTAG邊界掃描口與 ARM CPU 核通信,屬于完全非插入式(即不使用片上資源)調(diào)試,它無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口,而這些是駐留監(jiān)控軟件所必需的。另外,由于JTAG調(diào)試的目標(biāo)程序是在目標(biāo)板上執(zhí)行,仿真更接近于目標(biāo)硬件,因此,許多接口問題,如高頻操作限制、AC和DC參數(shù)不匹配與電線長度的限制等均被最小化了。使用集成開發(fā)環(huán)境配合JTAG仿真器進(jìn)行開發(fā)是目前采用最多的一種調(diào)試方式。 JTAG仿真器通過ARM處理器的JTAG調(diào)試接口與
18、目標(biāo)機通信,通過并口或串口、網(wǎng)口、USB口與宿主機通信。通過JTAG方式可以完成: 讀出/寫入CPU的寄存器,訪問控制ARM處理器內(nèi)核。讀出/寫入內(nèi)存,訪問系統(tǒng)中的存儲器和系統(tǒng)端口。訪問ASI C系統(tǒng)。訪問I/O系統(tǒng)??刂瞥绦蜻\行、停止、單步執(zhí)行和實時執(zhí)行程序、設(shè)置程序斷點。復(fù)位目標(biāo)系統(tǒng)、下載代碼到目標(biāo)ARM。實時的設(shè)置基于指令地址值、數(shù)據(jù)值的斷點。目前國內(nèi)最常用的幾種該類型仿真器:1Embest PowerICE for ARMEmbest PowerICE for ARM是英蓓特公司開發(fā)的實時在線仿真器。2RealView ICERealView ICE是ARM公司最新仿真器。3TRACE
19、32-ICDTRACE32-ICD是德國Lauterbach公司開發(fā)的基于BDM、JTAG和OCDS等調(diào)試接口的仿真工具。9.2.2 在線仿真器ICE在線仿真器ICE(in-circuit emulator)是一種模擬CPU的設(shè)備,在線仿真器使用仿真頭完全取代目標(biāo)板上的CPU,可以完全仿真ARM芯片的行為,提供更加深入的調(diào)試功能。在和宿主機連接的接口上,在線仿真器也是通過串行端口或并行端口、網(wǎng)口和USB口通信。在線仿真器為了能夠全速仿真時鐘速度很高的ARM處理器,通常必須采用極其復(fù)雜的設(shè)計和工藝,因而其價格比較昂貴。在線仿真器通常用在ARM硬件開發(fā)中,軟件開發(fā)中使用較少。 9.2.3 集成開發(fā)
20、環(huán)境本身帶的仿真軟件以Embest為例,編譯好運行在目標(biāo)系統(tǒng)上的文件后,在Project Settings對話框的Remote選項卡上,選擇Remote device下拉列表框的SimArm7選項,即可通過軟件形式在IDE中進(jìn)行仿真。Embest IDE軟件仿真設(shè)置 Multi 2000模塊與應(yīng)用系統(tǒng) 該IDE開發(fā)環(huán)境主要包括:工程生成工具(project builer)源代碼調(diào)試器(source-level debugger)事件分析器(event analyzer)性能剖析器(performance profiler)實時運行錯誤檢查工具(run-time error checking)圖
21、形化瀏覽器(graphical brower)文本編輯器(text editor)版本控制工具(version control system)9.2.5 RVDS集成開發(fā)環(huán)境Real View Developer Suite工具是ARM公司繼ADS之后推出的新一代ARM集成開發(fā)環(huán)境,是RealView ARM新一代開發(fā)工具集中的集成開發(fā)環(huán)境部分,目前的最新版本是2.2。RealView ARM完整的開發(fā)工具,包括集成開發(fā)環(huán)境、在線調(diào)試工具仿真器等。適用于采用多ARM內(nèi)核結(jié)構(gòu)或ARM內(nèi)核加DSP內(nèi)核混合結(jié)構(gòu)的系統(tǒng),為開發(fā)人員提供一個“認(rèn)識操作系統(tǒng)(OS-aware)”的多內(nèi)核調(diào)試器。新產(chǎn)品是第一
22、個能對多ARM和DSP內(nèi)核真正同步進(jìn)行高集成度調(diào)試的調(diào)試器。它通過單一內(nèi)核程序進(jìn)行多內(nèi)核調(diào)試,并采用了Mentor Graphics的嵌入技術(shù)。支持的操作系統(tǒng)包括Symbian、ThreadX和Nucleus等。RVDS集成開發(fā)環(huán)境的主要特性包括編譯工具、調(diào)試工具和指令集仿真工具。編譯工具和調(diào)試工具的特點:(1)RealView編譯工具全面優(yōu)化ISO C+編譯器。ARM、Thumb、C、C+編譯,ARM、Thumb匯編和宏匯編。ARM連接器。庫的連接和管理。映像文件轉(zhuǎn)化功能。(2)RVD調(diào)試工具支持多核(ARM+DSP)調(diào)試和單核ARM/DSP調(diào)試。自動識別Symbian、ThreadX和Nu
23、cleus等操作系統(tǒng)。具有跟蹤、分析程序功能。 9.3 ARM的ADS ADS即 ARM Developer Suite,是ARM公司推出的新一代ARM集成開發(fā)工具,用來取代ARM公司在此前推出的開發(fā)工具ARM SDT(ARM software development toolkit)。9.3.1 ADS介紹ARM ADS使用CodeWarrior IDE集成開發(fā)環(huán)境替代了SDT的工程管理器APM,使用AXD(ARM extended debugger)替換了SDT的調(diào)試工具ADW,可以在Windows和RedHat Linux上運行。CodeWarrior IDE為用戶提供下面的功能:源代碼
24、編輯器,集成在CodeWarrior IDE瀏覽器中,能夠根據(jù)語法格式,使用不同的顏色顯示代碼。源代碼瀏覽器,保存了在源碼中定義的所有符號,能夠使用戶在源碼中快速方便的跳轉(zhuǎn)。查找和替換功能,用戶可在多個文件中,利用字符串通配符,進(jìn)行字符串的搜索和替換。文件比較功能,可以使用戶比較路徑中的不同文本文件內(nèi)容。 ARM ADS由6部分組成:1)代碼生成工具。2)集成開發(fā)環(huán)境。3)調(diào)試器。4)指令集模擬器。5)ARM開發(fā)包。6)ARM應(yīng)用庫。9.3.2 ADS應(yīng)用1. 建立一個工程工程將所有的源碼文件組織在一起,并能夠決定最終生成文件存放路徑,輸出文件格式等。 1)首先在CodeWarrior中新建一
25、個工程的方法有兩種,可以在工具欄中單擊New按鈕,也可以在File菜單中選擇New命令。CodeWarrior初始工程對話框 對話框中為用戶提供了7種可選擇的工程類型:ARM Executable Image:用于由ARM指令的代碼生成一個ELF格式的可執(zhí)行映像文件。ARM Object Library:用于由ARM指令的代碼生成一個armar格式的目標(biāo)文件庫。Empty Project:用于創(chuàng)建一個不包含任何庫或源文件的工程。Makefile Importer Wizard:用于將Visual C的nmake或GNU make文件轉(zhuǎn)入到CodeWarrior IDE 工程文件。Thumb A
26、RM Interworking Image:用于由ARM指令和Thumb指令的混和代碼生成一個可執(zhí)行的ELF格式的映像文件。Thumb Executable image:用于由Thumb指令創(chuàng)建一個可執(zhí)行的ELF格式的映像文件。Thumb Object Library:用于由Thumb指令的代碼生成一個armar格式的目標(biāo)文件庫。 選擇ARM Executable Image工程,在Project name文本框中輸入工程文件名如Test,單擊Set按鈕,可更改該工程保存的路徑,將這些設(shè)置好后,單擊“確定”即可建立一個新的名為Test.mcp的ADS工程。*.mcp文件是ARM 的工程文件,當(dāng)
27、建立一個工程文件后,可以通過打開該工程的*.mcp文件在CodeWarrior中打開該工程。這時會出現(xiàn)Test.mcp的窗口。 可以看到它默認(rèn)的目標(biāo)調(diào)試環(huán) 境是DebugRel,單擊旁邊的下 三角按鈕,可以看到還有另外 兩個可用的目標(biāo)調(diào)試環(huán)境,分 別為Release和Debug。工程窗口 這3個目標(biāo)調(diào)試系統(tǒng)的含義: DebugRel:表示在生成目標(biāo)的時候,會為每一個源文件生成調(diào)試信息。Debug:表示該目標(biāo)為每一個源文件生成最完全的調(diào)試信息。Release:表示該目標(biāo)不會生成任何調(diào)試信息。有3個標(biāo)簽,分別為Files、Link Order和Target,默認(rèn)的是顯示第一個Files選項卡。通過
28、在該空白的選項卡上右擊,選擇Add Files命令可以把要用到的源程序添加到該工程中。 2)打開ADS的Metrowerks CodeWarrior集成開發(fā)環(huán)境IDE,單擊工具欄上的新建文本文件的圖標(biāo) ,可在出現(xiàn)的IDE下的空白頁面上輸入要調(diào)試的源文件,并以Test1.s為文件名后綴保存。3)將文件保存在剛才所建工程的文件夾下,文件名為Test1.s。最小化該頁面,也可以在Project菜單中,選擇Add Files命令,打開文件對話框,用戶可以把已經(jīng)存在的文件添加到工程中,也可以在剛才所建工程中添加該工程。 在工程中添加文件 2. 編譯和鏈接工程 (1)生成目標(biāo)的配置選擇Edit | Deb
29、ugRel Settings命令或直接單擊工具欄上的DebugRel Settings圖標(biāo),可以對生成的目標(biāo)文件進(jìn)行配置。這個選項會因創(chuàng)建工程時選擇目標(biāo)調(diào)試系統(tǒng)不同而不同。DebugRel設(shè)置對話框 1)Target設(shè)置選項。Target Name文本框顯示了當(dāng)前的目標(biāo)設(shè)置。Linker下拉列表框供用戶選擇要使用的鏈接器。這里默認(rèn)的是ARM Linker,使用該鏈接器,將使用ARM Linker鏈接編譯器和匯編器生成的工程文件作為相應(yīng)目標(biāo)文件。另外兩個可選項,None表示不用任何鏈接器即工程中的所有文件都不會被編譯器或匯編器處理。ARM Librarian表示將編譯或匯編得到的目標(biāo)文件轉(zhuǎn)換為A
30、RM庫文件。這里使用默認(rèn)的鏈接器ARM Linker。Post-Linker下拉列表框表示鏈接后,對輸出文件進(jìn)行怎樣的操作。2)Language Settings。ARM ADS的匯編器是armasm。如圖所示,這里可以進(jìn)行很多設(shè)置,包括運行的目標(biāo)處理器的內(nèi)核系列,可根據(jù)運行的目標(biāo)板處理器類型進(jìn)行選擇。命令行工具選項設(shè)置 3)Linker設(shè)置。選中ARM Linker,打開對話框。對話框的主要標(biāo)簽選項對最終生成的文件有著直接的影響。在選項卡Output中,Linktype選項中提供了3種鏈接方式。Partial方式表示鏈接器只進(jìn)行部分鏈接,經(jīng)過部分鏈接生成的目標(biāo)文件,可以作為以后進(jìn)一步鏈接時的
31、輸入文件。Simple方式是默認(rèn)的鏈接方式,它鏈接生成簡單的ELF格式的目標(biāo)文件,使用的是鏈接器選項中指定的地址映射方式。Scattered方式使鏈接器根據(jù)scatter格式文件指定地址映射,生成復(fù)雜的ELF格式的映像文件,這個選項一般情況下不用。這里選擇常用默認(rèn)的Simple方式。鏈接器設(shè)置 在選中Simple方式后,就會出現(xiàn)Simple image,其各項含義:RO Base:即Read-only段,段是指描述映像文件的代碼或數(shù)據(jù)塊。該段的加載域和運行域為同一個地址,默認(rèn)是0 x8000。這里要根據(jù)實際的硬件SDRAM的地址空間來修改這個地址,保證在這里填寫的地址,是程序運行時SDRAM地
32、址空間所能覆蓋的地址。RW Base:即Read-write段,這個文本框設(shè)置了包含RW和ZI(zero-initialized)輸出段的運行域地址。如果選中split選項,鏈接器生成的映像文件將包含兩個加載域和兩個運行域。此時,在RW Base中所輸入的地址為包含RW和ZI輸出段的域設(shè)置了加載域和運行域地址。Ropi:選中這個復(fù)選框?qū)⒏嬖V鏈接器使包含有RO輸出段的運行域位置無關(guān)。使用這個選項,鏈接器將保證:首先檢查各段之間的重地址是否有效,其次確保任何由ARM鏈接器armlink自身生成的代碼是只讀位置無關(guān)的。Rwpi:選中該復(fù)選框?qū)嬖V鏈接器使包含RW和ZI輸出段的運行域位置無關(guān)。如果它
33、沒有被選中,域就標(biāo)識為絕對。每一個可寫的輸入段必須是讀寫位置無關(guān)的。如果被選中,鏈接器檢查可讀/可寫屬性的運行域的輸入段是否設(shè)置了位置無關(guān)屬性,檢查在各段之間的重地址是否有效。Split Image:選中這個復(fù)選框把包含RO和RW輸出段的加載域分成兩個加載域:一個是包含RO輸出段的域,一個是包含RW輸出段的域。Relocatable:選中這個復(fù)選框保留了映像文件的重地址偏移量。這些偏移量為程序加載器提供了有用信息。Options選項卡,用于指明存儲器的替換方法、調(diào)試信息的設(shè)置和映像文件的初始入口地址等信息。 鏈接器的操作選項卡設(shè)置 (2)進(jìn)行編譯和鏈接選擇Project | make命令或單擊
34、工具欄上的Make圖標(biāo),就可以對工程進(jìn)行編譯和鏈接了。在工程Test所在目錄下,會生成一個名為“工程名_data目錄”,在本例中就是“Test_data目錄”,在這個目錄下不同類別的目標(biāo)對應(yīng)不同目錄。本例使用的是DebugRel目標(biāo),所以生成的最終文件都應(yīng)該在該目錄下。進(jìn)入到DebugRel目錄中,會看到生成的映像文件和二進(jìn)制文件,映像文件用于調(diào)試,二進(jìn)制文件可以燒寫到開發(fā)板或?qū)嶒炏涞腇lash中運行。編譯和鏈接過程 3. 用AXD進(jìn)行代碼調(diào)試AXD是ADS軟件中獨立于CodeWarrior IDE的代碼調(diào)試工具,打開AXD軟件,默認(rèn)打開的目標(biāo)是ARMulator。ARMulator是在主系統(tǒng)
35、上用軟件模擬各種ARM處理器核行為的程序。這是最常用的一種調(diào)試工具,要使用AXD必須首先打開已經(jīng)生成的.axf文件,該文件就是含有調(diào)試信息的可執(zhí)行ELF格式的映像文件。在沒有添加其他仿真驅(qū)動程序前,Target 項只有兩項分別為ADDP (JTAG硬件仿真)和ARMUL(即ARMulator軟件仿真)。如果使用其他硬件仿真器連接到相應(yīng)的目標(biāo)板或?qū)嶒炏渖?,可以打開AXD工具欄的Options | Configure Target 命令進(jìn)行添加。在添加之前首先要進(jìn)行相應(yīng)仿真器驅(qū)動程序的安裝,將仿真器的驅(qū)動文件復(fù)制到ADS的BIN目錄下,如C:Program FilesARMADSv1_2 BIN。
36、 AXD的選擇目標(biāo)環(huán)境對話框 AXD調(diào)試環(huán)境 9.4 Embest IDE介紹 9.4.1 概述1. Embest IDE 集成開發(fā)環(huán)境Embest IDE的英文全稱是Embest Integrated Development Environment,是由深圳市英蓓特信息技術(shù)有限公司開發(fā),應(yīng)用于嵌入式軟件開發(fā)的集成開發(fā)環(huán)境。提供嵌入式應(yīng)用軟件開發(fā)平臺,包括一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調(diào)試工具:有編輯器、編譯器、鏈接器、調(diào)試器、工程管理器和底層調(diào)試接口設(shè)備(BDM/JTAG仿真器)等。集成開發(fā)環(huán)境IDE的界面同Microsoft Visual Studio環(huán)境相似,可以在Embest ID
37、E集成開發(fā)環(huán)境中創(chuàng)建工程、打開工程,建立、打開和編輯文件,編譯、鏈接、運行、調(diào)試嵌入式應(yīng)用程序。Embest IDE工具集示意圖 2. Embest IDE主要特征Embest IDE可運行于Windows系列操作系統(tǒng),支持ARM7和ARM9系列處理器、Motorola公司的部分處理器。與處理器和調(diào)試設(shè)備相關(guān)模塊采用即插即用方式,可以在同一個工作區(qū)中同時管理多個應(yīng)用軟件和庫工程,各工程均可配置不同的處理器和仿真器,用戶可以在各工程中無縫切換。Embest IDE for ARM的主要特性:支持開發(fā)語言:ANSI C、Embedded C+、匯編語言。類似Visual Studio的用戶界面,支
38、持打印功能,支持文件內(nèi)查找功能和Find in Files功能,支持C語言程序函數(shù)列表及定位。工程管理器:以project為單位管理用戶的應(yīng)用程序,進(jìn)行編譯鏈接選項定制。源碼編輯器:支持標(biāo)準(zhǔn)的文本編輯功能、syntax-color、用戶定義語言模板、語法關(guān)鍵字、關(guān)鍵字色彩顯示和Hex文件編輯器。編譯工具:使用自由軟件GNU的GCC編譯鏈接器,同時兼容ARM SDT編譯工具套件,支持C語言、匯編語言等。調(diào)試器:源碼級調(diào)試,提供了圖形和命令行兩種調(diào)試方式??蛇M(jìn)行斷點設(shè)置、單步執(zhí)行、異常處理,可查看修改存儲器、寄存器、變量等,可查看函數(shù)棧、堆棧;可進(jìn)行反匯編、提供圖形界面操作和命令行操作方式,支持源
39、程序、反匯編程序和混合窗口顯示,還提供了程序下載功能等。3. Embest IDE主框架窗口Embest IDE主界面圖 開發(fā)環(huán)境主框架窗口由標(biāo)題欄、菜單欄、工具欄、工作區(qū)、客戶區(qū)、輸出窗口和狀態(tài)欄等組成。主框架窗口的最上端為標(biāo)題欄,用于顯示當(dāng)前打開的文件名。標(biāo)題欄下面為菜單欄和工具欄,工具欄的下面為工作區(qū)和客戶區(qū)。工作區(qū)用于顯示當(dāng)前打開工程的有關(guān)信息,包括工程的文件組成等內(nèi)容??蛻魠^(qū)用于文本編輯器進(jìn)行C、匯編等源文件的編輯。輸出窗口通常在工作區(qū)和客戶區(qū)的下面,用于輸出編譯信息、調(diào)試信息、命令行輸入/輸出和輸出一些查詢結(jié)果信息等。主框架窗口的最底端為狀態(tài)欄,用于顯示關(guān)于菜單欄、工具欄等的簡單說
40、明信息以及文本編輯器中當(dāng)前光標(biāo)所在的行列號等。各個欄、區(qū)的功能和Visual Studio中基本相同,這里不再贅述。 9.4.2 工程示例從一個簡單工程的創(chuàng)建、編譯、下載到調(diào)試運行來說明Embest IDE的應(yīng)用。1工程的創(chuàng)建打開Embest IDE軟件,選擇File|New Workspace命令建立一個新的工程,在彈出的對話框中輸入工程的名稱,并確定工程存放的路徑。單擊OK按鈕保存自己的設(shè)置。 工程對話框 2. 輸入源文件并加到工程中選擇File | New命令或單擊工具欄上的新建文本文件圖標(biāo) ,在客戶區(qū)中輸入自己的源文件。該文件完成將十六進(jìn)制的AA、56存儲到內(nèi)存中0 x8000開始的存儲單元中。保存文件到工程Test所在的目錄下,注意文件名應(yīng)以.s為擴(kuò)展名,這里保存為Test.s。在工作區(qū)的Project Source Files中右擊,在彈出的對話框中選擇Add Files to Folder命令,添加Test.s到工程Test中。3. 編譯工程在編譯工程前先要對工程文件將要運行的目標(biāo)環(huán)境進(jìn)行設(shè)置。選擇Project | Settings命令,彈出對話框。設(shè)置完CPU的類型和所用的編譯工具后,單擊OK按鈕。單擊工具欄上的Build圖標(biāo) ,或按F7快捷鍵對工程進(jìn)行編譯。如果文件有錯誤會在輸出窗口輸出錯誤信息,可根據(jù)錯誤信息進(jìn)行修改。如果沒錯誤將輸出Comma
溫馨提示
- 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年度智慧社區(qū)建設(shè)承諾協(xié)議書合同3篇
- 2025年度冷鏈儲藏設(shè)施建設(shè)合同3篇
- 二零二五年度醫(yī)療健康產(chǎn)業(yè)模塊八交易磋商及合同訂立指南4篇
- 二零二五年度電商虛擬現(xiàn)實技術(shù)應(yīng)用合同8篇
- 二零二五年度促銷員健康管理與保障合同3篇
- 2025年度個人果園品牌建設(shè)與市場推廣承包協(xié)議4篇
- 供應(yīng)鏈智能決策支持-深度研究
- 2025年度智能大門改造工程全面升級施工合同4篇
- 地下空間利用研究-深度研究
- 代碼克隆檢測技術(shù)-深度研究
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- 企業(yè)融資報告特斯拉成功案例分享
- 五年(2020-2024)高考地理真題分類匯編(全國版)專題12區(qū)域發(fā)展解析版
- 《阻燃材料與技術(shù)》課件 第8講 阻燃木質(zhì)材料
- 低空經(jīng)濟(jì)的社會接受度與倫理問題分析
- GB/T 4732.1-2024壓力容器分析設(shè)計第1部分:通用要求
- 河北省保定市競秀區(qū)2023-2024學(xué)年七年級下學(xué)期期末生物學(xué)試題(解析版)
- 運動技能學(xué)習(xí)與控制課件
- 六編元代文學(xué)
評論
0/150
提交評論