版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
5.1基于ARM的嵌入式開發(fā)工具概述5.2各種ARM開發(fā)工具簡介5.3基于ARM的嵌入式系統(tǒng)開發(fā)方法5.4EmbestARM實驗教學(xué)系統(tǒng)
5.5集成開發(fā)環(huán)境使用說明
本章小結(jié)
5.1基于ARM的嵌入式開發(fā)工具概述
ARM技術(shù)具有高性能、低功耗的特點,在嵌入式尤其是在基于嵌入式Internet方面應(yīng)用廣泛。因此,學(xué)習(xí)嵌入式系統(tǒng)的開發(fā)應(yīng)用技術(shù),應(yīng)在基于某種ARM核系統(tǒng)芯片應(yīng)用平臺的基礎(chǔ)上進(jìn)行,在介紹嵌入式系統(tǒng)開發(fā)應(yīng)用之前,先對基于ARM的嵌入式開發(fā)環(huán)境作一個簡單介紹。5.1.1交叉開發(fā)與PC機等其他通用計算機系統(tǒng)相比,嵌入式系統(tǒng)的調(diào)試技術(shù)具有較顯著的不同。對于通用計算機而言,在大多數(shù)情況下,運行調(diào)試工具的宿主計算機與被調(diào)試程序運行的目標(biāo)計算機是同一臺計算機。調(diào)試工具軟件的機器指令和被調(diào)試程序的機器指令同屬于一種體系結(jié)構(gòu),可以在一臺計算機上調(diào)試。由于嵌入式計算機的運算能力、存儲能力和顯示能力相對較弱、數(shù)據(jù)吞吐量較小,故作為目標(biāo)計算機在它上面很難直接進(jìn)行軟硬件調(diào)試。因此,一般的嵌入式調(diào)試方法只能將調(diào)試工具安裝在PC機上(稱為宿主機或者主機)運行,通過數(shù)據(jù)通信的方法向目標(biāo)機發(fā)出指令,控制目標(biāo)機的運行,并且從目標(biāo)板(通常也叫做開發(fā)板)上獲得運行參數(shù),再在主機上進(jìn)行觀察。運行在主機上的調(diào)試工具不僅能夠觀察到程序的運行參數(shù)(寄存器值和存儲單元值),還能夠進(jìn)行單步跟蹤,臨時修改變量數(shù)值,并進(jìn)行各種調(diào)試。在嵌入式系統(tǒng)開發(fā)過程中,宿主機和目標(biāo)機通常具有不同的計算機體系結(jié)構(gòu)。因此,需要通信轉(zhuǎn)換器對調(diào)試信息進(jìn)行轉(zhuǎn)換作為嵌入式系統(tǒng)應(yīng)用的ARM處理器,其應(yīng)用軟件的開發(fā)屬于跨平臺開發(fā),因此需要一個交叉開發(fā)環(huán)境。交叉開發(fā)是指在一臺通用計算機上進(jìn)行軟件的編輯、編譯,然后下載到嵌入式設(shè)備中進(jìn)行運行調(diào)試的開發(fā)方式。用來開發(fā)的通用計算機可以選用比較常見的PC機、工作站等,運行通用的Windows或UNIX操作系統(tǒng)。開發(fā)計算機一般稱為宿主機,嵌入式設(shè)備稱為目標(biāo)機,在宿主機上編譯好的程序,下載到目標(biāo)機上運行,交叉開發(fā)環(huán)境提供調(diào)試工具對目標(biāo)機上運行的程序進(jìn)行調(diào)試。交叉開發(fā)環(huán)境一般由運行于宿主機上的交叉開發(fā)軟件(最少必須包含編譯調(diào)試模塊)、宿主機到目標(biāo)機的調(diào)試通道組成。運行于宿主機上的交叉開發(fā)軟件最少必須包含編譯調(diào)試模塊,其編譯器為交叉編譯器。作為宿主機的一般為基于x86體系的桌上型計算機,而編譯出的代碼必須在ARM體系結(jié)構(gòu)的目標(biāo)機上運行,這就是所謂的交叉編譯。在宿主機上編譯好目標(biāo)代碼后,通過宿主機到目標(biāo)機的調(diào)試通道將代碼下載到目標(biāo)機,然后由運行于宿主機的調(diào)試軟件控制代碼在目標(biāo)機上運行調(diào)試。為了方便調(diào)試開發(fā),交叉開發(fā)軟件一般為一個整合編輯、編譯匯編鏈接、調(diào)試、工程管理及函數(shù)庫等功能模塊的集成開發(fā)環(huán)境IDE(IntegratedDevelopmentEnvironment)。組成ARM交叉開發(fā)環(huán)境的宿主機到目標(biāo)機的調(diào)試通道一般有以下三種。
1.基于JTAG的ICD(In-CircuitDebugger)
JTAG是一種在線調(diào)試接口。通常用JTAG來表示IEEE1149規(guī)范的接口或者測試方法。JTAG的建立使得集成電路固定在印制電路板(PCB)上,只需通過邊界掃描便可被測試。JTAG是面向用戶的測試接口,也是ARM系列處理器和其他嵌入式處理器測試技術(shù)的基礎(chǔ)。在ARM嵌入式系統(tǒng)開發(fā)過程中,軟件人員能夠利用主機上的集成開發(fā)環(huán)境,通過JTAG協(xié)議轉(zhuǎn)換器和JTAG接口,直接控制ARM處理器的內(nèi)部總線、I/O口等信息,從而達(dá)到調(diào)試的目的。JTAG仿真器比較便宜,連接比較方便。通過現(xiàn)有的JTAG邊界掃描口與ARMCPU核通信,屬于完全非插入式(即不使用片上資源)調(diào)試,它無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何應(yīng)用端口。通過JTAG方式可以完成以下操作:
讀出/寫入CPU的寄存器,訪問控制ARM處理器內(nèi)核。
讀出/寫入內(nèi)存,訪問系統(tǒng)中的存儲器。
訪問ASIC系統(tǒng)。
訪問I/O系統(tǒng)。
控制程序單步執(zhí)行和實時執(zhí)行。
實時地設(shè)置基于指令地址值或者基于數(shù)據(jù)值的斷點。
1)?JTAG的工作原理結(jié)點是PCB各個部件共享的相互連接處。比如,一個UART的輸出可能連接到PCB上其他幾個部件的輸入。從電路角度看,這個輸入/輸出結(jié)合部件在邏輯上可以抽象成為PCB的一個結(jié)點。將電路板測試儀的一個探頭連接到這個結(jié)點上,就能確定該點的運行狀態(tài)是否正常。如果不能正確運行,測試儀還能查明這個結(jié)點出了什么問題。
JTAG是對印制電路板測試儀的重大改進(jìn)。它將PCB上所有的結(jié)點連接到一個很長的移位寄存器的二進(jìn)制位上進(jìn)行測試。每個二進(jìn)制位表示電路中的一個結(jié)點。實際的JTAG串行數(shù)據(jù)流可能長達(dá)幾百位,如圖5-1所示。圖5-1中,JTAG接口的對外信號主要有5個,分別為:
TMS:測試模式選擇(TestModeSelect),通過該信號控制JTAG狀態(tài)機的狀態(tài)。
TCK:JTAG時鐘信號。
TDI:數(shù)據(jù)輸入信號。
TDO:數(shù)據(jù)輸出信號。
nTRST:JTAG復(fù)位信號,復(fù)位JTAG的狀態(tài)機和內(nèi)部的宏單元。
JTAG掃描鏈?zhǔn)且粭l由測試點引腳移位寄存器構(gòu)成的串行電路。該掃描鏈中的一個結(jié)點稱為掃描單元。掃描單元可以配置成獲取外部信號的輸入單元或者向外提供引腳信號的輸出單元。移位寄存器根據(jù)JTAG控制指令進(jìn)行工作,通過JTAG的TDI和TDO信號線,將輸入數(shù)據(jù)加載到掃描單元或者讀出每一個單元的數(shù)據(jù)。JTAG的串行循環(huán)移位可以是輸出數(shù)據(jù),也可以是輸入數(shù)據(jù)。輸入數(shù)據(jù)的實質(zhì)就是把測試用例數(shù)據(jù)通過移位寄存器送到被測電路的各個輸入/輸出引腳,來代替被測電路系統(tǒng)的真實輸入/輸出,以判斷在人工加載測試用例的條件下,系統(tǒng)能否正確運行。圖5-1ARM處理器的JTAG調(diào)試結(jié)構(gòu)為使JTAG接口能正常工作,被測的集成電路器件必須符合JTAG標(biāo)準(zhǔn)。在芯片正常工作情況下,JTAG掃描鏈?zhǔn)峭该鞯?、停止運行的,允許信號正常通過。當(dāng)有測試需求時,主機通過JTAG協(xié)議轉(zhuǎn)換器向JTAG接口發(fā)出控制指令,此后被測試電路的每個引腳狀態(tài)都被JTAG掃描單元采樣。經(jīng)過同掃描單元數(shù)相等的時鐘脈沖之后,整個掃描鏈的采樣數(shù)據(jù)被輸出,再經(jīng)過協(xié)議轉(zhuǎn)換器送回到調(diào)試目標(biāo)機。此時,獲得的測試數(shù)據(jù)以可視化形式出現(xiàn)在嵌入式集成開發(fā)環(huán)境的調(diào)試窗口界面。實際上,為了存儲硬件斷點和軟件斷點信息,并增強片內(nèi)調(diào)試功能,符合JTAG標(biāo)準(zhǔn)的半導(dǎo)體芯片中往往存在多根掃描鏈。例如,ARM公司生產(chǎn)的ARM7TDMI處理器核的內(nèi)部就包含多根JTAG掃描鏈。
2)?ARM7TDMI核中的JTAG掃描鏈圖5-2給出了ARM7TDMI核的JTAG掃描鏈?zhǔn)疽鈭D。在該圖中,掃描鏈0是主掃描鏈,對整個ARM7TDMI核外圍(包括數(shù)據(jù)總線)進(jìn)行掃描訪問。該掃描鏈輸出數(shù)據(jù)的順序是:數(shù)據(jù)總線(D31~D0)、內(nèi)核控制信號、地址總線(A31~A0)、嵌入式ICE-RT控制信號。掃描鏈1是掃描鏈0和斷點的子集,包括ARM核的數(shù)據(jù)總線和一個斷點控制信號。這是一條很有用的鏈,通過控制這條鏈,可以控制ARM核執(zhí)行指定的指令,從而實現(xiàn)對ARM的內(nèi)部寄存器、協(xié)處理器以及外部存儲器的讀/寫操作。掃描鏈2對嵌入式ICE-RT邏輯寄存器進(jìn)行掃描訪問。在TDI和TDO之間可以連接的測試數(shù)據(jù)寄存器有:指令寄存器、旁路寄存器、ARM7TDMI的器件識別(ID)碼寄存器、掃描路徑選擇寄存器、掃描鏈0、掃描鏈1、掃描鏈2和掃描鏈3八個。其中,掃描鏈3是外部邊界掃描。圖5-2JTAG接口的TAP控制器結(jié)構(gòu)圖
3)嵌入式ICE-RT模塊
ARM7TDMI處理器核中的嵌入式ICE-RT模塊(ARM公司的實時片內(nèi)調(diào)試模塊的名稱,簡稱嵌入式ICE-RT)是集成在片內(nèi)的仿真器,其主要作用有:
(1)存儲調(diào)試斷點的預(yù)設(shè)地址。
(2)預(yù)設(shè)數(shù)據(jù)和部分預(yù)定控制信號。
(3)獲得JTAG調(diào)試時的內(nèi)核狀態(tài)。
(4)控制調(diào)試時的斷點產(chǎn)生。
(5)讀取Debug通信通道。嵌入式ICE-RT模塊的一個主要作用就是可以讓程序員在ARM的程序中設(shè)置軟件或者硬件的斷點。在嵌入式ICE-RT中有一個比較器,該比較器負(fù)責(zé)把ARM處理器當(dāng)前取指的地址A[31:0]、當(dāng)前操作數(shù)據(jù)D[31:0]以及一些控制信號與嵌入式ICE-RT中Watchpoint寄存器中預(yù)先設(shè)置的數(shù)值相比較,也就是進(jìn)行邏輯運算。比較的結(jié)果用來確定輸出一個ARM處理器執(zhí)行斷點。在Debug模式下,ARM內(nèi)核的時鐘由系統(tǒng)的主時鐘MCLK替換成跟蹤時鐘。跟蹤時鐘DCLK是通過JTAG狀態(tài)機的Run-test/Idle狀態(tài)下的TCK控制的。
2.?Angel調(diào)試監(jiān)控軟件
Angel調(diào)試監(jiān)控軟件也稱為駐留監(jiān)控軟件,是一組運行在目標(biāo)板上的程序,可以接收宿主機上調(diào)試器發(fā)送的命令,執(zhí)行諸如設(shè)置斷點、單步執(zhí)行目標(biāo)程序、讀寫存儲器、查看或修改寄存器等操作。宿主機上的調(diào)試軟件一般通過串行端口、以太網(wǎng)口、并行端口等通信端口與Angel調(diào)試監(jiān)控軟件進(jìn)行通信。Angel調(diào)試代理屬于傳統(tǒng)調(diào)試技術(shù),也是ARM公司特有的調(diào)試技術(shù),適用于各種ARM硬件平臺。與基于JTAG的調(diào)試不同,Angel調(diào)試監(jiān)控程序需要占用一定的系統(tǒng)資源,如內(nèi)存、通信端口等。
Angel調(diào)試監(jiān)控程序的不便之處在于它對硬件設(shè)備的要求比較高,一般在硬件穩(wěn)定之后才能進(jìn)行應(yīng)用軟件的開發(fā),同時,它占用目標(biāo)板上的一部分資源,如內(nèi)存、通信端口等,而且不能對程序的全速運行進(jìn)行完全仿真,因此對一些要求嚴(yán)格的情況不是很適合。基于Angel的調(diào)試系統(tǒng)包含兩個關(guān)鍵部分,分別是位于主機上的調(diào)試軟件(稱為調(diào)試器)和駐留在目標(biāo)機上的Angel調(diào)試監(jiān)控程序。從邏輯上看,基于Angel的調(diào)試系統(tǒng)主要分成以下三層:
(1)應(yīng)用層。這一層位于Angel調(diào)試系統(tǒng)的最上層,主機上的應(yīng)用層是主機的調(diào)試軟件,如ADS(ARM開發(fā)套件)的AXDDebugger等,而目標(biāo)機的應(yīng)用層則是被調(diào)試的應(yīng)用程序。
(2)功能支持層。位于系統(tǒng)的中間部分,這一層由較多的功能部件組成,銜接著應(yīng)用層和通道管理層,是整個Angel調(diào)試系統(tǒng)的核心部分。
3)通道管理層。它是Angel調(diào)試系統(tǒng)的最低層。主機的通道管理層由主機通道管理器及其設(shè)備驅(qū)動程序構(gòu)成;目標(biāo)機的通道管理層由目標(biāo)機通道管理器及其設(shè)備驅(qū)動程序構(gòu)成。它們分別負(fù)責(zé)管理主機和目標(biāo)機之間的ADP通信通道并實現(xiàn)特定的驅(qū)動功能。
3.在線仿真器ICE在線仿真器ICE是一種模擬CPU的設(shè)備,在線仿真器使用仿真頭完全取代目標(biāo)板上的CPU,可以完全仿真ARM芯片的行為,這樣,當(dāng)在開發(fā)系統(tǒng)上通過仿真器調(diào)試嵌入式系統(tǒng)時,如同使用原先的處理器一樣,提供更加深入的調(diào)試功能。在和宿主機連接的接口上,在線仿真器也是通過串行端口或并行端口、網(wǎng)口、USB口通信。在線仿真器為了能夠全速仿真時鐘速度很高的ARM處理器,通常必須采用極其復(fù)雜的設(shè)計和工藝,因而其價格比較昂貴。在線仿真器ICE除了可以替換應(yīng)用系統(tǒng)的CPU之外,還可以替換它的存儲器。此外,高級實時在線仿真系統(tǒng)具有完善的跟蹤功能,可以以一種錄像的方式連續(xù)記錄被測試應(yīng)用系統(tǒng)對變化參數(shù)輸入的反應(yīng),以便進(jìn)行優(yōu)化分析。在8位單片機調(diào)試過程中,可以用這種ICE仿真器完全取代目標(biāo)板上的MCU。因此,目標(biāo)系統(tǒng)對開發(fā)者來說完全是透明的、可控的。ICE仿真器通過仿真頭連接到目標(biāo)板,通過串口、網(wǎng)口或USB口與主機連接。由于仿真器自成體系,故調(diào)試時可以連接目標(biāo)板,也可以不連接目標(biāo)板。值得注意的是,對16位或32位嵌入式系統(tǒng)的調(diào)試,還沒有能夠完全取代目標(biāo)板的ICE仿真器。實時在線仿真的優(yōu)點是功能強大,軟硬件均可以做到完全實時在線調(diào)試。5.1.2指令集模擬器在很多時候,為保證項目進(jìn)度,硬件和軟件開發(fā)往往同時進(jìn)行,這時作為目標(biāo)機的硬件環(huán)境還沒有建立起來,軟件的開發(fā)就需要一個模擬環(huán)境來進(jìn)行調(diào)試。指令集模擬器是用來在一臺計算機上模擬另一臺計算機上目標(biāo)程序運行過程的軟件工具,也叫做軟仿真器。模擬開發(fā)環(huán)境建立在交叉開發(fā)環(huán)境基礎(chǔ)之上,是對交叉開發(fā)環(huán)境的補充。這時,除了宿主機和目標(biāo)機之外,還需要提供一個在宿主機上模擬目標(biāo)機的環(huán)境,使得開發(fā)好的程序直接在這個環(huán)境里運行調(diào)試。軟件模擬不可能完全代替真正的硬件環(huán)境,這種模擬調(diào)試只能作為一種初步調(diào)試,主要是用做用戶程序的模擬運行,用來檢查語法、程序的結(jié)構(gòu)等簡單錯誤,用戶最終還必須在真實的硬件環(huán)境中實際運行調(diào)試,完成整個應(yīng)用的開發(fā)。指令集模擬器是一個純軟件系統(tǒng),在內(nèi)部有一個反映目標(biāo)處理器硬件的數(shù)據(jù)結(jié)構(gòu)。它以時序狀態(tài)機的方式工作,可以根據(jù)目標(biāo)機指令集定義并執(zhí)行目標(biāo)指令。指令集模擬器主要用在以下幾種場合:
(1)沒有目標(biāo)機開發(fā)板。
(2)有目標(biāo)機開發(fā)板,但使用目標(biāo)機開發(fā)板成本較高。
(3)被調(diào)試的程序模塊不需要在實際開發(fā)板上執(zhí)行,例如在學(xué)習(xí)ARM匯編語言程序時。5.1.3ROM仿真器當(dāng)嵌入式系統(tǒng)的程序存儲器為ROM時,如果調(diào)試時需要修改代碼、設(shè)置斷點及更新程序代碼,就必須進(jìn)行離線編程。因此離線編程器和擦除器(如果使用EPROM)必不可少。離線編程是一個費時間的工作,用RAM替代ROM可以解決這個問題。這種用RAM以及附加電路制成的替代工具稱為ROM仿真器。在MCS-51單片機開發(fā)過程中經(jīng)常使用這種調(diào)試工具。一般來講,一個特定的ROM仿真器可支持2~31倍的ROM空間和配置,它可以為程序開發(fā)(編輯、編程、下載、調(diào)試)過程節(jié)省時間。在更新ROM中的程序時,一般是取下舊的EPROM(或Flash),將其用紫外線照射擦除后放到EPROM編程器中,寫入新的程序,然后再插回到目標(biāo)系統(tǒng),這樣EPROM很快就會老化。若使用ROM仿真器,可將生成程序用ROM仿真器下載到目標(biāo)系統(tǒng),運行它,并根據(jù)程序運行好壞修改主機上的程序,然后再下載。5.1.4片上調(diào)試技術(shù)與背景調(diào)試模式(BDM)片上調(diào)試技術(shù)(On-ChipDebugging,OCD)是嵌入式系統(tǒng)調(diào)試技術(shù)中運用最廣泛的一種。片上調(diào)試需要在CPU的內(nèi)部嵌入額外的控制模塊,即片上調(diào)試器,使得CPU的工作模式分為正常模式和調(diào)試模式。當(dāng)處于調(diào)試模式下時,CPU不再從內(nèi)存中讀取指令,而是通過調(diào)試端口讀取指令。同時宿主機的調(diào)試工具可以通過調(diào)試端口訪問CPU的寄存器或者存儲器等各種資源,并且執(zhí)行指令。顯然,片上調(diào)試技術(shù)要求主機和目標(biāo)機之間具有協(xié)議轉(zhuǎn)換器,參看圖2-14。片上調(diào)試器(OCD)是指集成在處理器芯片或者FPGA芯片內(nèi)的調(diào)試器。在具有完善流水線、高速緩存及MMU的復(fù)雜芯片中,片上調(diào)試器可以報告被測試電路的工作狀態(tài)。目前常用的片上調(diào)試技術(shù)主要有三種:背景調(diào)試模式(BackgroundDebugMode,BDM)、JTAG以及Nexus。背景調(diào)試模式是對基于Motorola公司專用片上調(diào)試器的調(diào)試方法的稱呼。Motorola公司是第一個把BDM在68300系列處理器上實現(xiàn)的公司,現(xiàn)在也在其他微控制器上得到應(yīng)用,包括Motorola/Freescale的MC9S08、MC68HC12等。
BDM與ICE有所不同。ICE調(diào)試時,使用ICE中的CPU來取代目標(biāo)板中的CPU,目標(biāo)板和ICE之間使用多芯扁平電纜連接。ICE在使用時一般還需要與主機(PC)連接。在BDM調(diào)試方式下,處理器被停機,各種調(diào)試命令可以被發(fā)送到處理器中訪問內(nèi)存和寄存器。因此,滿足BDM調(diào)試的微處理器內(nèi)部已經(jīng)包含了用于調(diào)試的微碼,調(diào)試時仿真器軟件和目標(biāo)板上CPU的調(diào)試微碼通信,目標(biāo)板上的CPU無需取出。
BDM調(diào)試方式為開發(fā)人員提供了底層的調(diào)試手段。開發(fā)人員進(jìn)行BDM調(diào)試時,可以通過它初次向目標(biāo)板下載程序,同時也可以通過BDM調(diào)試器對目標(biāo)板MCU的Flash進(jìn)行寫入、擦除等操作。用戶還可進(jìn)行應(yīng)用程序的下載和在線更新、在線動態(tài)調(diào)試和編程、讀取CPU各個寄存器的內(nèi)容、單片機內(nèi)部資源的配置與修復(fù)、程序的加密處理等操作,而這些僅需要向CPU發(fā)送幾個簡單的指令就可以實現(xiàn),從而使調(diào)試軟件的編寫變得簡單。圖5-3給出了BDM調(diào)試時PC與目標(biāo)機的連接方法。能夠進(jìn)行BDM調(diào)試的開發(fā)板安裝有Motorola公司標(biāo)準(zhǔn)的6針BDM測試插座。BDM調(diào)試器與開發(fā)板之間通過6針插頭BDM電纜相連。BDM調(diào)試器與主機之間的通信通過三線串行雙工通道(見圖5-3(a)),或者USB信號線(參看圖5-3(b))進(jìn)行。圖5-3BDM調(diào)試器與主機和目標(biāo)開發(fā)板之間的連接5.1.5半主機調(diào)試方式半主機有時也稱為半主機機制或者半主機調(diào)試方式。目前的幾種ARM調(diào)試器都支持半主機調(diào)試功能。半主機的實質(zhì)是讓不支持ANSIC函數(shù)庫功能的目標(biāo)系統(tǒng)使用調(diào)試主機提供的C函數(shù)庫功能。換言之,半主機是一種調(diào)試機制,目標(biāo)機可借助該機制將應(yīng)用程序發(fā)出的I/O請求轉(zhuǎn)發(fā)給主機處理,而不是由目標(biāo)機本身來處理I/O請求。這種調(diào)試方式非常有用,因為目標(biāo)開發(fā)系統(tǒng)往往不具備最終系統(tǒng)所有的輸入/輸出設(shè)備。最簡單的半主機例子就是允許C函數(shù)庫中的函數(shù)(諸如printf()和scanf())使用主機的屏幕和鍵盤,而不使用目標(biāo)開發(fā)板上的屏幕和鍵盤。Angel調(diào)試代理支持半主機方式。它使用一組ARMC函數(shù)庫的SWI函數(shù)調(diào)用來解釋執(zhí)行半主機處理請求。這些函數(shù)調(diào)用使用基于目標(biāo)機和主機之間CLIB通道上傳輸?shù)南ⅲ⑶沂褂弥鳈C函數(shù)庫(在Windows環(huán)境下是Remote_A.dll)上的相應(yīng)代碼。ARM公司的SDT和ADS集成開發(fā)環(huán)境都具備半主機調(diào)試功能。半主機由一組定義好的軟件中斷(SWI)子功能函數(shù)實現(xiàn)。應(yīng)用程序先調(diào)用合適的SWI,然后調(diào)試代理處理該SWI異常并且提供與主機的通信聯(lián)系。多數(shù)情況下,半主機SWI由庫函數(shù)內(nèi)的代碼調(diào)用,但是應(yīng)用程序也可以直接調(diào)用半主機SWI。半主機SWI的接口函數(shù)是通用的,當(dāng)半主機操作在硬件仿真器、指令集仿真器、RealMonitor或Angel下執(zhí)行時,不需要進(jìn)行移植處理。半主機的邏輯概念可參考圖5-4。圖5-4半主機的邏輯概念示意圖指令SWI是ARM處理器的軟中斷指令。它帶有一個參數(shù),以區(qū)別軟中斷的各個不同的子功能。SWI使用唯一的子功能編號來表示半主機操作軟中斷。SWI的其他子功能編號可供各種應(yīng)用程序或操作系統(tǒng)使用。用于半主機操作的SWI子功能號是0x123456(ARM狀態(tài))、0xAB(Thumb狀態(tài))。由于半主機操作的函數(shù)種類很多,因此在執(zhí)行SWI0x123456之前,需要在R0寄存器中存放一個數(shù)值,表示具體的半主機操作函數(shù)是哪一個,供調(diào)試器進(jìn)行正確的函數(shù)調(diào)用。最好在頭文件semihosting.h中預(yù)先用操作名對半主機調(diào)用的函數(shù)編號進(jìn)行定義,然后在調(diào)用SWI0x123456指令之前,對R0寄存器進(jìn)行賦值。例如:
SYS_OPENEQU0x01
SYS_CLOSEEQU0x025.1.6評估電路板評估電路板,也稱做開發(fā)板,一般用來作為開發(fā)者的學(xué)習(xí)板、實驗板,可以作為應(yīng)用目標(biāo)板出來之前的軟件測試、硬件調(diào)試的電路板。尤其是對應(yīng)用系統(tǒng)的功能沒有完全確定、初步進(jìn)行嵌入式開發(fā)且沒有相關(guān)開發(fā)經(jīng)驗者來說非常重要。開發(fā)評估電路板并不是ARM應(yīng)用開發(fā)所必需的,有經(jīng)驗的工程師完全可以自行獨立設(shè)計自己的應(yīng)用電路板和根據(jù)開發(fā)需要設(shè)計實驗板。好的評估電路板一般文檔齊全,對處理器的常用功能模塊和主流應(yīng)用都有硬件實現(xiàn),并提供電路原理圖和相關(guān)開發(fā)例程與源代碼供用戶設(shè)計自己的應(yīng)用目標(biāo)板和應(yīng)用程序作參考。選購適合于自己實際應(yīng)用的開發(fā)板可以加快開發(fā)進(jìn)度,減少自行設(shè)計開發(fā)的工作量。5.2各種ARM開發(fā)工具簡介用戶選用ARM處理器開發(fā)嵌入式系統(tǒng)時,選擇合適的開發(fā)工具可以加快開發(fā)進(jìn)度,節(jié)省開發(fā)成本。用戶在建立自己的基于ARM嵌入式開發(fā)環(huán)境時,可供選擇的開發(fā)工具是非常多的,目前世界上有幾十家公司提供不同類別的ARM開發(fā)工具產(chǎn)品,根據(jù)功能的不同,分別有編譯軟件、匯編軟件、鏈接軟件、調(diào)試軟件、嵌入式操作系統(tǒng)、函數(shù)庫、評估板、JTAG仿真器、在線仿真器等。有些工具是成套提供的,有些工具則需要組合使用。在本節(jié)中,我們將簡要介紹幾種比較流行的ARM開發(fā)工具,包括ARMSDT、ARMADS、RealViewMDK等集成開發(fā)環(huán)境以及Multi-ICE仿真器、ULink2仿真器等。5.2.1ARMSDT
ARMSDT的英文全稱是ARMSoftwareDevelopmentKit,是ARM公司()為方便用戶在ARM芯片上進(jìn)行應(yīng)用軟件開發(fā)而推出的一整套集成開發(fā)工具。ARMSDT經(jīng)過ARM公司逐年的維護和更新,目前的最新版本是2.5.2,但從版本2.5.1開始,ARM公司宣布推出一套新的集成開發(fā)工具ARMADS1.0以取代ARMSDT。ARMSDT由于經(jīng)過長期的推廣和普及,目前擁有最廣泛的ARM軟件開發(fā)用戶群體,也被相當(dāng)多的ARM公司的第三方開發(fā)工具合作伙伴集成在自己的產(chǎn)品中,比如美國EPI公司的JEENI仿真器。
ARMSDT可在Windows95、98、NT以及Solaris2.5/2.6、HP-UX10上運行,支持最高到ARM9(含ARM9)的所有ARM處理器芯片的開發(fā),包括StrongARM。一套完整的ARMSDT包括以下應(yīng)用軟件開發(fā)工具:
armccARM的C編譯器,具有優(yōu)化功能,兼容于ANSIC。
tccTHUMB的C編譯器,同樣具有優(yōu)化功能,兼容于ANSIC。
armasm支持ARM和THUMB的匯編器。
armlinkARM連接器,連接一個和多個目標(biāo)文件,最終生成ELF格式的可執(zhí)行映像文件。
armsdARM和THUMB的符號調(diào)試器。以上工具為命令行開發(fā)工具,均被集成在SDT的兩個Windows開發(fā)工具ADW和APM中。
APM:ARM工程管理器,完全圖形界面,負(fù)責(zé)管理源文件,完成編輯、編譯、鏈接并最終生成可執(zhí)行映像文件等功能。
ADW:ARM調(diào)試工具。ADW提供一個調(diào)試C、C++和匯編源文件的全窗口源代碼級調(diào)試環(huán)境,在此也可以執(zhí)行匯編指令級調(diào)試,同時可以查看寄存器、存儲區(qū)、棧等調(diào)試信息。
ARMSDT還提供一些實用程序,如fromELF、armprof、decaxf等,可以將?.ELF文件轉(zhuǎn)換為不同的格式,執(zhí)行程序分析以及解析ARM可執(zhí)行文件格式等。
ARMSDT集成快速指令集模擬器,用戶可以在硬件完成以前完成一部分調(diào)試工作;ARMSDT提供ANSIC、C++、EmbeddedC函數(shù)庫,所有庫均以lib形式提供,每個庫都分為ARM指令集和THUMB指令集兩種,同時在各指令集中也分為大端和小端兩種。用戶使用ARMSDT開發(fā)應(yīng)用程序可選擇配合Angel駐留模塊或者JTAG仿真器進(jìn)行,目前大部分JTAG仿真器均支持ARMSDT。5.2.2ARMADS
ARMADS的英文全稱為ARMDeveloperSuite,是ARM公司推出的新一代ARM集成開發(fā)工具,用來取代ARM公司以前推出的開發(fā)工具ARMSDT。
ARMADS起源于ARMSDT,對一些SDT的模塊進(jìn)行了增強并替換了一些SDT的組成部分,用戶可以感受到的最強烈的變化是ADS使用CodeWarriorIDE集成開發(fā)環(huán)境替代了SDT的APM,使用AXD替換了ADW,使現(xiàn)代集成開發(fā)環(huán)境的一些基本特性,如源文件編輯器語法高亮,窗口駐留等功能在ADS中才得以體現(xiàn)。
ARMADS支持所有的ARM系列處理器,包括最新的ARM9E和ARM10,除了ARMSDT支持的運行操作系統(tǒng)外還可以在Windows2000/Me以及RedHatLinux上運行。
ARMADS由六部分組成:
(1)代碼生成工具(CodeGenerationTools)。代碼生成工具由源程序編譯、匯編、鏈接工具集組成。ARM公司針對ARM系列的每一種結(jié)構(gòu)都進(jìn)行了專門的優(yōu)化處理,這一點除了作為ARM結(jié)構(gòu)設(shè)計者的ARM公司,其他公司都無法辦到。ARM公司宣稱,其代碼生成工具最終生成的可執(zhí)行文件最多可以比其他公司工具套件生成的文件小20%。
(2)?IDE集成開發(fā)環(huán)境(IDEfromMetrowerks)。IDE是Metrowerks公司一套比較有名的集成開發(fā)環(huán)境,有不少廠商將它作為界面工具集成在自己的產(chǎn)品中。IDE包含工程管理器、代碼生成接口、語法敏感編輯器、源文件和類瀏覽器、源代碼版本控制系統(tǒng)接口、文本搜索引擎等,其功能與VisualStudio相似,但界面風(fēng)格比較獨特。ADS僅在其PC機版本中集成了該IDE。
(3)調(diào)試器(Debuggers)。調(diào)試器部分包括兩個調(diào)試器:ARM擴展調(diào)試器AXD(ARMeXtendedDebugger)和ARM符號調(diào)試器Armsd(ARMsymbolicdebugger)。
AXD基于Windows9X/NT風(fēng)格,具有一般意義上調(diào)試器的所有功能,包括簡單和復(fù)雜斷點設(shè)置、棧顯示、寄存器和存儲區(qū)顯示、命令行接口等。
Armsd作為一個命令行工具輔助調(diào)試或者用在其他操作系統(tǒng)平臺上。
(4)指令集模擬器(InstructionSetSimulators)。用戶使用指令集模擬器無需任何硬件即可在PC機上完成一部分調(diào)試工作。
(5)?ARM開發(fā)包(ARMFirmwareSuite)。ARM開發(fā)包由一些底層的例程和庫組成,幫助用戶快速開發(fā)基于ARM的應(yīng)用和操作系統(tǒng)。具體包括系統(tǒng)啟動代碼、串行口驅(qū)動程序、時鐘例程、中斷處理程序等,Angel調(diào)試軟件也包含在其中。
(6)?ARM應(yīng)用庫(ARMApplicationsLibrary)。ADS的ARM應(yīng)用庫完善和增強了SDT中的函數(shù)庫,同時還包括一些相當(dāng)有用的提供了源代碼的例程。用戶使用ARMADS開發(fā)應(yīng)用程序與使用ARMSDT完全相同,同樣是選擇配合Angel駐留模塊或者JTAG仿真器進(jìn)行,目前大部分JTAG仿真器均支持ARMADS。5.2.3RealViewMDK
RealViewMDK(MicrocontrollerDevelopmentKit)是Keil公司開發(fā)的ARM開發(fā)工具,是用來開發(fā)基于ARM核的系列微控制器的嵌入式應(yīng)用程序的開發(fā)工具。MDK包含了工業(yè)標(biāo)準(zhǔn)的C編譯器、宏匯編器、調(diào)試器、實時內(nèi)核等組件,支持所有基于ARM的設(shè)備,能幫助工程師按照計劃完成項目。
KeilARM開發(fā)工具集集成了很多工具(如圖5-5所示),正確地使用它們,有助于快速完成項目開發(fā)。圖5-5KeilARM開發(fā)工具集以下是MDK所包含組件的一些說明:
(1)?μVisionIDE集成開發(fā)環(huán)境和μVisionDebugger調(diào)試器可以創(chuàng)建和測試應(yīng)用程序,可以用RealView、CARM或者GNU的編譯器來編譯這些應(yīng)用程序。
(2)?MDK-ARM是PK-ARM的一個超集;AARM匯編器、CARMC編譯器、LARM連接器和OHARM目標(biāo)文件到十六進(jìn)制的轉(zhuǎn)換器僅包含在MDK-ARM開發(fā)工具集中。MDK的最新版本是μVision3,可以開發(fā)基于ARM7、ARM9、Cortex-M3的微控制器應(yīng)用程序,它易學(xué)易用且功能強大。
(3)?μVision3集成了一個能自動配置工具選項的設(shè)備數(shù)據(jù)庫。工業(yè)標(biāo)準(zhǔn)的RealViewC/C++編譯器能產(chǎn)生代碼容量最小、運行速度最快的高效應(yīng)用程序,同時它包含了一個支持C++STL的ISO運行庫;集成在μVision3中的在線幫助系統(tǒng)提供了大量有價值的信息,可加速應(yīng)用程序開發(fā)速度;包含大量的例程,幫助開發(fā)者快速配置ARM設(shè)備,以及開始應(yīng)用程序的開發(fā);μVision3集成開發(fā)環(huán)境能幫助工程人員開發(fā)穩(wěn)健、功能強大的嵌入式應(yīng)用程序;
μVision3調(diào)試器能夠精確地仿真整個微控制器,包括其片上外設(shè),使得在沒有目標(biāo)硬件的情況下也能測試開發(fā)程序;包含標(biāo)準(zhǔn)的微控制器和外部Flash設(shè)備的Flash編程算法;ULINKUSB-JTAG仿真器可以實現(xiàn)Flash下載和片上調(diào)試;RealView的RL-ARM具有網(wǎng)絡(luò)和通信的庫文件以及實時軟件;還可使用第三方工具擴展μVision3的功能;μVision3還支持GNU的編譯器。本書的所有例程均在MDK下開發(fā)。5.2.4ARM的Multi-ICE仿真器
Multi-ICE是ARM公司自己的JTAG在線仿真器,目前的最新版本是2.1版。Multi-ICE的JTAG鏈時鐘可以設(shè)置為5kHz~10MHz,實現(xiàn)JTAG操作的一些簡單邏輯由FPGA實現(xiàn),使得并行口的通信量最小,以提高系統(tǒng)的性能。Multi-ICE硬件支持低至1V的電壓。Multi-ICE2.1還可以外部供電,不需要消耗目標(biāo)系統(tǒng)的電源,這對調(diào)試類似于手機等便攜式、電池供電設(shè)備是很重要的。
Multi-ICE2.x支持該公司的實時調(diào)試工具M(jìn)ultiTrace,MultiTrace包含一個處理器,因此可以跟蹤觸發(fā)點前后的軌跡,并且可以在不終止后臺任務(wù)的同時對前臺任務(wù)進(jìn)行調(diào)試,在微處理器運行時改變存儲器的內(nèi)容,所有這些特性使延時降到最低。
Multi-ICE2.x支持ARM7、ARM9、ARM9E、ARM10和IntelXScale微結(jié)構(gòu)系列。它通過TAP控制器串聯(lián),提供多個ARM處理器以及混合結(jié)構(gòu)芯片的片上調(diào)試。它還支持低頻或變頻設(shè)計以及超低壓核的調(diào)試,并且支持實時調(diào)試。
Multi-ICE提供支持WindowsNT4.0、Windows95/98/2000/Me、HPUX10.20和Solaris2.6/7.0的驅(qū)動程序。Multi-ICE的主要優(yōu)點有:
(1)快速的下載和單步速度。
(2)用戶控制的輸入/輸出位。
(3)可編程的JTAG位傳送速率。
(4)開放的接口,允許調(diào)試非ARM的核或DSP。
(5)網(wǎng)絡(luò)連接到多個調(diào)試器。
(6)目標(biāo)板供電,或外接電源。5.2.5ULINK2.0仿真器
ULINK是Keil公司提供的USB-JTAG接口仿真器,目前最新的版本是2.0。它支持諸多芯片廠商的8051、ARM7、ARM9、Cortex-M3、InfineonC16x、InfineonXC16x、InfineonXC8xx、STMicroelectronicsμPSD等多個系列的處理器。ULINK2.0內(nèi)部實物如圖5-6所示,電源由PC機的USB接口提供。ULINK2.0不僅包含了ULINKUSB-JTAG適配器具有的所有特點,還增加了串行線調(diào)試(SWD)支持,返回時鐘支持和實時代理功能。ULINK2.0適用標(biāo)準(zhǔn)的WindowsUSB驅(qū)動等功能。圖5-6ULINK2.0(電路)
ULINK2.0有以下主要功能:
(1)下載目標(biāo)程序。
(2)檢查內(nèi)存和寄存器。
(3)片上調(diào)試,整個程序的單步執(zhí)行。
(4)插入多個斷點。
(5)運行實時程序。
(6)對Flash存儲器進(jìn)行編程。
ULINK2.0具有以下新特點:
(1)標(biāo)準(zhǔn)WindowsUSB驅(qū)動支持,也就是ULINK2.0即插即用。
(2)支持基于ARMCortex-M3的串行線調(diào)試。
(3)支持程序運行期間的存儲器讀寫、終端仿真和串行調(diào)試輸出。
(4)支持10/20針連接器。本書中所有的例程使用的ULINKUSB-JTAG仿真器套件即ULINK2.0仿真器。5.3基于ARM的嵌入式系統(tǒng)開發(fā)方法
ARM微處理器因其卓越的低功耗、高性能在32位嵌入式應(yīng)用中已位居世界第一,是高性能、低功耗嵌入式處理器的代名詞,為了順應(yīng)當(dāng)今世界技術(shù)革新的潮流,了解、學(xué)習(xí)和掌握嵌入式技術(shù),就必然要學(xué)習(xí)和掌握以ARM微處理器為核心的嵌入式開發(fā)環(huán)境和開發(fā)平臺,這對于研究和開發(fā)高性能微處理器、DSP以及開發(fā)基于微處理器的SOC芯片設(shè)計及應(yīng)用系統(tǒng)開發(fā)是非常必要的。那么究竟如何學(xué)習(xí)嵌入式的開發(fā)和應(yīng)用呢?技術(shù)基礎(chǔ)是關(guān)鍵。技術(shù)基礎(chǔ)決定了學(xué)習(xí)相關(guān)知識、掌握相關(guān)技能的潛能。嵌入式技術(shù)融合具體應(yīng)用系統(tǒng)技術(shù)、嵌入式微處理器/DSP技術(shù)、系統(tǒng)芯片SOC設(shè)計制造技術(shù)、應(yīng)用電子技術(shù)和嵌入式操作系統(tǒng)及應(yīng)用軟件技術(shù),具有極高的系統(tǒng)集成性,可以滿足不斷增長的信息處理技術(shù)對嵌入式系統(tǒng)設(shè)計的要求。因此學(xué)習(xí)嵌入式系統(tǒng)首先是基礎(chǔ)知識學(xué)習(xí),主要是相關(guān)的基本硬件知識,如一般處理器及接口電路(Flash/RAM/SDRAM/Cache,UART,Timer,GPIO,Watchdog,USB,IIC等)等硬件知識,至少了解一種CPU的體系結(jié)構(gòu);至少了解一種操作系統(tǒng)(中斷、優(yōu)先級、任務(wù)間通信、同步……)。對于應(yīng)用編程,要掌握C、C++及匯編語言程序設(shè)計,認(rèn)識處理器的體系結(jié)構(gòu)、組織結(jié)構(gòu)、指令系統(tǒng)、編程模式,一般應(yīng)對應(yīng)用編程有一定的了解。在此基礎(chǔ)上必須在實際工程實踐中掌握一定的實際項目開發(fā)技能。其次,對于嵌入式系統(tǒng)開發(fā)的學(xué)習(xí),必須要有一個較好的嵌入式開發(fā)教學(xué)平臺。功能全面的開發(fā)平臺一方面為學(xué)習(xí)提供了良好的開發(fā)環(huán)境,另一方面開發(fā)平臺本身也是一般的典型實際應(yīng)用系統(tǒng)。在教學(xué)平臺上開發(fā)一些基礎(chǔ)例程和典型實際應(yīng)用例程,對于初學(xué)者和進(jìn)行實際工程應(yīng)用也是非常必要的。嵌入式系統(tǒng)的學(xué)習(xí)必須對基本內(nèi)容有深入的了解。在處理器指令系統(tǒng)、應(yīng)用編程學(xué)習(xí)的基礎(chǔ)上,重要的是加強外圍功能接口應(yīng)用的學(xué)習(xí),主要是人機接口、通信接口,如USB接口、A/D轉(zhuǎn)換、GPIO、以太網(wǎng)、IIC串行數(shù)據(jù)通信、音頻接口、觸摸屏等知識的掌握。嵌入式操作系統(tǒng)也是嵌入式系統(tǒng)學(xué)習(xí)重要的一部分,在此基礎(chǔ)上才能進(jìn)行各種設(shè)備驅(qū)動應(yīng)用程序的開發(fā)。5.4EmbestARM實驗教學(xué)系統(tǒng)5.4.1教學(xué)系統(tǒng)介紹
EmbestARM教學(xué)系統(tǒng)包括μVisionIDE集成開發(fā)環(huán)境,ULINKUSB-JTAG仿真器,EmbestEduKit-Ⅲ?開發(fā)板、各種連接線、電源適配器以及實驗指導(dǎo)書等,如圖5-7所示。圖5-7EmbestARM教學(xué)系統(tǒng)模塊5.4.2μVisionIDE集成開發(fā)環(huán)境
1.μVisionIDE介紹
μVisionIDE是一個基于窗口的軟件開發(fā)平臺,它集成了功能強大的編輯器、工程管理器以及make工具。μVisionIDE集成的工具包括C編譯器、宏匯編器、鏈接/定位器和十六進(jìn)制文件生成器。μVisionIDE有編譯和調(diào)試兩種工作模式,兩種模式下設(shè)計人員都可查看并修改源文件。圖5-8所示是編譯模式下典型的窗口配置,μVisionIDE由多個窗口、對話框、菜單欄、工具欄組成。其中菜單欄和工具欄用來實現(xiàn)快速的操作命令;工程工作區(qū)(ProjectWorkspace)用于文件管理、寄存器調(diào)試、函數(shù)管理、手冊管理等;輸出窗口(OutputWindow)用于顯示編譯信息、搜索結(jié)果以及調(diào)試命令交互燈;內(nèi)存窗口(MemoryWindow)可以不同格式顯示內(nèi)存中的內(nèi)容;觀測窗口(Watch&CallStackWindow)用于觀察、修改程序中的變量以及當(dāng)前的函數(shù)調(diào)用關(guān)系;工作區(qū)(Workspace)用于文件編輯、反匯編輸出和一些調(diào)試信息顯示;外設(shè)對話框(PeripheralDialogs)幫助設(shè)計者觀察片內(nèi)外圍接口的工作狀態(tài)。圖5-8μVisionIDE開發(fā)環(huán)境軟件界面
2.?μVisionIDE的主要功能特點及組件
μVisionIDE可在Windows98、2000、NT及XP等操作系統(tǒng)上運行,主要支持基于ARM7、ARM9、Cortex-M3系列處理器,目前最新的版本為μVisionIDE,其主要特點如下:
(1)?μVision3集成了一個能自動配置工具選項的設(shè)備數(shù)據(jù)庫。
(2)工業(yè)標(biāo)準(zhǔn)的RealViewC/C++編譯器能產(chǎn)生代碼容量最小、運行速度最快的高效應(yīng)用程序,同時它包含了一個支持C++STL的ISO運行庫。
(3)集成在μVisionIDE中的在線幫助系統(tǒng)提供了大量有價值的信息,可加速應(yīng)用程序的開發(fā)速度。
(4)包含大量的例程,幫助開發(fā)者快速配置ARM設(shè)備,以及開始應(yīng)用程序的開發(fā)。
(5)?μVisionIDE集成開發(fā)環(huán)境能幫助工程人員開發(fā)穩(wěn)健、功能強大的嵌入式應(yīng)用程序。
(6)?μVisionIDE調(diào)試器能夠精確地仿真整個微控制器,包括其片上外設(shè),使得在沒有目標(biāo)硬件的情況下也能測試開發(fā)程序。
(7)包含標(biāo)準(zhǔn)的微控制器和外部Flash設(shè)備的Flash編程算法。
(8)?ULINKUSB-JTAG仿真器可以實現(xiàn)Flash下載和片上調(diào)試。
(9)?RealViewRL-ARM具有網(wǎng)絡(luò)和通信的庫文件以及實時軟件。
(10)可使用第三方工具擴展μVision3的功能。
(11)支持GNU的編譯器。
μVisionIDE包含以下功能組件,能加速嵌入式應(yīng)用程序開發(fā)過程。
(1)功能強大的源代碼編輯器。
(2)可根據(jù)開發(fā)工具配置的設(shè)備數(shù)據(jù)庫。
(3)用于創(chuàng)建和維護工程的工程管理器。
(4)集匯編、編譯和鏈接過程于一體的編譯工具。
(5)用于設(shè)置開發(fā)工具配置的對話框。
(6)真正集成高速CPU及片上外設(shè)模擬器的源碼級調(diào)試器。
(7)高級GDI接口,可用于目標(biāo)硬件的軟件調(diào)試和KeilULINK仿真器的連接。
(8)用于下載應(yīng)用程序到FlashROM中的Flash編程器。
(9)完善的開發(fā)工具手冊、設(shè)備數(shù)據(jù)手冊和用戶向?qū)А?/p>
μVisionIDE使用簡單、功能強大,是設(shè)計者完成設(shè)計任務(wù)的重要保證。μVisionIDE還提供了大量的例程及相關(guān)信息,有助于開發(fā)人員快速開發(fā)嵌入式應(yīng)用程序。μVisionIDE有編譯和調(diào)試兩種工作模式。編譯模式用于維護工程文件和生成應(yīng)用程序;調(diào)試模式下,則可以用功能強大的CPU和外設(shè)仿真器來測試程序,也可以使用調(diào)試器經(jīng)KeilULINKUSB-JTAG適配器(或其他AGDI驅(qū)動器)來連接目標(biāo)系統(tǒng)的測試應(yīng)用程序。ULINK仿真器能用于下載應(yīng)用程序到目標(biāo)系統(tǒng)的FlashROM中。在嵌入式軟件開發(fā)中,完成設(shè)計和編碼后,即開始調(diào)試程序,這是軟件開發(fā)的第三步。一個幾千行的程序,其編譯可達(dá)到?jīng)]有一個警告,然而在運行時卻可能達(dá)不到正常的設(shè)計需求、甚至系統(tǒng)無法運行而崩潰,更難以查找的是系統(tǒng)運行只是在偶然的情況下出現(xiàn)問題或崩潰。當(dāng)程序不能順利運行,而又不能簡單、直觀地分析和知道問題的癥結(jié)所在時,就應(yīng)使用調(diào)試器來監(jiān)視此程序的運行了。
μVisionIDE調(diào)試器提供程序裝載、執(zhí)行、運行控制和監(jiān)視所需要的強大的窗口調(diào)試環(huán)境,支持源碼顯示和調(diào)試,同時可以觀察各類調(diào)試信息。μVisionIDE具有功能強大的調(diào)試器。μVisionIDE調(diào)試器用于調(diào)試和測試應(yīng)用程序,它提供了兩種操作模式:仿真模式和GDI驅(qū)動器模式。這可以在OptionsforTarget'LPC2106'—Debug對話框內(nèi)進(jìn)行選擇,如圖5-9所示。圖5-9調(diào)試器操作模式的選擇
1)仿真模式仿真模式可在無目標(biāo)系統(tǒng)硬件情況下,仿真微控器的許多特性。可在目標(biāo)硬件準(zhǔn)備好之前把μVisionIDE調(diào)試器配置為軟件仿真,可以測試和調(diào)試所開發(fā)的嵌入式應(yīng)用。μVisionIDE能仿真大量的外圍設(shè)備,包括串口、外部I/O及時鐘等。在為目標(biāo)程序選擇CPU時,相應(yīng)外圍接口就被從設(shè)備庫中選定。
2)?GDI驅(qū)動器模式
GDI驅(qū)動模式下,可使用高級GDI驅(qū)動器,例如用ULINKARMDebugger來連接目標(biāo)硬件。對μVisionIDE來說,以下幾種驅(qū)動器均可用于連接目標(biāo)硬件:
JTAG/OCDS適配器:連接到片上的調(diào)試系統(tǒng),如AMREmbeddedICE。
監(jiān)視器:可以集成在用戶硬件上,也可以集成在許多評估板上。
仿真器:連接到目標(biāo)硬件的CPU引腳上。
測試硬件:例如InfineonSmartCardROM監(jiān)視器,或PhilipsSmartMXDBox。5.4.3ULINKUSB-JTAG仿真器
JTAG仿真器也稱為JTAG調(diào)試器,是通過ARM芯片的JTAG邊界掃描口進(jìn)行調(diào)試的設(shè)備。JTAG仿真器連接比較方便,通過現(xiàn)有的JTAG邊界掃描口與ARMCPU核通信,屬于完全非插入式(即不使用片上資源)調(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)試方式。ULINKUSB-JTAG仿真器如圖5-10所示。圖5-10ULINK系列仿真器
ULINKUSB-JTAG仿真器支持Philips、Samsung、Atmel、AnalogDevices、Sharp、ST等眾多廠商ARM7及ARM9內(nèi)核的ARM微控制器,其將PC機的USB端口與用戶的目標(biāo)硬件相連(通過JTAG或OCD),使用戶可在目標(biāo)硬件上調(diào)試代碼。通過使用KeilμVisionIDE/調(diào)試器和ULINKUSB-JTAG仿真器,用戶可以方便地編輯、下載和在實際的目標(biāo)硬件上測試嵌入式的程序,并且具有三個LED燈分別顯示RUN、COM和USB的狀態(tài)。使用ULINKUSB-JTAG仿真器可以實現(xiàn)以下功能:
(1)?USB通信接口高速下載用戶代碼。
(2)存儲區(qū)域/寄存器查看。
(3)快速單步程序運行。
(4)添加多個程序斷點。
(5)運行實時程序。
(6)片內(nèi)Flash編程。
ULINK2.0通過JTAG、SWD或OCDS將目標(biāo)硬件與電腦的USB端口連接起來,使用ULINK2.0可以調(diào)試在目標(biāo)硬件上運行的嵌入式程序。ULINK2.0包含了ULINKUSB-JTAG適配器的所有功能。5.4.4EmbestEdukit-Ⅲ嵌入式教學(xué)實驗平臺
EmbestEdukit-Ⅲ嵌入式教學(xué)實驗平臺是英蓓特公司的產(chǎn)品,該硬件平臺如圖5-11所示。圖5-11實驗系統(tǒng)硬件平臺
EmbestEdukit-Ⅲ開發(fā)板的基本資源如下:采用多CPU子板:ARM7S3C44B0子板,ARM9S3C2410子板,DSPBlackfin533子板,IntelXscale270子板,64MNandFlash,2~32MNorFlash,64MSDRAM,4kbIICBUS的串行EEPROM,2個232串口,1個422串口,1個485串口,2個中斷按鈕,1個復(fù)位按鈕,4個LED,5.7英寸320?×?240STN彩色LCD及TSP觸摸屏,4?×?5鍵盤,20針JTAG接口,PS/2接口,2個USB主口,1個USB從口,SD接口模塊,PCI擴展接口,以太網(wǎng)接口,8段數(shù)碼管,雙CAN總線模塊,A/D模塊,IDE硬盤接口模塊,CF卡接口模塊,CPLD模塊,直流電機模塊,步進(jìn)電機模塊,麥克風(fēng)輸入口,IIS音頻信號輸出口,高速USB2.0ULINK2.0仿真器一個,YS244-JTAG簡易仿真頭一個,固態(tài)硬盤32M?×?8bit,GPRS模塊,GPS模塊,藍(lán)牙,攝像頭模塊,WIFI模塊,DAC模塊。實驗系統(tǒng)除了提供以上的組件以外,還提供了各種連接需要的電纜線,包括交叉網(wǎng)線、USB線、交叉串口線、并口線和兩根JTAG線。5.4.5教學(xué)系統(tǒng)的安裝
EmbestARM教學(xué)系統(tǒng)包括μVisionIDE集成開發(fā)環(huán)境、ULINKUSB-JTAG仿真器、
EmbestEdukit-Ⅲ、各種連接線等。其中,μVisionIDE屬軟件平臺部分,其余屬于硬件平臺部分。本節(jié)主要介紹如何安裝實驗系統(tǒng)的軟件平臺以及如何搭建和進(jìn)行軟件平臺與硬件平臺的連接。在安裝μVisionIDE集成開發(fā)環(huán)境之前請首先閱讀軟件使用許可協(xié)議。
μVisionIDE集成開發(fā)環(huán)境的安裝方法如下:
(1)購買MDK的安裝程序,或從/xz-down.asp下載MDK的評估板。
(2)雙擊安裝文件,彈出如圖5-12所示的對話框。建議在安裝之前關(guān)閉所有的應(yīng)用程序,單擊“Next”按鈕,彈出如圖5-13所示對話框。圖5-12MDK安裝界面1圖5-13MDK安裝界面1
(3)仔細(xì)閱讀許可協(xié)議,選中“IagreetoallthetermsoftheprecedingLicenseAgreement”選項,單擊“Next”按鈕,彈出如圖5-14所示對話框。圖5-14MDK安裝界面3
(4)單擊“Browse”選擇安裝路徑,然后單擊“Next”按鈕,彈出如圖5-15所示對話框。圖5-15MDK安裝界面4
(5)輸入FirstName、LastName、CompanyName以及E-mail地址后,單擊“Next”按鈕,安裝程序?qū)⒃谟嬎銠C上安裝MDK。依據(jù)機器性能的不同,安裝程序大概耗時半分鐘到兩分鐘不等,之后將會彈出如圖5-16所示對話框,單擊“Finish”按鈕結(jié)束安裝。圖5-16MDK安裝界面5至此,開發(fā)人員就可在計算機上使用MDK軟件來開發(fā)應(yīng)用程序了。
μVisionIDE集成開發(fā)環(huán)境安裝完畢后,點擊μVisionIDE的圖標(biāo)即可運行μVisionIDE。第一次使用μVision3IDE正式版時,用戶必須注冊。μVision3有兩種許可證:單用戶許可證和浮動許可證。單用戶許可證只允許單用戶最多在兩臺計算機上使用MDK,而浮動許可證則允許局域網(wǎng)多臺計算機分時使用MDK。目前,所有的Keil軟件均可使用單用戶許可證注冊,絕大多數(shù)Keil軟件可使用浮動許可證注冊。單用戶許可證注冊過程如下:
(1)安裝好μVisionIDE。
(2)在μVisionIDE中單擊“File”→“LicenseManagement”菜單項進(jìn)入許可證管理對話框。
(3)選擇“Single”→“UserLicense”頁,在該頁右邊的CID(ComputerID)文本框中會自動產(chǎn)生CID。
(4)用CID和MDK提供的PSN(產(chǎn)品序列號)在/license/embest.htm注冊,確保輸入郵箱的正確性。
(5)通過注冊后,在所填寫注冊信息的郵箱中將會收到許可證ID碼LIC(LicenseIDCode)。
(6)將得到的許可證ID輸入NewLicenseIDCode(LIC)文本框,然后單擊右邊的AddLIC按鈕,此時注冊成功,如圖5-17所示。其中需要注意:
(1)仿真器驅(qū)動程序在安裝μVisionIDE時自動安裝,第一次使用ULINK仿真器時,PC機會自動加載其驅(qū)動程序,該驅(qū)動程序已在Windows2000、WindowsXP上測試通過,如果驅(qū)動不能自動加載,可以訪問/support/。
(2)硬件平臺最好預(yù)先參照EmbestEdukit-Ⅲ?用戶手冊(在EmbestARM教學(xué)系統(tǒng)光盤中)進(jìn)行基本硬件檢測。圖5-17單用戶許可證注冊成功后界面5.5集成開發(fā)環(huán)境使用說明5.5.1μVisionIDE主框架窗口
μVisionIDE由多個窗口、對話框、菜單欄、工具欄組成。其中菜單欄和工具欄用來實現(xiàn)快速的操作命令;工程工作區(qū)(ProjectWorkspace)用于文件管理、寄存器調(diào)試、函數(shù)管理、手冊管理等;輸出窗口(OutputWindow)用于顯示編譯信息、搜索結(jié)果以及調(diào)試命令交互燈;內(nèi)存窗口(MemoryWindow)可以不同格式顯示內(nèi)存中的內(nèi)容;觀測窗口(Watch&CallStackWindow)用于觀察、修改程序中的變量以及當(dāng)前的函數(shù)調(diào)用關(guān)系;工作區(qū)(Workspace)用于文件編輯、反匯編輸出和一些調(diào)試信息顯示;外設(shè)對話框(PeripheralDialogs)幫助設(shè)計者觀察片內(nèi)外圍接口的工作狀態(tài)。本節(jié)將主要介紹μVisionIDE的菜單欄、工具欄、常用快捷方式,以及各種窗口的內(nèi)容和使用方法,以便讓讀者能快速了解μVisionIDE,并能對μVisionIDE進(jìn)行簡單和基本的操作。
μVisionIDE集成開發(fā)環(huán)境的菜單欄可提供如下菜單功能:編輯操作、工程維護、開發(fā)工具配置、程序調(diào)試、外部工具控制、窗口選擇和操作以及在線幫助等。工具欄按鈕可以快速執(zhí)行μVisionIDE的命令。狀態(tài)欄顯示了編輯和調(diào)試信息,在View菜單中可以控制工具欄和狀態(tài)欄是否顯示。鍵盤快捷鍵可以快速執(zhí)行μVisionIDE的命令,它可以通過菜單命令“Edit”→“configuration”→“ShortcutKey”來進(jìn)行配置。5.5.2工程管理
1.工程管理介紹在μVisionIDE集成開發(fā)環(huán)境中,工程是一個非常重要的概念,它是用戶組織一個應(yīng)用的所有源文件、設(shè)置編譯鏈接選項、生成調(diào)試信息文件和最終的目標(biāo)Bin文件的一個基本結(jié)構(gòu)。一個工程管理包括一個應(yīng)用程序的所有源文件、庫文件、其他輸入文件,并根據(jù)實際情況進(jìn)行相應(yīng)的編譯鏈接設(shè)置,一個工程須生成一個相對應(yīng)的目錄,以進(jìn)行文件管理。
μVisionIDE工程管理由ProjectWorkspace(工作區(qū))實現(xiàn),工作區(qū)如圖5-18所示,它顯示了工程結(jié)構(gòu)。圖5-18工程管理區(qū)結(jié)構(gòu)圖以工程為單位定義設(shè)置應(yīng)用程序的各選項,包括目標(biāo)處理器和調(diào)試設(shè)備的選擇與設(shè)置,調(diào)試相關(guān)信息的配置,以及編譯、匯編、鏈接等選項的設(shè)置等。系統(tǒng)提供了一個專門的對話框來設(shè)置這些選項。對話框提供的Build菜單和工具按鈕可讓用戶輕松進(jìn)行工程的編譯、鏈接。編譯、鏈接信息輸出到輸出窗口中的Build標(biāo)簽窗中,如圖5-19所示,編譯鏈接出現(xiàn)的錯誤,通過鼠標(biāo)左鍵雙擊錯誤信息提示行來定位相應(yīng)的源文件行。圖5-19編譯鏈接輸出子窗口一個應(yīng)用工程編譯鏈接后根據(jù)編譯器的設(shè)置生成相應(yīng)格式的調(diào)試信息文件,調(diào)試通過的程序轉(zhuǎn)換成二進(jìn)制格式的可執(zhí)行文件后最終在目標(biāo)板上運行。
2.工程的創(chuàng)建
μVisionIDE所提供的工程管理,使得基于ARM處理器的應(yīng)用程序設(shè)計開發(fā)變得越來越方便。通常使用μVisionIDE創(chuàng)建一個新的工程需要以下幾步:選擇工具集、創(chuàng)建工程并選擇處理器、創(chuàng)建源文件及文件組、配置硬件選項、配置對應(yīng)啟動代碼、最后編譯鏈接生成HEX文件。
1)選擇工具集利用μVisionIDE創(chuàng)建一個基于處理器的應(yīng)用程序,首先要選擇開發(fā)工具集。單擊“Project”→“Manage”→“Components,EnvironmentandBooks”菜單項,彈出如圖5-20所示的對話框,在其中可選擇所使用的工具集。在μVisionIDE中既可使用ARMRealView編譯器、GNUGCC編譯器,也可以使用KeilCARM編譯器。當(dāng)使用GNUGCC編譯器時,需要安裝相應(yīng)的工具集。在本例程中選擇ARMRealView編譯器—MDK環(huán)境默認(rèn)的編譯器,可不用配置。圖5-20選擇工具集
2)創(chuàng)建工程并選擇處理器單擊“Project”→“NewμVisionProject…”菜單項,μVisionIDE將打開一個標(biāo)準(zhǔn)對話框,輸入希望新建工程的名字即可創(chuàng)建一個新的工程。建議對每個新建工程使用獨立的文件夾。這里先建立一個新的文件夾Hello,在前述對話框中輸入“Hello”,μVisionIDE將會創(chuàng)建一個以Hello.UV2為名字的新工程文件,它包含了一個缺省的目標(biāo)(target)和文件組名。這些內(nèi)容在ProjectWorkspace窗口中可以看到。創(chuàng)建一個新工程時,μVisionIDE要求設(shè)計者為工程選擇一款對應(yīng)處理器,該對話框中列出了μVisionIDE所支持的處理器設(shè)備數(shù)據(jù)庫,也可單擊“Project”→“SelectDevice…”菜單項進(jìn)入此對話框。選擇了某款處理之后,μVisionIDE將會自動為工程設(shè)置相應(yīng)的工具選項,這使得工具的配置過程簡化。對于大部分處理器設(shè)備,μVisionIDE會提示是否在目標(biāo)工程里加入CPU的相關(guān)啟動代碼。如圖5-21、圖5-22所示。啟動代碼用來初始化目標(biāo)設(shè)備的配置,完成運行時系統(tǒng)的初始化工作,這對于嵌入式系統(tǒng)開發(fā)而言是必不可少的,單擊“OK”按鈕便可將啟動代碼加入工程,這使得系統(tǒng)的啟動代碼的編寫工作量大大減少。圖5-21選擇處理器圖5-22加入啟動代碼
3.建立一個新的源文件創(chuàng)建一個工程之后,就應(yīng)開始編寫源程序。選擇菜單項“File”→“New”可創(chuàng)建新的源文件,μVisionIDE將會打開一個空的編輯窗口用以輸入源程序。在輸入完源程序后,選擇“File”→“SaveAs…”菜單項保存源程序,當(dāng)以*.C為擴展名保存源文件時,μVisionIDE將會根據(jù)語法以彩色高亮字體顯示源程序。
4.工程中文件的加入創(chuàng)建完源文件后,便可以在工程里加入此源文件,μVisionIDE提供了多種加入源文件到工程中的方法。例如,在“ProjectWorkspace”→“Files”菜單項中選擇文件組,右擊將會彈出如圖5-23所示的快捷菜單,單擊選項“AddFilestoGroup…”打開一個標(biāo)準(zhǔn)文件對話框,將已創(chuàng)建好的源文件加入到工程中。圖5-23加入源文件到工程中通常,設(shè)計人員應(yīng)采用文件組來組織大的工程,將工程中同一模塊或者同一類型的源文件放在同一文件組中。例如,可在“Project”→“Manage”→“Components,EnvironmentandBooks”對話框中創(chuàng)建自己的文件組SysemFiles來管理CPU啟動代碼和其他系統(tǒng)配置文件等,如圖5-24所示??墒褂肗ew(Insert)按鈕創(chuàng)建新的文件組,或在Groups文件組中選定一個文件組,然后點擊為其添加文件。圖5-24創(chuàng)建新的文件組
5.設(shè)置活動工程在μVisionIDE中可以存在幾個同時打開的工程,但只有一個工程處于活動狀態(tài)并顯示在工程區(qū)中,處于活動狀態(tài)的工程才可以作為調(diào)試工程??梢栽诠こ棠繕?biāo)框中選擇需要激活的工程,然后單擊“確定”按鈕即可。5.5.3工程基本配置
1.硬件選項配置
μVisionIDE可根據(jù)目標(biāo)硬件的實際情況對工程進(jìn)行配置。通過單擊目標(biāo)工具欄圖標(biāo)或者單擊菜單項“Project”→“OptionsforTarget”,在彈出的Target頁面可指定目標(biāo)硬件和所選擇設(shè)備片內(nèi)組件的相關(guān)參數(shù),如圖5-25所示。圖5-25處理器配置對話框表5-1對Target頁面選項作了簡要說明。表5-1目標(biāo)硬件配置選項說明
2.處理器啟動代碼配置通常情況下,ARM程序都需要用初始化代碼來配置所對應(yīng)的目標(biāo)硬件。如上所述,當(dāng)創(chuàng)建一個應(yīng)用程序時,μVisionIDE會提示使用者自動加入相應(yīng)設(shè)備的啟動代碼。
μVision3提供了豐富的啟動代碼文件,可在相應(yīng)文件夾中獲得。例如,針對Keil開發(fā)工具的啟動代碼放在…\ARM\Startup文件夾下;針對GNU開發(fā)工具的在...\ARM\GNU\Startup文件夾下;針對ADS開發(fā)工具的在文件夾…\ARM\ADS\Startup下。以LPC2106處理器為例,其啟動代碼文件為...\Startup\Philips\Startup.s,可把這個啟動代碼文件復(fù)制到工程文件夾下。在圖中雙擊Startup.s源文件,根據(jù)目標(biāo)硬件作相應(yīng)的修改即可使用。μVision3里大部分啟動代碼文件都有一個配置向?qū)?ConfigurationWizard),提供了一種菜單驅(qū)動方式來配置目標(biāo)板的啟動代碼。開發(fā)工具提供缺省的啟動代碼,這對于大部分單芯片應(yīng)用程序來說是一個很好的起點,但是開發(fā)者必須根據(jù)目標(biāo)硬件來調(diào)整部分啟動代碼的配置,否則很可能是無法使用的。例如,CPU/PLL時鐘和總線系統(tǒng)往往會根據(jù)目標(biāo)系統(tǒng)的不同而不同,不能夠自動地配置。一些設(shè)備還提供了片上部件的使能/禁止可選項,這就需要開發(fā)者對目標(biāo)硬件有足夠的了解,能夠確保啟動代碼的配置和目標(biāo)硬件完全匹配。在圖5-26中的ConfigurationWizard頁面中提供了標(biāo)準(zhǔn)文本編輯窗口,可打開并修改相應(yīng)的啟動代碼。圖5-26啟動代碼文件配置向?qū)?/p>
3.仿真器配置選擇菜單項“Project”→“Project”→“OptionsforTarget”或者直接單擊,打開OptionforTarget對話框的Debug頁,彈出如圖5-27所示的對話框,進(jìn)行仿真器的連接配置。圖5-27OptionsforTarget對話框的Debug頁使用ULINK仿真器時,需要為仿真器選擇合適的驅(qū)動以及為應(yīng)用程序和可執(zhí)行文件下載進(jìn)行配置,對圖5-27所示對話框的設(shè)置如圖5-28、圖5-29所示。圖5-28仿真器驅(qū)動配置圖圖5-29仿真器下載應(yīng)用程序配置圖
PC機通過ULINKUSB-JTAG仿真器與目標(biāo)板連接成功之后,可以打開圖5-28中的Settings選項查看ULINK信息,如圖5-30所示。圖5-30連接ULINK仿真器后
4.工具配置工具選項主要設(shè)置Flash下載選項。打開菜單欄的“Project”→“Project”→“OptionsforTarget”對話框選擇其“Utilities”頁,或者打開菜單“Flash”→“ConfigureFlashTools”,將彈出如圖5-31所示的對話框。圖5-31選擇ULINK下載代碼到Flash在圖5-31所示對話框中選擇“UseTargetDriverforFlashProgramming”,再選擇“ULINKARMDebugger”,同時勾選“UpdateTargetbeforeDebugging”選項。這時還沒有完成設(shè)置,還需要選擇編程算法,點擊“Settings”將彈出如圖5-32所示的對話框。圖5-32Flash下載設(shè)置點擊圖5-32所示對話框中的“Add”,將彈出如圖5-33所示的對話框,在該對話框中選擇需要的Flash編程算法。例如對STR912FW芯片,由于其Flash為256KB,則需要選擇如圖5-33所標(biāo)注的Flash編程算法。圖5-33選擇Flash編程算法
5.調(diào)試設(shè)置
μVision3調(diào)試器提供了兩種調(diào)試模式,可以從“
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣西崇左市憑祥市人民法院招聘2人備考題庫附答案詳解
- 2025至2030中國商業(yè)航天衛(wèi)星制造成本下降對行業(yè)競爭格局影響研究報告
- 2026四川廣安市婦女兒童醫(yī)院(廣安市婦幼保健院)招聘編外人員2人備考題庫及答案詳解(考點梳理)
- 2026中南電力設(shè)計院有限公司數(shù)智科技公司社會招聘3人筆試備考題庫及答案解析
- 2026安徽亳州市蒙城縣商業(yè)綜合體招聘勞務(wù)派遣人員備考題庫(四次)及1套參考答案詳解
- 2026西北國際貨航招聘(3人)考試參考試題及答案解析
- 2026江蘇南京市雨花臺區(qū)醫(yī)療保險管理中心等單位招聘編外人員20人備考題庫(含答案詳解)
- 2026中共遼寧省委黨校(遼寧行政學(xué)院、遼寧省社會主義學(xué)院)招聘高層次人才8人備考題庫及1套完整答案詳解
- 車間安全生產(chǎn)與設(shè)備維護指南
- 2025湖南張家界中共桑植縣委黨史研究室招聘公益性崗位工作人員1人備考題庫帶答案詳解
- 果園合伙經(jīng)營協(xié)議書
- 節(jié)能技術(shù)咨詢合同范本
- 物業(yè)管理經(jīng)理培訓(xùn)課件
- 員工解除競業(yè)協(xié)議通知書
- 【語文】太原市小學(xué)一年級上冊期末試題(含答案)
- 儲能電站員工轉(zhuǎn)正述職報告
- DB3301∕T 0165-2018 城市照明設(shè)施養(yǎng)護維修服務(wù)標(biāo)準(zhǔn)
- 不銹鋼護欄施工方案范文
- 商業(yè)地產(chǎn)物業(yè)管理運營手冊
- 百人公司年會策劃方案
- 青少年法律知識競賽試題及答案
評論
0/150
提交評論