版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第4 4章 ARMARM嵌入式開(kāi)發(fā)流程和開(kāi)發(fā)工具 嵌入式系統(tǒng)的設(shè)計(jì)可以分成三個(gè)階段: 分析、設(shè)計(jì)和實(shí)現(xiàn)。分析階段是確定要解決的問(wèn) 題及需要完成的目標(biāo), 也常常被稱為 需求階段;設(shè)計(jì)階段主要是解決如何在給定的約束條 件下完成用戶的要求;實(shí)現(xiàn)階段主要是解決如何在所選擇的硬件和軟件的根底上進(jìn)行整個(gè) 軟、硬件系統(tǒng)的協(xié)調(diào)實(shí)現(xiàn)。在分析階段結(jié)束后,通常開(kāi)發(fā)者面臨的一個(gè)棘手的問(wèn)題就是硬件 平臺(tái)和軟件平臺(tái)的選擇,因?yàn)樗暮脡闹苯佑绊懼鴮?shí)現(xiàn)階段的任務(wù)完成。 通常硬件和軟件的選擇包括: 處理器、硬件部件、操作系統(tǒng)、編程語(yǔ)言、軟件開(kāi)發(fā)工具、 硬件調(diào)試工具、軟件組件等。 在上述選擇中,通常,處理器是最重要的,同時(shí)操作
2、系統(tǒng)和編程語(yǔ)言也是非常關(guān)鍵的。 處理器的選擇往往同時(shí)會(huì)限制操作系統(tǒng)的選擇,操作系統(tǒng)的選擇又會(huì)限制開(kāi)發(fā)工具的選擇。 4.1 ARM 嵌入式開(kāi)發(fā)模式 嵌入式系統(tǒng)與一般 PC機(jī)在開(kāi)發(fā)的硬件環(huán)境上的最大差異就是它分成兩個(gè)平臺(tái), 一個(gè)是 宿主機(jī)Host, 一個(gè)是目標(biāo)機(jī)Target。這里的宿主機(jī)通常就是 PC 機(jī),首先利用宿主機(jī) 上豐富的資源、良好的開(kāi)發(fā)環(huán)境編寫和編譯能夠在目標(biāo)機(jī)上運(yùn)行的程序, 這個(gè)過(guò)程叫做交叉 編譯,然后通過(guò)串口、并口、網(wǎng)絡(luò)或其它接口通過(guò)一定的傳輸手段將交叉編譯生成的目標(biāo)代 碼傳輸并裝載到目標(biāo)機(jī)上。圖 4-1 中就是采用并在線仿真器與目標(biāo)機(jī)和宿主機(jī)進(jìn)行連接, 從而實(shí)現(xiàn)目標(biāo)代碼的運(yùn)行和調(diào)試
3、。宿主機(jī)的工作環(huán)境可以是 Windows 98, Windows XP , Windows 2000 以及 RedHat 等操作系統(tǒng),具體選擇何種操作系統(tǒng)是由所采用的仿真器和所開(kāi) 發(fā)的軟件決定,在 ARM 的開(kāi)發(fā)過(guò)程中對(duì)于不同的軟件開(kāi)發(fā)階段所采用的調(diào)試手段是不同的, 宿主機(jī)的操作系統(tǒng)需求也就不一樣。詳細(xì)的描述請(qǐng)參考本節(jié)后面的內(nèi)容。 圖 4-1 所示為一個(gè)典型的目標(biāo)機(jī) /宿主機(jī)開(kāi)發(fā)模式。宿主機(jī)運(yùn)行 ADS 1.2 集成開(kāi)發(fā)環(huán)境, 并通過(guò)在線仿真器Multi-ICE 對(duì)目標(biāo)處理器Samsung 公司的基于 ARM920T核的 S3c2410 處理器ARM處理器進(jìn)行調(diào)試。宿主機(jī)和在線仿真器通過(guò)并口連
4、接,在線仿真器同時(shí)連接 到目標(biāo)機(jī)的 JTAG接口。 圖 4-1 目標(biāo)機(jī)/宿主機(jī)開(kāi)發(fā)模式 4.2 ARM 嵌入式開(kāi)發(fā)流程和開(kāi)發(fā)工具 ARM 嵌入式系統(tǒng)的開(kāi)發(fā)流程非常靈活而復(fù)雜,尤其是軟件開(kāi)發(fā)過(guò)程牽涉到許多不同的 開(kāi)發(fā)過(guò)程,而且每個(gè)開(kāi)發(fā)過(guò)程所使用的開(kāi)發(fā)工具均不盡相同,因此,在深入學(xué)習(xí) ARM 軟件 開(kāi)發(fā)之前,有必要對(duì) ARM 嵌入式開(kāi)發(fā)流程和所使用的開(kāi)發(fā)工具有一個(gè)初步的了解, 本節(jié)就 是要到達(dá)這樣的目的,至于各個(gè)開(kāi)發(fā)過(guò)程和開(kāi)發(fā)工具的詳細(xì)介紹請(qǐng)參考后續(xù)有關(guān)章節(jié)。 宿主機(jī) u ADS 1.2 _ o 在線仿真器 Multi-ICE _ JTAG 接口 嵌入式系統(tǒng) S3C2410 (ARM920T) 并
5、口 4.2.1 選擇硬件平臺(tái) 1、處理器的選擇 嵌入式系統(tǒng)的核心部件是各種類型的嵌入式處理器。 據(jù)不完全統(tǒng)計(jì), 目前全世界嵌入式 處理器的品種總量已經(jīng)超過(guò) 1000 多種,流行體系結(jié)構(gòu)有 30 幾個(gè)系列。但與全球 PC 市場(chǎng)不 同的是,沒(méi)有一種微處理器和微處理器公司可以主導(dǎo)嵌入式系統(tǒng),僅以 32 位的 CPU 而言, 就有 100 種以上嵌入式微處理器。 由于嵌入式系統(tǒng)設(shè)計(jì)的差異性極大, 因此選擇是多樣化的。 ARM 是近年來(lái)在嵌入式系統(tǒng)有影響力的微處理器制造商, ARM 的設(shè)計(jì)非常適用于小 的電源供電系統(tǒng)。 Apple 在 Newton 手持計(jì)算機(jī)中使用 ARM , 另外有幾款數(shù)字無(wú)線 也在
6、 使用 ARM 。 設(shè)計(jì)者在選擇處理器時(shí)要考慮的主要因素有: 1處理性能 一個(gè)處理器的性能取決于多個(gè)方面的因素, 如時(shí)鐘頻率, 內(nèi)部存放器的大小, 指令是否 對(duì)等處理所有的存放器等。 對(duì)于許多需用處理器的嵌入式系統(tǒng)設(shè)計(jì)來(lái)說(shuō), 目標(biāo)不是在于挑選 速度最快的處理器,而是在于選取能夠完成設(shè)計(jì)目標(biāo)的處理器。 比方: 對(duì)于 ARM 處理器, 如果需要使用軟解壓實(shí)現(xiàn)視頻, 應(yīng)該盡量選用 ARM9、 Xscale 等高檔處理器。而對(duì)于一般工業(yè)控制,那么可以考慮 ARM7 芯片是否滿足要求。 2技術(shù)指標(biāo) 當(dāng)前, 許多嵌入式處理器都集成了外圍設(shè)備的功能, 減少了芯片的數(shù)量, 降低了整個(gè)系 統(tǒng)的開(kāi)發(fā)費(fèi)用和技術(shù)難度
7、。 開(kāi)發(fā)人員首先考慮的是, 系統(tǒng)所要求的一些硬件能否方便地連接 到處理器上。其次是考慮該處理器的一些支持芯片,如 DMA 控制器,內(nèi)存管理器,中斷控 制器,串行設(shè)備、時(shí)鐘等的配套。 各個(gè)廠家市場(chǎng)的 ARM 芯片都根據(jù)不同的設(shè)計(jì)目標(biāo)擴(kuò)展了豐富的接口, 在選擇處理器時(shí) 應(yīng)該考慮選擇能夠支持盡可能多的功能,尤其是相對(duì)設(shè)計(jì)復(fù)雜的功能。 3功耗 嵌入式微處理器最大并且增長(zhǎng)最快的市場(chǎng)是手持設(shè)備、電子記事本、 PDA、 、GPS 導(dǎo)航器、 智能家電等消費(fèi)類電子產(chǎn)品。 這些產(chǎn)品對(duì)微處理器的根本要求是: 高性能、 低功耗。 4操作系統(tǒng)和軟件支持工具的選擇 操作系統(tǒng)的移植和開(kāi)發(fā)是嵌入式設(shè)計(jì)中的一個(gè)關(guān)鍵階段。 處理
8、器和操作系統(tǒng)的選擇在一 定程度上互相影響, 同時(shí)又將影響其軟件支持工具, 因此, 處理器的選擇的同時(shí)必須充分考 慮操作系統(tǒng)的因素。 在 ARM 系統(tǒng)中,如果用戶希望使用 Windows CE、 Linux 等操作系統(tǒng),就需要選擇 ARM720T 以上帶有 MMU Memory Management Unit功能的 ARM 芯片,ARM720T、 ARM920T 、 ARM922T 、 ARM946T 、 Strong-ARM 都帶有 MMU 功能。而 ARM7TDMI 那么沒(méi) 有 MMU ,不支持 Windows CE和 Linux,但目前有 uCLinux 以及 uC/OS-II等不需要 M
9、MU 支持的操作系統(tǒng)可運(yùn)行于 ARM7TDMI 硬件平臺(tái)之上。事實(shí)上, uCLinux 已經(jīng)成功移植到多 種不帶 MMU 的微處理器平臺(tái)上,并在穩(wěn)定性和其他方面都有上佳表現(xiàn)。 另外,如果斷定采用 Linux、 Windows CE 、 vxWorks 等操作系統(tǒng)時(shí),在選擇處理器時(shí)應(yīng) 該盡量選擇該操作系統(tǒng)已經(jīng)支持的處理器,這樣可以大大加快開(kāi)發(fā)進(jìn)度,降低難度。 選擇不同的操作系統(tǒng), 其軟件開(kāi)發(fā)過(guò)程和調(diào)試手段各不相同, 你的選擇方案是否能夠提 供各個(gè)開(kāi)發(fā)階段包括 bootloader 開(kāi)發(fā)、操作系統(tǒng)移植、驅(qū)動(dòng)開(kāi)發(fā)和應(yīng)用開(kāi)發(fā)所需的軟件 支持工具也是一個(gè)必須考慮的因素。 5是否內(nèi)置調(diào)試工具 處理器如果內(nèi)
10、置調(diào)試工具可以大大縮小調(diào)試周期,降低調(diào)試的難度。 ARM 提供 JTAG 調(diào)試接口,而且有眾多的第三方廠家推出各種調(diào)試工具。 2、硬件平臺(tái)的選擇 選擇好目標(biāo)微處理器后還需要準(zhǔn)備硬件平臺(tái)。 目前國(guó)內(nèi)外有許多針對(duì)各種 ARM 股處理器 的開(kāi)發(fā)板,這些開(kāi)發(fā)板對(duì)所支持的 ARM 股處理器做了詳細(xì)的硬件評(píng)估和軟件支持。 在自己動(dòng) 手設(shè)計(jì)硬件平臺(tái)之前, 購(gòu)置一塊這種開(kāi)發(fā)板作為測(cè)試平臺(tái), 進(jìn)行學(xué)習(xí)和參考, 這樣可以大大 加快開(kāi)發(fā)進(jìn)度。 對(duì)于一些應(yīng)用, 也可以直接在這些開(kāi)發(fā)板上進(jìn)行, 這樣可以省略硬件設(shè)計(jì)的 階段。 如果您不打算購(gòu)置開(kāi)發(fā)板作為測(cè)試平臺(tái),您就需要自行設(shè)計(jì)硬件平臺(tái)。在本書的第 5 章中,以目前國(guó)內(nèi)
11、 ARM9 勺主流芯片:Samsung 公司的 S3c2410 為例,詳細(xì)介紹了該處理器 的硬件架構(gòu)和硬件接口擴(kuò)展方法。 4.2.2 硬件驅(qū)動(dòng)調(diào)試 如果硬件平臺(tái)是自行設(shè)計(jì)的, 必須首先對(duì)硬件進(jìn)行調(diào)試, 硬件調(diào)試成功是進(jìn)行操作系統(tǒng) 移植和應(yīng)用程序開(kāi)發(fā)的一個(gè)根本前提。 這個(gè)過(guò)程通常是通過(guò)編寫一些簡(jiǎn)單的測(cè)試程序直接驅(qū)動(dòng)硬件以驗(yàn)證硬件是否正確, 這些 程序可以基于操作系統(tǒng)進(jìn)行編程,也可以不使用操作系統(tǒng),而且后一種方法來(lái)得更加簡(jiǎn)單, 調(diào)試也更方便和快捷。 這一類過(guò)程通常采用圖 4-1 所示的開(kāi)發(fā)模式,在運(yùn)行于 Windows 的 ADS 1.2 中編寫程 序并編譯,然后通過(guò) Multi-IcE 下載并調(diào)
12、試程序。由于這個(gè)過(guò)程的編程動(dòng)作依賴于硬件,采 用這種模式可以充分利用在線仿真器的強(qiáng)大的軟件調(diào)試功能,從而加快排錯(cuò)過(guò)程。 4.2.3 操作系統(tǒng)的選擇和移植 在單片機(jī)系統(tǒng)中, 由于受硬件資源的限制, 同時(shí)應(yīng)用程序通常比擬簡(jiǎn)單, 因此, 通常不 使用操作系統(tǒng), 直接采用前后臺(tái)程序控制方式設(shè)計(jì)軟件系統(tǒng)。 前臺(tái)運(yùn)行一個(gè)死循環(huán)作為主程 序流程, 在主程序中設(shè)置中斷, 當(dāng)中斷產(chǎn)生的時(shí)候, 運(yùn)行后臺(tái)中斷效勞程序, 然后返回繼續(xù) 運(yùn)行主程序。 這樣的開(kāi)發(fā)方式在 ARM 開(kāi)發(fā)中同樣適用, 而且對(duì)于一些小型應(yīng)用完全可以采 取這種方式, 但是對(duì)于復(fù)雜應(yīng)用, 如復(fù)雜的圖形用戶界面、 網(wǎng)絡(luò)協(xié)議等, 采用前后臺(tái)控制方 式進(jìn)
13、行設(shè)計(jì)的應(yīng)用程序設(shè)計(jì)復(fù)雜,而且不便于軟件模塊的劃分和軟件升級(jí)、維護(hù)等。 在這種情況下, 操作系統(tǒng)的優(yōu)勢(shì)展露無(wú)疑。 使用操作系統(tǒng)能夠充分發(fā)揮 ARM 微處理器 的優(yōu)勢(shì)。 目前絕大多數(shù)嵌入式操作系統(tǒng)都能夠穩(wěn)定運(yùn)行在 ARM 微處理器上。 軟件開(kāi)發(fā)中必 須首先選擇適宜的操作系統(tǒng)。 下面將簡(jiǎn)單介紹幾種常用的嵌入式操作系統(tǒng)以及它們的根本開(kāi) 發(fā)流程。 1、C/OSII 科 C/OSI是一種免費(fèi)公開(kāi)源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時(shí)內(nèi)核的實(shí)時(shí)操作系統(tǒng)。 其 內(nèi)核提供任務(wù)調(diào)度與管理、 時(shí)間管理、 任務(wù)間同步與通信、 內(nèi)存管理和中斷效勞等功能。 它 可以基于 ROM 運(yùn)行 ROMable 、可裁減,具有高度移植性
14、。 從應(yīng)用的角度來(lái)看,wC/OSII提供了一個(gè)實(shí)時(shí)性非常好的嵌入式內(nèi)核, 在工業(yè)控制、數(shù) 據(jù)采集等領(lǐng)域應(yīng)用廣泛。但 C/OSII內(nèi)核不支持文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等功能,而且沒(méi)有提 供統(tǒng)一的硬件驅(qū)動(dòng)程序接口和開(kāi)發(fā)工具鏈, 在復(fù)雜應(yīng)用中需要考慮內(nèi)核以外功能的實(shí)現(xiàn)難易 程度。 科 C/OSI內(nèi)核不支持文件系統(tǒng), 不支持應(yīng)用程序和驅(qū)動(dòng)程序的加載, 因此,在科 C/OSII 開(kāi)發(fā)中,內(nèi)核、驅(qū)動(dòng)程序和應(yīng)用程序都是集中編譯, 也就是說(shuō),C/OSII編譯以后的二進(jìn)制 代碼中即包含內(nèi)核代碼,也包含驅(qū)動(dòng)程序和應(yīng)用程序的代碼。同時(shí) C/OSII沒(méi)有提供統(tǒng)一 的開(kāi)發(fā)工具鏈,C/OS-II程序的編譯應(yīng)該采用支持所選處理器的
15、編譯器。 對(duì)于 ARM 處理器, 可以在 Windows 環(huán)境中使用 ADS 1.2、 ADT IDE中編譯科 C/OSII ,也可以在 Linux環(huán)境中 使用 GNU GCC編譯C/OSII。因此可以采用圖 4-1 所示的開(kāi)發(fā)模式調(diào)試基于 科 C/OSII的 程序。 2、 Linux/uClinux Linux/uClinux 是對(duì)于有 MMU 和沒(méi)有 MMU 的處理器的 Linux 解決方案。 Linux 內(nèi)核的 完全開(kāi)放, 使得可以自己設(shè)計(jì)和開(kāi)發(fā)出真正的硬實(shí)時(shí)系統(tǒng); 對(duì)于軟實(shí)時(shí)系統(tǒng), 在 Linux 中也 容易得到實(shí)現(xiàn)。 Linux/uClinux 提供強(qiáng)大的文件系統(tǒng)、網(wǎng)絡(luò)功能、 GUI
16、 等軟件模組支持,而且這些功能 都是可以裁減的, 同時(shí)它還提供了標(biāo)準(zhǔn)的驅(qū)動(dòng)程序接口和軟件開(kāi)發(fā)接口, 便于用戶編程和程 序維護(hù)。 Linux/uClinux 自身具備一整套工具鏈 GNU GCC ,包括編譯和調(diào)試工具,用戶可以 自行建立嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境和交叉運(yùn)行環(huán)境, 并且可以跨越在嵌入式系統(tǒng)開(kāi)發(fā)中仿真工 具ICE的障礙。 對(duì)于 ARM 處理器, Linux/uClinux 內(nèi)核、 驅(qū)動(dòng)程序以及應(yīng)用程序的編譯都在 Linux 環(huán)境 中使用 GNU GCC 完成。對(duì)于內(nèi)核和驅(qū)動(dòng)程序的調(diào)試通常借助于運(yùn)行于 Linux/uClinux 之前 的 bootloader 來(lái)完成, 只有在很少的情況下需
17、要借助在線仿真器完成。 對(duì)于應(yīng)用程序的調(diào)試 那么可以完全拋棄在線仿真器,使用 GDB 完成。在本書的第 7 章中介紹了 bootloader 以及 Linux/uClinux 的相關(guān)知識(shí)。 3、 Windows CE Windows CE 是 Windows 界面在嵌入式處理器中的實(shí)現(xiàn), 它提供了友好的人機(jī)交互界面 和強(qiáng)大的二次開(kāi)發(fā)功能。 Windows CE 包括四大根本模塊, 它們提供了操作系統(tǒng)的關(guān)鍵特性, 分別是:內(nèi)核Kernel模塊、對(duì)象存儲(chǔ)Object Store模塊、GWES 用戶、應(yīng)用程序和 操作系統(tǒng)之間的圖形用戶界面模塊和通信 Communication 模塊。 Windows
18、 CE 擁有完善的軟件支持開(kāi)發(fā)工具, Windows CE 的核心移植和驅(qū)動(dòng)開(kāi)發(fā)使用 專門的操作系統(tǒng)定制工具: Windows CE Platform Builder簡(jiǎn)稱 PB。而應(yīng)用程序的開(kāi)發(fā)那么有 嵌入式開(kāi)發(fā)工具包 Embedded Visual Tools,包括 Embedded Visual C+ 簡(jiǎn)稱 EVC和 Embedded Visual Basic 簡(jiǎn)稱 EVB 等。同時(shí) Embedded Visual Tools 下還可以進(jìn)行局部驅(qū)動(dòng)程 序的開(kāi)發(fā)。同時(shí)在 Windows CE 中還提供了用于 Windows CE 開(kāi)發(fā)的 bootloader: EBOOT。 4、 vxWor
19、ks VxWorks 是專門為實(shí)時(shí)嵌入式系統(tǒng)設(shè)計(jì)開(kāi)發(fā)的操作系統(tǒng)內(nèi)核,為程序員提供了高效的 實(shí)時(shí)多任務(wù)調(diào)度、中斷管理,實(shí)時(shí)的系統(tǒng)資源以及實(shí)時(shí)的任務(wù)間通信。在各種 CPU 平臺(tái)上 提供了統(tǒng)一的編程接口和一致的運(yùn)行特性,盡可能的屏蔽了不同 CPU 之間的底層差異。應(yīng) 用程序員可以將盡可能多的精力放在應(yīng)用程序本身, 而不必再去關(guān)心系統(tǒng)資源的管理。 基于 VxWorks 操作系統(tǒng)的應(yīng)用程序可以在不同 CPU 平臺(tái)上輕松移植。 VxWorks 是一種功能強(qiáng)大而且比擬復(fù)雜的操作系統(tǒng),包括了進(jìn)程管理、存儲(chǔ)管理、設(shè) 備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等幾個(gè)局部。 VxWorks 只占用了很小的存儲(chǔ) 空間,
20、并可高度裁減,保證了系統(tǒng)能以較高的效率運(yùn)行。所以,僅僅依靠人工編程調(diào)試,很 難發(fā)揮它的功能并設(shè)計(jì)出可靠、高效的嵌入式系統(tǒng),必須要有與之相適應(yīng)的開(kāi)發(fā)工具。 TornadoII 就是為開(kāi)發(fā) VxWorks 應(yīng)用系統(tǒng)提供的集成開(kāi)發(fā)環(huán)境, TornadoII 中包含的工程管理 軟件,可以將用戶自己的代碼與 VxWorks 的核心有效的組合起來(lái),可以按用戶的需要裁剪 配置 VxWorks 內(nèi)核; vxSim 原型仿真器可以讓程序員不用目標(biāo)機(jī)的情況下,直接開(kāi)發(fā)系統(tǒng) 原型,作出系統(tǒng)評(píng)估;功能強(qiáng)大的 CrossWind 調(diào)試器可以提供任務(wù)級(jí)和系統(tǒng)級(jí)的調(diào)試模式, 可以進(jìn)行多目標(biāo)機(jī)的聯(lián)調(diào); 優(yōu)化分析工具可以幫助程
21、序員從多種方式真正地觀察、 跟蹤系統(tǒng) 的運(yùn)行,排除錯(cuò)誤,優(yōu)化性能。 4.3 ADS 與 Multi-ICE 簡(jiǎn)介 本節(jié)將簡(jiǎn)單介紹 ARM#發(fā)軟件 ADS(ARM Developer Suite)和 Multi-ICE 硬件仿真器。 在隨后的 8.1節(jié)中,將以一個(gè)簡(jiǎn)單的例子描述如何在 ADS1 成開(kāi)發(fā)環(huán)境下編寫、編譯并調(diào)試 應(yīng)用程序。 ARM ADSi:稱為 ARM Developer Suite ,是 AR 必司推出的用于 ARMg 序設(shè)計(jì)、開(kāi)發(fā)和 調(diào)試的集成開(kāi)發(fā)工具。現(xiàn)在 ADS的最新版本是 1.2,它取代了早期的 ADS1.1 和 ADS1.0。它 支持 Windows NT4, Wind
22、ows 2000 , Windows 98、 Windows 95 、 Windows XP 和 Windows Me 等操作系統(tǒng)。 ADS由命令行開(kāi)發(fā)工具,ARM!行時(shí)庫(kù),圖形化集成開(kāi)發(fā)環(huán)境 (Code Warrior和 AXD), 實(shí)用程序和支持軟件組成。下面將就每個(gè)局部作詳細(xì)的介紹。 本文以 ADS1.2 為例, 并假設(shè)已經(jīng)將 ADS1.2 安裝在 “ C:Program 目錄下。 4.3.1 命令行開(kāi)發(fā)工具 ADS包含一系列基于命令行的 ARM譯、匯編、鏈接等工具,它們位于 ADS安裝目錄的 bin 子目錄下( C:Program FilesARMADSv1_2Bin )。它們既可以在
23、命令控制臺(tái)環(huán)境下使 用,同時(shí)由于已被嵌入到了 ADS的圖形界面中,所以也可以在圖形界面下通過(guò)參數(shù)設(shè)置等手 段來(lái)使用。 1、ARM C(C+)編譯器 ADS包含包含多種 C 編譯器, 包括: armcc, tcc , armcpp 和 tcpp。其中 armcc是 ARMC 編譯器, armcpp是 ARM C+編譯器,tcc是 Thumb C 編譯器,tcpp 是 Thumb C+編譯器。 2、ARMf匚編器(armasni) armasm 是 ARMF口 Thumb 的匯編器.它對(duì)用 ARM 匯編語(yǔ)言和 Thumb 匯編語(yǔ)言寫的源代碼 進(jìn)行匯編。 3、ARMB1 接器(armlink ) a
24、rmlink 是 ARM1 接器。該命令既可以將編譯得到的一個(gè)或多個(gè)目標(biāo)文件和相關(guān)的一個(gè) 或多個(gè)庫(kù)文件進(jìn)行鏈接, 生成一個(gè)可執(zhí)行文件, 也可以將多個(gè)目標(biāo)文件局部鏈接成一個(gè)目標(biāo) 文件,以供進(jìn)一步的鏈接。 ARM接器生成的是 ELF格式的可執(zhí)行映像文件。 5、符號(hào)調(diào)試器( armsd) armsd 是 ARM 和 Thumb 的符號(hào)調(diào)試器。它能夠進(jìn)行源碼級(jí)的程序調(diào)試。用戶可以在用 C 或匯編語(yǔ)言寫的代碼中進(jìn)行單步調(diào)試,設(shè)置斷點(diǎn),查看變量值和內(nèi)存單元的內(nèi)容。 4.3.2 ARM 運(yùn)行時(shí)庫(kù) ADS 提供以下的: 在 ADS 軟件安裝路徑的 lib 目錄( C:Program FilesARMADSv1
25、_2lib )下有兩個(gè)子目 錄:armlib 和 cpplib。這兩個(gè)子目錄提供了兩種運(yùn)行時(shí)庫(kù)來(lái)支持被編譯的 C 和 C+代碼,它 們分別是:ANSI C 函數(shù)庫(kù)和 C+函數(shù)庫(kù)。 環(huán)境變量 ARMLIB 必須被設(shè)置成指向庫(kù)路徑。另外一種指定 ARM C 和 ARM C+ 庫(kù)路 徑的方法是,在鏈接的時(shí)候使用操作選項(xiàng) -libpath directorydirectory 代表庫(kù)所在的路徑 ,來(lái) 指明要裝載的庫(kù)的路徑。需要說(shuō)明的是,ADS安裝成功后,ARMLIB被缺省指向到 C:Program FilesARMADSv1_2LIB 目錄,因此通常不用進(jìn)行設(shè)置鏈接器就會(huì)自動(dòng)從 ARMLIB 指定的
26、庫(kù)路徑中找出這兩個(gè)函數(shù)庫(kù)的路徑。 1 、 ANSI C 函數(shù)庫(kù): armlib ARM C 庫(kù)包含浮點(diǎn)代數(shù)運(yùn)算庫(kù)、數(shù)學(xué)庫(kù)等各類庫(kù)函數(shù)。與這些庫(kù)相應(yīng)的頭文件在 C:Program FilesARMADSv1_2include 目錄中。這個(gè) C 函數(shù)庫(kù)是由以下幾局部組成: 1在 ISO C 標(biāo)準(zhǔn)中定義的函數(shù); 2在 semihosted 環(huán)境下 semihosting 是針對(duì) ARM 目標(biāo)機(jī)的一種機(jī)制,它能夠根據(jù)應(yīng)用 程序代碼的輸入 /輸出請(qǐng)求,與運(yùn)行有調(diào)試功能的主機(jī)通訊。這種技術(shù)允許主機(jī)為通常沒(méi)有 輸入和輸出功能的目標(biāo)硬件提供主機(jī)資源 用來(lái)實(shí)現(xiàn) C 庫(kù)函數(shù)的與目標(biāo)相關(guān)的函數(shù); 3被 C 和 C+
27、編譯器所調(diào)用的支持函數(shù)。 ARM C 庫(kù)提供了額外的一些部件支持 C+,并為不同的結(jié)構(gòu)體系和處理器編譯代碼。 ARM C 庫(kù)函數(shù)是以二進(jìn)制格式提供的,并禁止修改。如果讀者想對(duì)庫(kù)函數(shù)創(chuàng)立新的實(shí) 現(xiàn)的話, 可以把這個(gè)新的函數(shù)編譯成目標(biāo)文件, 然后在鏈接的時(shí)候把它包含進(jìn)來(lái)。 這樣在鏈 接的時(shí)候,使用的是新的函數(shù)實(shí)現(xiàn)而不是原來(lái)的庫(kù)函數(shù)。 通常情況下,為了創(chuàng)立依賴于目標(biāo)的應(yīng)用程序,在 ANSI C 庫(kù)中只有很少的幾個(gè)函數(shù)需 要實(shí)現(xiàn)重建。 2、C+函數(shù)庫(kù): 這個(gè)子目錄包含了 Rogue Wave C+庫(kù)和 C+支持函數(shù)庫(kù)。Rogue Wave C+庫(kù)和 C+支 持 函 數(shù) 庫(kù)合 在 一起 被 稱為 ARM
28、 C+ 庫(kù) 。 與 這 些 庫(kù)相 應(yīng) 的頭 文 件安 裝 在 C:Program FilesARMADSv1_2include 目錄下。這個(gè)庫(kù)是由以下幾局部組成的: 1版本為 2.01.01 的 Rogue Wave Standard C+庫(kù); 2) C+編譯器使用的支持函數(shù); 3) Rogue Wave庫(kù)所不支持的其他的 C+函數(shù)。 Rogue Wave Standard C+函數(shù)庫(kù)的源代碼不是免費(fèi)發(fā)布的, 可以從 Rogue Wave Software Inc.,或 ARM 公司通過(guò)支付許可證費(fèi)用來(lái)獲得源文件。 4.3.3 圖形化集成開(kāi)發(fā)環(huán)境 Code Warrior 和 AXD 1 、
29、CodeWarrior for ARM CodeWarrior for ARM 是一套完整的集成開(kāi)發(fā)工具,充分發(fā)揮了 ARM RISC 的優(yōu)勢(shì) , 使 產(chǎn)品開(kāi)發(fā)人員能夠很好的應(yīng)用尖端的片上系統(tǒng)技術(shù) . 該工具是專為基于 ARM RISC 的處理 器而設(shè)計(jì)的 , 它可加速并簡(jiǎn)化嵌入式開(kāi)發(fā)過(guò)程中的每一個(gè)環(huán)節(jié), 使得開(kāi)發(fā)人員只需通過(guò)一個(gè) 集 成 軟 件 開(kāi)發(fā) 環(huán) 境就 能 研 制出 ARM 產(chǎn) 品 , 在 整 個(gè) 開(kāi) 發(fā)周 期 中 , 開(kāi)發(fā) 人 員 無(wú)需 離 開(kāi) CodeWarrior 開(kāi)發(fā)環(huán)境 , 因此節(jié)省了在操做工具上花的時(shí)間 ,使得開(kāi)發(fā)人員有更多的精力投入 到代碼編寫上來(lái), CodeWarri
30、or 集成開(kāi)發(fā)環(huán)境 IDE 為管理和開(kāi)發(fā)工程提供了簡(jiǎn)單多樣化的圖形用戶界面。 用戶可以使用 ADS的 CodeWarrior IDE為 ARM 和 Thumb 處理器開(kāi)發(fā)用 C, C+,或 ARM 匯編語(yǔ)言的程序代碼。通過(guò)提供下面的功能, CodeWarrior IDE 縮短了用戶開(kāi)發(fā)工程代碼的 周期。 1全面的工程管理功能; 2)子函數(shù)的代碼導(dǎo)航功能,使得用戶迅速找到程序中的子函數(shù)。 可以在 CodeWarrior IDE 為 ARM 配置各種命令行工具的參數(shù), 實(shí)現(xiàn)對(duì)工程代碼的編譯, 匯編和鏈接。 CodeWarrior IDE 能夠讓用戶將源代碼文件,庫(kù)文件還有其他相關(guān)的文件以及配置設(shè)置
31、 等放在一個(gè)工程中。 每個(gè)工程可以創(chuàng)立和管理生成目標(biāo)設(shè)置的多個(gè)配置。 例如, 要編譯一個(gè) 包含調(diào)試信息的生成目標(biāo)和一個(gè)基于 ARM7TDMI 的硬件優(yōu)化生成目標(biāo), 生成目標(biāo)可以在同 一個(gè)工程中共享文件,同時(shí)使用各自的設(shè)置。 CodeWarrior IDE 為用戶提供下面的功能: 源代碼編輯器,它集成在 CodeWarrior IDE 的瀏覽器中,能夠根據(jù)語(yǔ)法格式,使用不同 的顏色顯示代碼; 源代碼瀏覽器, 它保存了在源碼中定義的所有符號(hào), 能夠使用戶在源碼中快速方便的跳 轉(zhuǎn); 查找和替換功能, 用戶可以在多個(gè)文件中, 利用字符串通配符, 進(jìn)行字符串的搜索和替 換; 文件比擬功能,可以使用戶比擬
32、路徑中的不同文本文件的內(nèi)容。 ADS 的 CodeWarrior IDE 是基于 Metrowerks CodeWarrior IDE 4.2 版本的。它經(jīng)過(guò)適當(dāng) 的裁剪以支持 ADS 工具鏈。 針對(duì) ARM 的配置面板為用戶提供了在 CodeWarrior IDE 集成環(huán)境下配置各種 ARM 開(kāi) 發(fā)工具的能力。 以 ARM 為目標(biāo)平臺(tái)的工程創(chuàng)立向?qū)В?可以使用戶以此為根底, 快速創(chuàng)立 ARM 和 Thumb 工程。 盡管大多數(shù)的 ARM 工具鏈已經(jīng)集成在 CodeWarrior IDE,但是仍有許多功能在該集成 環(huán)境中沒(méi)有實(shí)現(xiàn),這些功能大多數(shù)是和調(diào)試相關(guān)的,因?yàn)?ARM 的調(diào)試器沒(méi)有集成到
33、CodeWarrior IDE 中。 由于 ARM 調(diào)試器 (AXD) 沒(méi)有集成在 CodeWarrior IDE 中,這就意味著,用戶不能在 CodeWarrior IDE 中進(jìn)行斷點(diǎn)調(diào)試和查看變量。 2 、 ADS 調(diào)試器 這里所說(shuō)的調(diào)試器本身是一個(gè)軟件,用戶通過(guò)這個(gè)軟件并配合調(diào)試代理( debug agent) 可以對(duì)包含有調(diào)試信息的, 正在運(yùn)行的可執(zhí)行代碼進(jìn)行比方變量的查看, 斷點(diǎn)的控制等調(diào)試 操作。 調(diào)試代理執(zhí)行調(diào)試器發(fā)出的命令,如:設(shè)置斷點(diǎn),單步運(yùn)行,從存儲(chǔ)器中讀數(shù)據(jù),把數(shù) 據(jù)寫到存儲(chǔ)器等。調(diào)試代理既不是被調(diào)試的程序,也不是調(diào)試器。在 ARM 體系中,它可能 是下面幾種情況中的一個(gè)
34、: 1)在線實(shí)時(shí)仿真器 在線實(shí)時(shí)仿真器通過(guò) JTAG 端口與目標(biāo)機(jī)進(jìn)行連接,可以實(shí)現(xiàn)對(duì) ARM 處理器的在線、 實(shí)時(shí)調(diào)試,且不占用系統(tǒng)資源。 Multi-ICE(Multi-processor in-circuit emulator)是 ARM 公司自己的 JTAG 在線實(shí)時(shí)仿真 器。它支持全系列的 ARM 核,通過(guò)并口與 PC 機(jī)連接,數(shù)據(jù)接口為 8 位。 Multi-ICE 內(nèi)部采 用 FPGA 實(shí)現(xiàn)并口到 JTAG 的協(xié)議轉(zhuǎn)換,速度很快,下載速度可在 120kByte/s 左右。 本章下節(jié)將要提到的 ADT 1000A 仿真器也是一種在線實(shí)時(shí)仿真器。 2) ARMulator ARMul
35、ator 即軟件模擬器, 它獨(dú)立于處理器硬件, 是一種有效的源程序檢驗(yàn)和測(cè)試工具。 但是, 模擬器畢竟只是以一種處理器模擬另一種處理器的運(yùn)行, 在指令執(zhí)行時(shí)間、 中斷響應(yīng)、 定時(shí)器等方面與實(shí)際處理器有相對(duì)大的差異。 3) Angel Angel 為一個(gè)運(yùn)行于目標(biāo)機(jī)上的監(jiān)控程序, 它在調(diào)試器和目標(biāo)板之間通過(guò)一定的通信方 式, 如: 串口通信, 為用戶提供各種調(diào)試功能。 這種方式需要占用目標(biāo)機(jī)系統(tǒng)資源, 如串口、 ROM 、 RAM 等。 ADS 中包含有 3 個(gè)調(diào)試器: 1) AXD(ARM eXtended Debugger) : ARM 擴(kuò)展調(diào)試器; 2) armsd(ARM Symboli
36、c Debugger) : ARM 符號(hào)調(diào)試器; 3) 與老版本兼容的 Windows 或 Unix 下的 ARM 調(diào)試工具, ADW/ADU(Application Debugger Windows/Unix) 。 4.3.4 實(shí)用程序 此外, ADS 還提供了許多實(shí)用工具,下面簡(jiǎn)單的介紹開(kāi)發(fā)中經(jīng)常用到的程序: 1 、 fromELF 這是 ARM 映像文件轉(zhuǎn)換工具。該命令將 ELF 格式的文件作為輸入文件,將該格式轉(zhuǎn) 換為各種輸出格式的文件,包括 plain binary(BIN 格式映像文件 ), Motorola 32-bit S-record format(Motorola 32 位
37、 S 格式映像文件 ), Intel Hex 32 format(Intel 32 位格式映像文件 ),和 Verilog-like hex format(V erilog 16 進(jìn)制文件 )。 FromELF 命令也能夠?yàn)檩斎胗诚裎募a(chǎn)生文本 信息,例如代碼和數(shù)據(jù)長(zhǎng)度。 2 、 armar ARM 庫(kù)函數(shù)生成器將一系列 ELF 格式的目標(biāo)文件以庫(kù)函數(shù)的形式集合在一起, 用戶可 以把一個(gè)庫(kù)傳遞給一個(gè)鏈接器以代替幾個(gè) ELF 文件。 3 、 Flash downloader 用于把二進(jìn)制映像文件下載到 ARM 開(kāi)發(fā)板上的 Flash 存儲(chǔ)器的工具 4 .3.5 支持的軟件 ADS 為用戶提供下面
38、的軟件, 使用戶可以在軟件仿真的環(huán)境下或者在基于 ARM 的硬件 環(huán)境調(diào)試用戶應(yīng)用程序。 ARMulator 這是一個(gè) ARM 指令集仿真器, 集成在 ARM 的調(diào)試器 AXD 中, 它提供對(duì) ARM 處理器 的指令集的仿真,為 ARM 和 Thumb 提供精確的模擬。用戶可以在硬件尚未做好的情況下, 開(kāi)發(fā)程序代碼。 4.4 ADT IDE 簡(jiǎn)介 4.4.1 ADT IDE 集成開(kāi)發(fā)環(huán)境 1 ADT IDE 簡(jiǎn)介 ADTIDE 是一套應(yīng)用于嵌入式軟件開(kāi)發(fā)的新一代集成開(kāi)發(fā)環(huán)境,它提供高效、清晰、可 視化的嵌入式軟件開(kāi)發(fā)平臺(tái), 包括一整套完備的面向嵌入式系統(tǒng)的開(kāi)發(fā)和調(diào)試工具: 編輯器、 編譯器、鏈
39、接器、工程管理器以及調(diào)試器等。 ADT IDE 運(yùn)行于 Windows NT、 95、 98、 2000 及 XP,采用類 Visual Stdio 界面風(fēng)格,其界面如圖 4-2 所示。 南裁板窗口 X 儂 |gjfirh - 1A-IT77 圖4-2 ADT IDE集成開(kāi)發(fā)環(huán)境軟件界面圖 2 ADT IDE主要特性 中文、英文版本支持 操作系統(tǒng)支持 支持 Vxworks,uCLinux,Linux,Nucleus 等操作系統(tǒng)的開(kāi)發(fā)和調(diào)試。 可視化的源碼編輯和工程管理功能: 界面友好,使用方便:類似 MS Visual Studio 的用戶界面,支持打印功能,支 持文件內(nèi)查找功能和 Find
40、in Files 功能。 工程管理器:ADTIDE提供圖形化的工程管理工具,以 project 為單位為用戶提 供給用源程序的文件組織和管理,管理用戶的應(yīng)用程序,編譯鏈接選項(xiàng)以及調(diào)試參數(shù)等。 源碼編輯器:支持標(biāo)準(zhǔn)的文本編輯功能,支持 C 語(yǔ)言、匯編語(yǔ)言語(yǔ)法高亮顯示。 輔助編輯工具:提供多剪貼板工具、代碼模板工具、頭文件和源文件切換工具、 注釋工具、符號(hào)配對(duì)書寫工具等多種輔助編輯工具。 交叉編譯功能: 支持開(kāi)發(fā)語(yǔ)言: ANSI C; Embedded C+;匯編語(yǔ)言。 編譯工具:使用著名優(yōu)秀自由軟件 GNU 勺 GCC!叉編譯工具,并經(jīng)過(guò)優(yōu)化和嚴(yán)格 測(cè)試,支持 C 語(yǔ)言、匯編語(yǔ)言等。 編譯參數(shù)設(shè)
41、置:完全圖形界面方式的編譯參數(shù)設(shè)置, 提供可視化的設(shè)置功能。 支 持工程級(jí)/文件目錄級(jí)/文件級(jí)編譯參數(shù)設(shè)置。 強(qiáng)大的源代碼級(jí)調(diào)試功能: 圖形和命令行兩種調(diào)試方式。 斷點(diǎn)功能:支持軟件斷點(diǎn)和硬件斷點(diǎn),實(shí)現(xiàn)斷點(diǎn)設(shè)置、斷點(diǎn)屏蔽、斷點(diǎn)取消、斷 S fi ih - 工具欄 驚題幅 ml - 11 iffhr 4 (; Vtl *! JBEJ 二番 口 dE fliflath 七1ET01ET0 riiihh -ic m f .Ail.MbK 制 一 工作區(qū)褊口 數(shù)據(jù)規(guī)整窗口 V*a*r typ -KE*IS 狀態(tài)欄 菜單欄 DI 1LJ 方苗&35TSHT 三虱130cl 址配MlNid lb
42、30 由(昵Ml日MY I 0 20 反匯歸窗口 rj,* ME三| rj. 小、甘3】口 Eurrfrnt bd* i 3UC) BKQQcccaaa 存放霹窗口 LLU 11 Vuluc iffiDiCad-iCKi; 11 Cad 酎立曲 inel iiF(pCadAcnd 4 U巨Erasing) En-fIfi. eCadI: 士. Sxd 二 IKS. wjfiir ri. r3. mil Jdj -filiJ 0 朗 aE5M4T SMM1SMIS QKgm斗聽(tīng)的 aKDSEiQE2B 9K549阜4磐3 9X2S92MK SXBCMBIFC 郎 MQCME, exBcyoMEy
43、j jMinwingOQi*r-: c*l_| I n$r ,t iM SBl & U-EUgQ01M : c l m Elg 留盧:C.tl j * jj gQ|g9MD gon gm i UQI90WM 皿0輛3 刖M網(wǎng)i 皿S喇5 08999B1F 回 肝勺*|3; 口 T3t! MJ -J 輸出售口 號(hào)Mapace L J.H = 0L U J J 4 虢上存放器窗口 一|門| *1 ystea Cf1iELiral lnystea Cf1iELiral ln 一 I-nhbLi UrL MUiJ VeiUrL MUiJ Vei OvOCOOOOfe I而 B fluh. 51: umm日. Rie R
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年八年級(jí)物理下冊(cè) 第7章 第2節(jié) 彈力說(shuō)課稿 (新版)新人教版
- 2025最簡(jiǎn)單采購(gòu)合同協(xié)議樣本
- 2024-2025學(xué)年高中化學(xué) 第1章 有機(jī)化合物的結(jié)構(gòu)與性質(zhì) 烴 1.1.1 有機(jī)化學(xué)的發(fā)展 有機(jī)化合物的分類說(shuō)課稿 魯科版選修5
- 2025如何防范國(guó)際貿(mào)易合同中的風(fēng)險(xiǎn)店鋪轉(zhuǎn)讓合同協(xié)議書
- 農(nóng)村電商 合同范例
- 包裝食品采購(gòu)合同范例
- Unit 1 My school 單元整體分析(說(shuō)課稿)-2023-2024學(xué)年人教PEP版英語(yǔ)四年級(jí)下冊(cè)
- 2024-2025學(xué)年高中歷史 專題九 戊戌變法 一 醞釀中的變革(2)教學(xué)說(shuō)課稿 人民版選修1
- 13 導(dǎo)體和絕緣體 說(shuō)課稿-2024-2025學(xué)年科學(xué)四年級(jí)上冊(cè)蘇教版001
- JN造船廠合同管理改進(jìn)研究
- 2024-2025學(xué)年北京市豐臺(tái)區(qū)高三語(yǔ)文上學(xué)期期末試卷及答案解析
- 2025屆西藏林芝一中高三第二次診斷性檢測(cè)英語(yǔ)試卷含解析
- 開(kāi)封市第一屆職業(yè)技能大賽健康照護(hù)項(xiàng)目技術(shù)文件(國(guó)賽)
- 公路電子收費(fèi)系統(tǒng)安裝合同范本
- 醫(yī)院培訓(xùn)課件:《傷口評(píng)估與測(cè)量》
- 2021年全國(guó)高考物理真題試卷及解析(全國(guó)已卷)
- 期末試卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 綜合實(shí)踐項(xiàng)目 制作水族箱飼養(yǎng)淡水魚 教學(xué)設(shè)計(jì)-2024-2025學(xué)年魯科版生物六年級(jí)上冊(cè)
- 安徽省2024年高考語(yǔ)文模擬試卷及答案5
- 關(guān)于餐飲合同范本
- CHT 4019-2016 城市政務(wù)電子地圖技術(shù)規(guī)范(正式版)
評(píng)論
0/150
提交評(píng)論