




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、高等學(xué)校嵌入式系統(tǒng)設(shè)計教材,ARM9處理器C語言編程標(biāo)準(zhǔn)教程,第一章 ARM技術(shù)簡介,1.1 ARM處理器簡介 ARM處理器是一種低功耗高性能的32位RISC (精簡指令系統(tǒng))處理器。本章將其從結(jié)構(gòu)入手進(jìn)行分析,基于目前流行的ARM920T核詳細(xì)描述其硬件結(jié)構(gòu)和編程。 ARM處理器共有31個32位寄存器,而其中16個可以在任何模式下看到。它的指令為簡單的加載與存儲指令(從內(nèi)存加載某個值,執(zhí)行完操作后再將其放回內(nèi)存)。ARM一個有趣的特點(diǎn)是它所有的指令都帶有條件。例如用戶可以測試某個寄存器的值,但是直到下次使用同一條件進(jìn)行測試時,才能有條件地執(zhí)行這些指令。另一個特征是可以在加載數(shù)值的同時進(jìn)行算術(shù)
2、和移位操作。它可以在幾種模式下操作,包括通過使用SWI(softwarinterrupt軟件中斷)指令從用戶模式進(jìn)入到系統(tǒng)模式。,ARM處理器是一個綜合體,ARM公司自身并不制造微處理器。它們是由ARM的合作伙伴(Intel或LSI)制造。ARM還允許將其處理器通過協(xié)處理器接口進(jìn)行緊耦合。它還包括幾種內(nèi)存管理單元的變種,包括簡單的內(nèi)存保護(hù)到復(fù)雜的頁面層次。 ARM微處理器系列包括ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCode系列和Intel的Xscale。其中,ARM7、ARM9、ARM9E和ARM10E為4個通用處理器系列,每一個系列提供一套相對獨(dú)特的性能來
3、滿足不同應(yīng)用領(lǐng)域的需求。例SecurCore系列專門為安全要求較高的應(yīng)用而設(shè)計。,1.1.1 ARM7系列微處理器,ARM7系列微處理器是低功耗的32位RISC處理器,最適合用于對價位和功耗要求較低的消費(fèi)類應(yīng)用。ARM7系列有如下特點(diǎn): 具有嵌入式ICERT (Internet Communications Engine-Route因特網(wǎng)通信)邏輯,調(diào)試開發(fā)方便。 極低的功耗,適合對功耗要求較低的應(yīng)用,如便攜式產(chǎn)品。 能夠提供0.9MIPS(Million Instructions Per Second百萬條/秒)/MHz的三級流水線結(jié)構(gòu)。 對操作系統(tǒng)的支持廣泛,如Windows CE、Lin
4、ux、Palm OS等。 指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產(chǎn)品升級換代。 主頻最高可達(dá)130MHz,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。,ARM7系列微處理器主要應(yīng)用于工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、 移動電話等多種多媒體和嵌入式應(yīng)用。 ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TDMI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義如下: T 支持16位壓縮指令集Thumb(ARM體系結(jié)構(gòu)中一種16位的
5、指令集)。 D 支持片上Debug。 M 內(nèi)嵌硬件乘法器(Multiplier)。 I 嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn)。,1.1.2 ARM9系列微處理器,ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現(xiàn)。具有以下特點(diǎn): 5級流水,指令執(zhí)行效率更高。 提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA(Advanced Microcontroller Bus Architecture)總線接口。 全性能的MMU,支持WindowsCE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。 MPU支持實時操作系統(tǒng)。 支
6、持?jǐn)?shù)據(jù)Cache(高速緩沖存儲器)和指令Cache,具有更高的指令和數(shù)據(jù)處理力。 ARM9系列微處理器主要應(yīng)用于無線設(shè)備,儀器儀表,安全系統(tǒng),機(jī)頂盒,高端打印機(jī),數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。 ARM9系列微處理器包括ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應(yīng)用場合。,1.1.3 ARM9E系列微處理器,ARM9E系列微處理器的主要特點(diǎn)如下: 支持DSP指令集,適合于需要高速數(shù)字信號處理的場合。 5級流水線,指令執(zhí)行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 支持VFP9浮點(diǎn)處理協(xié)處理器。 全性能的MMU,支持眾多
7、主流嵌入式操作系統(tǒng)。 支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的處理能力。 主頻最高可達(dá)300MHz。 ARM9E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。 ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應(yīng)用場合。,1.1.4 ARM10E系列微處理器,ARM10E系列微處理器的主要特點(diǎn)如下: 支持DSP指令集,適合于需要高速數(shù)字信號處理的場合。 6級流水線,指令執(zhí)行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 支持VFP
8、10浮點(diǎn)處理協(xié)處理器。 全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。 支持?jǐn)?shù)據(jù)Chche和指令Chche,具有更高的處理能力。 主頻最高可達(dá)400MHz。 內(nèi)嵌并行讀/學(xué)操作部件。 ARM10E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域。 ARM10E系列微處理器包括ARM1020E、ARM1002E和ARM1026JE-S三種類型,以適用于不同的應(yīng)用場合。,1.1.5 ARM920T簡介,ARM920T高緩存處理器是ARM9 Thumb系列中高性能的32位單片系統(tǒng)處理器。 而ARM920T系列微處理器包含如下幾種類型的內(nèi)核。 ARM9TDMI:
9、只有內(nèi)核。 ARM940T:由內(nèi)核、高速緩存和內(nèi)存保護(hù)單元(MPU)組成。 ARM920T:有內(nèi)核、高速緩存和內(nèi)存管理單元(MMU)組成。 ARM920T提供完善的高性能CPU子系統(tǒng),包括以下方面: ARM9TDMI RISC 整數(shù)CPU。 16K字節(jié)指令與16K字節(jié)數(shù)據(jù)緩存。 指令與數(shù)據(jù)存儲器管理單元(MMU)。 寫緩沖器。 高級微處理器總線架構(gòu)(AMBA)總線接口。 ETM(內(nèi)置追蹤宏單元)接口。,ARM920T中的ARM9TDMI內(nèi)核可執(zhí)行32位ARM及16位Thumb指令集。ARM9TDMI處理器是哈佛結(jié)構(gòu),有包括取指、譯碼、執(zhí)行、存儲及寫入的5級流水線。 ARM920T處理器包括以下
10、兩個協(xié)處理器。 CP14:控制軟件對調(diào)試信道的訪問。 CP15:系統(tǒng)控制處理器,提供16個額外寄存器來配置與控制緩存、MMU、系統(tǒng)保護(hù)、 時鐘模式及其他系列選項。 ARM920T處理器的主要特征如下。 ARM9TDMI內(nèi)核,ARM v4T架構(gòu)。 兩套指令集:ARM高性能32位指令集和Thumb高代碼密度16位指令集。,5級流水線結(jié)構(gòu),即取指(F)、指令譯碼(D)、執(zhí)行(E)、數(shù)據(jù)存儲訪問(M)和寫寄存器(W)。 16K字節(jié)數(shù)據(jù)緩存,16K字節(jié)指令緩存。 寫緩沖器:16字的數(shù)據(jù)緩沖器,4地址的地址緩沖器,軟件控制消耗。 標(biāo)準(zhǔn)的ARMv4存儲器管理單元(MMU):區(qū)域訪問許可,允許以1/4頁面大小
11、對頁面進(jìn)行訪問,16個嵌入域,64個輸入指令TLB及64個輸入數(shù)據(jù)TLB。 8位、16位、32位的指令總線與數(shù)據(jù)總線。,1.1.6 SecurCore (可靠內(nèi)核技術(shù))系列微處理器,SecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)各種主要特點(diǎn)外,在系統(tǒng)安全方面具有如下特點(diǎn): 帶有靈活的保護(hù)單元,確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全。 采用軟內(nèi)核技術(shù),防止外部對其進(jìn)行掃描探測。 可集成用戶自己的安全特性。 SecurCore系列微處理器主要應(yīng)用于一些對安全性要求較高的應(yīng)用產(chǎn)品及應(yīng)用系統(tǒng),如電子商務(wù)、電子政務(wù)、電子銀行業(yè)務(wù)、網(wǎng)絡(luò)和認(rèn)證系統(tǒng)等領(lǐng)域。 SecurCore系列微處理器包含SecurCore
12、SC100、SecurCore SC110、SecurCore SC200和SecurCour SC210四種類型,以適用于不同的應(yīng)用場合。,1.1.7 StrongARM (超強(qiáng)性能ARM技術(shù))系列微處理器,Intel StrongARM SA-1100處理器是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Intel公司的設(shè)計和處理技術(shù),以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu),同時采用具有Intel技術(shù)優(yōu)點(diǎn)的體系結(jié)構(gòu)。Intel StrongARM處理器是便捷式通信產(chǎn)品和消費(fèi)類電子產(chǎn)品的理想選擇,已成功應(yīng)用于多家公司的掌上電腦系列產(chǎn)品。,1.2 ARM
13、體系結(jié)構(gòu)的發(fā)展,1.2.1 ARM體系結(jié)構(gòu)的發(fā)展 在過去的十年中,ARM處理器經(jīng)歷了從簡單的ARM7TDMI內(nèi)核發(fā)展到最新ARM11EJ-S內(nèi)核,ARM當(dāng)前有5個產(chǎn)品系列ARM7、ARM9、ARM9E、ARM10、 SecurCore和ARM11。 從簡單的三級流水線到先進(jìn)的8級流水線結(jié)構(gòu)。用單個時鐘來進(jìn)行比較,性能差別不大。 ARM11是ARM家族中性能最強(qiáng)的一個系列。 ARM7TM 通常只能在200MHz以下的頻率運(yùn)行;ARM11系列處理器展示了在性能上的巨大提升,首先推出350M500MHz時鐘頻率的內(nèi)核,在未來將上升到1GHz時鐘頻率。 ARM11處理器在提供高性能的同時,也允許在性能
14、和功耗間做權(quán)衡以滿足某些特殊應(yīng)用。通過動態(tài)調(diào)整時鐘頻率和供應(yīng)電壓,開發(fā)者完全可以控制這兩者的平衡。在0.13um工藝,1.2v條件下,ARM11處理器的功耗可以低至0.4mW/MHz。,ARMv6結(jié)構(gòu)體系: ARM11處理器的超強(qiáng)性能是由一系列的架構(gòu)特點(diǎn)所決定的。ARMv6是決定性能的基礎(chǔ)。 總的來說,ARMv6架構(gòu)通過以下幾點(diǎn)來增強(qiáng)處理器的性能: 多媒體處理功能擴(kuò)展 MPEG4編碼/解碼加快一倍 音頻處理加快一倍 增強(qiáng)的Cache結(jié)構(gòu) 實地址Cache 減少Cache的刷新和重載 減少上下文切換的開銷 增強(qiáng)的異常和中斷處理 使實時任務(wù)的處理更加迅速 使數(shù)據(jù)共享、軟件移植更簡單,也有利于節(jié)省存
15、儲器空間,對絕大多數(shù)應(yīng)用來說,ARMv6保持了100%的二進(jìn)制向下兼容,使用戶過去開發(fā)的程序可以進(jìn)一步繼承下去。ARMv6保持了所有過去架構(gòu)中的T(Thumb指令)和E(DSP指令)擴(kuò)展,使代碼壓縮和DSP處理特點(diǎn)得到延續(xù);為了加速Java代碼執(zhí)行速度的ARM Jazalle技術(shù)也繼續(xù)在ARMv6架構(gòu)中發(fā)揮重要作用。,1.2.2ARM11處理器的內(nèi)核特點(diǎn),ARM11是為了更有效的提高處理器能力而設(shè)計的。該系列主要有ARM1136J、ARM1156T2和ARM1176JZ三個內(nèi)核型號 ,ARM11處理器使用130nm工藝,在2.2mm芯片面積上和0.24mW/MHz的前提下主頻高達(dá)500MHz。
16、ARM11處理器以消費(fèi)產(chǎn)品市場為目標(biāo),推出了許多新的技術(shù),包括針對多媒體處理的SIMD(Single instruction Multiple Data 單指令多數(shù)據(jù)流),用以提高安全性能的TrustZone(通過硬件和軟件結(jié)合,為片上數(shù)據(jù)提供安全環(huán)境)技術(shù),智能能源管理IEM(In-Ear Monitoring 耳內(nèi)監(jiān)聽),以及非常高的、超過2600倍 Dhrystone 2.1標(biāo)準(zhǔn)(測量處理器的運(yùn)算能力標(biāo)準(zhǔn)) MIPS(百萬條指令/每秒) 性能的多處理器技術(shù)。,上面對幾個ARM處理器內(nèi)核做了簡單的介紹。可以注意到,隨著處理器內(nèi)核技術(shù)的發(fā)展,處理器的速度越來越快,其主要得益于ARM流水線的技
17、術(shù)發(fā)展。 ARM1176JZF-S處理器專門用于包括數(shù)字電視、機(jī)頂盒、游戲機(jī)以及手機(jī)在內(nèi)的家電產(chǎn)品和無線產(chǎn)品。這一處理器采用ARM Java加速技術(shù)、ARM TrustZone技術(shù)以及一個矢量浮點(diǎn)(VFP)協(xié)處理器,為嵌入式3D圖像提供強(qiáng)大的加速功能。,1.2.3 DSP功能,DSP(digital singnal processor)是一種獨(dú)特的微處理器,是以數(shù)字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉(zhuǎn)換為0或1的數(shù)字信號,再對數(shù)字信號進(jìn)行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實時運(yùn)行速度可達(dá)每秒數(shù)以千萬條復(fù)雜指令
18、程序,遠(yuǎn)遠(yuǎn)超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片 目前有很多應(yīng)用要求多處理器的配置(多個ARM內(nèi)核,或ARM+DSP的組合),ARM11處理器從設(shè)計伊始就注重更容易地與其他處理器共享數(shù)據(jù),以及從非ARM的處理器上移植軟件。此外,ARM還開發(fā)了基于ARM11系列的多處理器系統(tǒng)MPCORE(由二個到四個ARM11內(nèi)核組成)。,1.3 ARM體系結(jié)構(gòu)的存儲器格式,首先來了解ARM體系結(jié)構(gòu)中的字長: 字(Word),在ARM體系結(jié)構(gòu)中,字的長度為32位,而在8位/16位處理器體系結(jié)構(gòu)中,字的長度一般為16位。 半字(Half Word),在ARM體系結(jié)構(gòu)中,半字的長度為16位,與8位/
19、16位處理器體系結(jié)構(gòu)中字的長度一致。 字節(jié)(Byte),在ARM體系結(jié)構(gòu)和8位/16位處理器體系結(jié)構(gòu)中,字節(jié)的長度均為8位。 指令長度可以是32位(ARM狀態(tài)下),也可以為16位(Thumb狀態(tài)下)。 ARM920T中支持字節(jié)(8位)、半字(16位)、字(32位)3種數(shù)據(jù)類型,其中,字需要4字節(jié)對齊,半字需要2字節(jié)對齊。 ARM920T體系結(jié)構(gòu)將存儲器看成是從零地址開始的字節(jié)的線性組合。從0字節(jié)到3字節(jié)放置第1個存儲的字?jǐn)?shù)據(jù),從第4個字節(jié)到第7個字節(jié)放置第2個存儲的字?jǐn)?shù)據(jù),依次排列。,作為32位的微處理器,ARM920T體系結(jié)構(gòu)所支持的最大尋址空間位4GB(2字節(jié))。 ARM920T體系結(jié)構(gòu)支
20、持兩種方法存儲字?jǐn)?shù)據(jù),即大端(Big Enddian )格式和小端(Little Enddian )格式。在大端格式中,字?jǐn)?shù)據(jù)的高字節(jié)存儲在低字節(jié)單元中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址單元中,如圖1.1所示。 在小端存儲格式中,低地址單元存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址單元中,存放的是數(shù)據(jù)的高字節(jié),如圖1.2所示。,在基于ARM920T內(nèi)核的嵌入式系統(tǒng)中,常用小端存儲格式來存儲字?jǐn)?shù)據(jù)。,第一章習(xí)題與練習(xí) 1,嵌入式控制系統(tǒng)按操作系統(tǒng)分,大致可分哪幾類,每類的設(shè)計方法有什么不同? 2,嵌入式控制不加嵌入式操作系統(tǒng)支持,遇到多線程或局域網(wǎng)問題如何解決? 3,ARM體系中的字,半字和字節(jié)各占多少位(b
21、it)? 4, 什么是大端存儲 (Big Enddian ) 格式和小端存儲 (Little Enddian ) 格式,ARM920T內(nèi)核的嵌入式系統(tǒng)中,常用哪種存儲格式來存儲字?jǐn)?shù)據(jù)? 5, 什么是Thumb指令集?它和32位ARM指令集的區(qū)別?,第二章ADS 1.2開發(fā)環(huán)境創(chuàng)建與簡介,2.1 ADS1.2開發(fā)環(huán)境創(chuàng)建 2.1.1 ADS1.2概述 ADS是個集成開發(fā)環(huán)境,主要包括編譯器、鏈接器、調(diào)試器、C和C+庫等,是ARM公司推出的新一代ARM集成開發(fā)工具。最新版本是ADS1.2,該版本支持包括Windows和Linux在內(nèi)的多種操作環(huán)境。ADS1.2的組成如下所述。 1. 編譯器 ADS
22、提供多種編譯器,以支持ARM和Thumb指令的編譯,主要有: armcc:是ARM C編譯器。 tcc:是Thumb C編譯器。 armcpp:是ARM C+編譯器。 tcpp:是Thumb C+編譯器。 armasm:是ARM和Thumb的匯編語言編譯器。,2. 鏈接器armlink是ARM鏈接器。該命令既可以將編譯得到的一個或多個目標(biāo)文件和相關(guān)的一個或多個庫文件進(jìn)行鏈接,生成一個可執(zhí)行文件,也可以將多個目標(biāo)文件部分鏈接成一個目標(biāo)文件,以供進(jìn)一步的鏈接。3 符號調(diào)試器armsd是ARM和Thumb的符號調(diào)試器,能進(jìn)行源碼級程序調(diào)試。用戶可以在用C或匯編語言寫的代碼中進(jìn)行單步調(diào)試、設(shè)置斷點(diǎn)、查
23、看變量值和內(nèi)存單元的內(nèi)容。,4 fromELF將ELF格式的文件轉(zhuǎn)換為各種格式的輸出文件,包括BIN格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog十六進(jìn)制文件。FromELF命令也能夠為輸入映像文件產(chǎn)生文本信息,例如代碼和數(shù)據(jù)長度。5 armararmar是ARM庫函數(shù)生成器,它將一系列ELF格式的目標(biāo)文件以庫函數(shù)的形式集合在一起。用戶可以把一個庫傳遞給一個鏈接器以代替幾個ELF文件。,6 CodeWarriorCodeWarrior集成開發(fā)環(huán)境(IDE)為管理和開發(fā)項目提供了簡單多樣化的圖形用戶界面,用戶可以使用ADS的CodeWarrior
24、IDE為ARM和Thumb處理開發(fā)用C、C+或者ARM匯編語言編寫的程序代碼。7 調(diào)試器ADS中含有3個調(diào)試器,即AXD、Armsd和ADW/ADU。在ARM體系中,可以選擇多種調(diào)試方式,如Multi-ICE(Multi-processor In-Circuit Emulator)、ARMulator或Angel。Multi-ICE是一個獨(dú)立的產(chǎn)品,是ARM公司自己的JTAG在線仿真器,不是由ADS提供的。,ARMulator是一個ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,提供對ARM處理器的指令集的仿真,為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下開發(fā)程序代碼,
25、利用模擬器方式調(diào)試。 Angel是ARM公司常駐在目標(biāo)機(jī)Flash中的監(jiān)控程序,只需通過RS-232C串口與PC主機(jī)相連,就可以對基于ARM架構(gòu)處理器的目標(biāo)機(jī)進(jìn)行監(jiān)控器方式的調(diào)試。C和C+庫,ADS提供ANSI C庫函數(shù)和C+庫函數(shù),支持被編譯的C和C+代碼。用戶可以把C庫中的與目標(biāo)相關(guān)的函數(shù)作為自己應(yīng)用程序中的一部分,重新進(jìn)行代碼的實現(xiàn)。這就為用戶帶來了極大的方便,針對自己的應(yīng)用程序的要求,對與目標(biāo)無關(guān)的庫函數(shù)進(jìn)行適當(dāng)?shù)牟眉?。在C庫中有很多函數(shù)是獨(dú)立于其他函數(shù)的,并且與目標(biāo)硬件沒有任何依賴關(guān)系。對于這類函數(shù),用戶可以很容易地在匯編代碼中使用。 有了這些部件,用戶就可以為ARM系列的RISC處
26、理器編寫和調(diào)試自己的開發(fā)應(yīng)用程序了。,2.1.2 ADS1.2的安裝,ADS全稱為ARM Developer Suite,是ARM公司推出的新的一代ARM集成開發(fā)工具?,F(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0,該版本支持包Windows和Linux在內(nèi)的多種操作系統(tǒng)。安裝步驟如下: 在ADS1.2的安裝盤中運(yùn)行setup.exe,安裝ARM Developer Suite v1.2。出現(xiàn)圖2-1對話框和圖2-2對話框,同意產(chǎn)權(quán)協(xié)義,選省缺安裝路徑(C:Program FilesARMvADS1.2)和典型安裝模式(Typiflcation),按Next進(jìn)入下一步,
27、出現(xiàn)選文件夾、編程語言和當(dāng)前設(shè)定對話框,均按Next,開始安裝,如圖2-3示。 安裝結(jié)束,安裝許可文件(Install License),這一步可按安裝向?qū)нM(jìn)行,單擊“下一步”按鈕,會出現(xiàn)如圖2-4和圖2-5所示的對話框。,在圖2-5對話框中選瀏覽(Browser)查許可文件,在Program FilesARMADSV1_2license中選license.dat文件并打開,單擊“下一步”按鈕,如圖2-6,即可完成ADS1.2的安裝。最后,程序還要注冊,注冊文件在Program FilesARMADSV1_2文件夾中,單擊注冊文件,即完成程序注冊,如圖2-7所示。,2.2 ADS集成開發(fā)環(huán)境的
28、使用,2.2.1建立一個新工程 運(yùn)行ADS1.2集成開發(fā)環(huán)境(CodeWarrior for ARM Developer Suite),點(diǎn)擊File|New,在New對話框中,共有7項,ARM Executable Image是ARM的通用模板。選中它即可生成ARM的執(zhí)行文件,如圖2-8所示。,還要在Project name欄中輸入項目的名稱,以及在Location中輸入其存放的位置,按確定保存項目。,2.2.2 開發(fā)環(huán)境設(shè)置 在新建的工程中,選擇Debug版本,如圖2-9,使用Edit|Debug Settings菜單對Debug版本進(jìn)行參數(shù)設(shè)置。,在如圖2-10中,點(diǎn)擊Debug Sett
29、ing 按鈕,彈出2-11圖,選中Target Setting,項,在Post-linker欄中選中ARM fromELF項。按OK確定。這是為生成可執(zhí)行的代碼的初始開關(guān)。3. 在如圖2-12中,點(diǎn)擊ARM Assembler ,在Architecture or Processer,欄中選ARM920T。這是項目選擇的CPU類型。4. 在如圖2-13中,點(diǎn)擊ARM C Compliler ,在Architecture or Processer欄中選ARM920T。這是要編譯的CPU核。,5. 在如圖2-14中,點(diǎn)擊ARM linker ,在outpur欄中設(shè)定程序的代碼段地址,以及數(shù)據(jù)使用的地
30、址。圖中的RO Base欄中填寫程序代碼存放的起始地址,RW Base欄中填寫程序數(shù)據(jù)存放的起始地址。該地址是屬于SDRAM的地址。,在options欄中,如圖2-15,Image entry point要填寫程序代碼的入口地址,其他保持不變,如果是在SDRAM中運(yùn)行,則可在0 x300000000 x33ffffff中選值,這是64M SDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數(shù)據(jù)空間,而且還必須是4字節(jié)對齊的地址(ARM狀態(tài))。通常入口點(diǎn)Image entry point 為0 x30000000,ro_base也為0 x3000
31、0000。 在Layout欄中,如圖2-16,在Place at beginning of image框內(nèi),需要填寫項目的入口程序的目標(biāo)文件名,如,整個工程項目的入口程序是2410init.s,那么應(yīng)在Object/Symbol處填寫其目標(biāo)文件名2410init.o,在Section處填寫程序入口的起始段標(biāo)號。它的作用是通知編譯器,整個項目的開始運(yùn)行,是從該段開始的。,6. 在如圖2-17中,即在Debug Setting對話框中點(diǎn)擊左欄的ARM fromELF項,在Output file name欄中設(shè)置輸出文件名*.bin,前綴名可以自己取,在Output format 欄中選擇Plain
32、 binary,這是設(shè)置要下載到flash中的二進(jìn)制文件。圖2-17中使用的是test.bin。,7. 到此,在ADS1.2中的基本設(shè)置已經(jīng)完成,可以將該新建的空的項目文件作為模板保存起來。首先,要將該項目工程文件改一個合適的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2軟件安裝的目錄下新建一個合適的模板目錄名,如,S3C2410 ARM Executable Image,再將剛剛設(shè)置完的S3c2410 ARM.mcp項目文件存放到該目錄下即可。 8. 新建項目工程后,就可以執(zhí)行菜單Project|Add Files把和工程所有相關(guān)的文件加入,ADS1.2不能自動進(jìn)行文件分類,
33、用戶必須通過Project|Create Group來創(chuàng)建文件夾,然后把加入的文件選中,移入文件夾?;蛘呤髽?biāo)放在文件填加區(qū),右鍵點(diǎn)擊,如圖2-18所示。,先選Add Files,加入文件,再選Create Group,創(chuàng)建文件夾,然后把文件移入文件夾內(nèi)。讀者可根據(jù)自己習(xí)慣,更改Edit|Preference窗口內(nèi)關(guān)于文本編輯的顏色、字體大小,形狀,變量、函數(shù)的顏色等等設(shè)置。如圖2-19。,2.2.3 ADS1.2下仿真、調(diào)試,在ADS1.2下進(jìn)行仿真調(diào)試,首先需要一根仿真調(diào)試電纜和JTAG仿真器,用調(diào)試電纜把 JTAG仿真器和上位機(jī)并口相連, JTAG仿真器的驅(qū)動程序為兩個動態(tài)鏈接庫,也要事先
34、安裝。 打開調(diào)試軟件AXD Debugger。點(diǎn)擊File|load image 加載可執(zhí)行文件xx.axf,打開超級終端,設(shè)置其參數(shù)為:波特率為115200,數(shù)據(jù)位數(shù)8,奇偶校驗無,停止位無1,數(shù)據(jù)流控?zé)o。點(diǎn)擊全速運(yùn)行,在我們的例子程序中,出現(xiàn)圖2-20的界面:,最后介紹調(diào)試按鈕,調(diào)試按鈕在程序進(jìn)入AXD Debugge狀態(tài)時會出現(xiàn)在主菜單項,主要幾個調(diào)試按鈕如圖2-21所示。,圖2-21,左起第一個是全速運(yùn)行,第二個是停止運(yùn)行,第三個跳入函數(shù)內(nèi)部單步執(zhí)行,第四個把一個函數(shù)做為一個語句單步執(zhí)行,第五個跳出函數(shù)。 關(guān)于在ADS1.2下進(jìn)行仿真調(diào)試,下面還要祥細(xì)介紹。,2.2.4 其他開發(fā)環(huán)境介
35、紹,IAR(瑞典愛亞軟件技術(shù)咨詢公司) Embedded Workbench for ARM 是IAR Systems 公司為ARM 微處理器開發(fā)的一個集成開發(fā)環(huán)境,下面簡稱IAR EWARM。比較其他的ARM 開發(fā)環(huán)境,IAR EWARM 具有入門容易、使用方便和代碼緊湊等特點(diǎn)。故在這里做簡單介紹。 IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.42,并提供一個32k 代碼限制學(xué)習(xí)版或30 天時間限制的免費(fèi)評估版,可以到IAR 公司的網(wǎng)站 下載。 IAR EWARM 中包含一個全軟件的模擬程序(simulat
36、or)。用戶不需要任何硬件支持就可以模擬各種ARM內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。從中可以了解和評估IAR EWARM 的功能和使用方法。,IAR EWARM 中包含一個全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。從中可以了解和評估IAR EWARM 的功能和使用方法。IAR Embedded Workbench for ARM version 4.42 是一個針對ARM 處理器的集成開發(fā)環(huán)境,包含項目管理器、編輯器、編譯連接工具和支持RTOS(嵌入式實時控制系統(tǒng))的調(diào)試工具,在該環(huán)境下可以使用C/C+和匯編語言
37、方便地開發(fā)嵌入式應(yīng)用程序。IAR EWARM 的主要模塊如下:項目管理器功能強(qiáng)大的編輯器高度優(yōu)化的IAR ARM C/C+ Compiler IAR ARM Assembler1 個通用的IAR XLINK LinkerIAR XAR 和XLIB 建庫程序和IAR DLIB C/C+運(yùn)行庫 IAR C-SPY 調(diào)試器(先進(jìn)的高級語言調(diào)試器)命令行實用程序,以下介紹一下EWARM 4.42 版本及其相關(guān)配套硬件的一些特點(diǎn):1 IAR EWAM 軟件的特點(diǎn) EWARM 4.42 版基本特點(diǎn) 完善的ARM 內(nèi)核支持最新支持到ARM11 及Cortex M3 內(nèi)核支持的其他ARM 內(nèi)核ARM7(ARM
38、7TDMI,ARM7TDMI-S,ARM720T)ARM9(ARM9TDMI,ARM920T,ARM922T,ARM940T,ARM9E,ARM9E-S,ARM926EJ-S,ARM946E-S,ARM966E-S,ARM968E-S)ARM10(ARM10E,ARM1020E,ARM1022E,ARM1026EJ-S)XScale(XScale,XScale-IR7),更加客戶化地提供芯片級的支持完備的各廠商ARM 處理器的C/C+和匯編語言外設(shè)寄存器定義文件支持的芯片廠商有Analog Devices、ARM、Atmel、Cirrus Logic、Freescale、Intel、NetSi
39、licon、OKI、Philips、Samsung、Sharp、ST 和TI 等支持Analog Devices、Atmel、Freescale、OKI、Philips、ST 和TI 等廠商的ARM 處理器的Flash Loader 程序 軟件集成了400 余個代碼例程,對應(yīng)于各種不同的芯片,位于.armsrcexamples 目錄下進(jìn)一步改進(jìn)了編譯器速度優(yōu)化,重寫了的浮點(diǎn)運(yùn)算庫對更多嵌入式操作系統(tǒng)的支持新增支持OSEK 類操作系統(tǒng)的OSEK Run-Time Interface (ORTI),新增支持OSE Epsilon RTOS 的Kernel Awareness 調(diào)試新增支持embOS
40、、SMX、NORTi 等的支持調(diào)試器的增強(qiáng)功能對堆棧運(yùn)行的監(jiān)測功能配合IAR J-Link 仿真器的新增功能J-Link TCP/IP 服務(wù)器調(diào)試器和IAR J-Link 仿真器協(xié)同配合,實現(xiàn)對ARM 處理器的多核調(diào)試對IAR J-Trace 仿真器提供全面的支持在C-SPY 模擬器中可執(zhí)行Trace 的模擬支持同一芯片上多顆Flash 的Flash Loader 程序,以及通用的Flash Loader 開發(fā)指南, EWARM 軟件在芯片級支持方面的特色完備的各廠商ARM 處理器的C/C+和匯編語言外設(shè)寄存器定義文件大量適合于嵌入式代碼的編程語言擴(kuò)展特性,包括存儲器關(guān)鍵字,函數(shù),中斷函數(shù),存
41、儲器映射I/O 等針對評估板的例程,包含IAR、Analog Devices、Aiji System、ARM、Atmel、Cirrus Logic、Freescale、Keil、OKI、Olimex、Pasat、Philips、Phytec、ST 和TI 等廠家的開發(fā)支持ARM 或Thumb 模式下大至4G 字節(jié)的應(yīng)用程序每個函數(shù)都能選擇在ARM 或Thumb 模式下編譯可生成VFP 向量浮點(diǎn)協(xié)處理器代碼支持Analog Devices、Atmel、Freescale、OKI、Philips、ST 和TI 等廠商的ARM 處器的Flash Loader 程序 支持ARM Angel Debug
42、 monitor, EWARM 編譯器的軟件特色 先進(jìn)的通用編譯器優(yōu)化和針對特定處理器的速度優(yōu)化及存儲器優(yōu)化功能 輕量運(yùn)行庫,用戶可以根據(jù)需要自行配置,提供全部源代碼 靈活的存儲器控制,允許詳細(xì)地為代碼和數(shù)據(jù)分配地址 去除不需要的函數(shù)和變量 C/C+變量和函數(shù)連接時全局類型檢查 可選的校驗和生成功能,用于運(yùn)行時映象校驗 自動將代碼和數(shù)據(jù)放置到非連續(xù)的存儲器區(qū)域 強(qiáng)大的可重定位宏匯編器,支持豐富的命令集和操作符, EWARM 調(diào)試器的軟件特色 . 完全集成的源代碼和反匯編程序調(diào)試器 . 非常細(xì)化的執(zhí)行控制(函數(shù)調(diào)用級步進(jìn)) . 復(fù)雜的代碼和數(shù)據(jù)斷點(diǎn) . 豐富的數(shù)據(jù)監(jiān)視功能 . Locals,Wa
43、tch,Auto,Live Watch 和Quick Watch 等變量查看窗口 . 寄存器和存儲器查看窗口 . 支持STL 容器,. C/C+調(diào)用棧窗口,同時還可以顯示將要進(jìn)入的函數(shù) . 雙擊調(diào)用鏈上的任何函數(shù)將更新編輯器、局部變量、寄存器、變量查看和反匯編窗口,以顯示在該函數(shù)調(diào)用時的狀態(tài) . 跟蹤功能,可以檢查執(zhí)行的歷史記錄。在跟蹤窗口中移動時將更新編輯器和反匯編窗口以顯示合適的位置。 . 控制臺I/O 仿真 . 中斷和I/O 模擬仿真 . 類似C 語言的宏系統(tǒng),可擴(kuò)充調(diào)試器的功能 . 由主機(jī)執(zhí)行的應(yīng)用程序系統(tǒng)調(diào)用仿真 . 代碼覆蓋率和執(zhí)行時間分析工具 . 通用的Flash Loader
44、程序及開發(fā)指南 . 同時支持多顆Flash 的Flash Loader 程序 . 支持OSEK Run-Time Interface (ORTI) . 提供為調(diào)試器擴(kuò)充第三方功能的軟件開發(fā)包,如RTOS 調(diào)試擴(kuò)充和仿真器驅(qū)動擴(kuò)充 . 命令行調(diào)試工具, IAR C-SPY 支持的調(diào)試方法 . IAR J-Link JTAG 接口(支持所有ARM7 和ARM9 核,通過USB 或TCP/IP 連接) . RDI 接口類的第三方仿真器(Abatron BDI1000 /- / 主程序 /- void Main(void) int i; MMU_Init(); /內(nèi)存管理初始化 ChangeClock
45、Divider(1,1);/ 定義FCLK、HCLK,PCLK比例 /1:2:4 ChangeMPllValue(0 xa1,0 x3,0 x1); / FCLK=202.8MHz Port_Init(); /I/O口初始化,Uart_Printf(%2d:%s,i,functioni1); i+; if(int)(functioni0)=0) /顯示結(jié)束跳出 Uart_Printf(n); break; if(i%4)=0) Uart_Printf(n); /每行顯示4項 Uart_Printf(nSelect the function to test : );/提示:選擇某項實驗 i =
46、Uart_GetIntNum(); /讀實驗項目號放i中 Uart_Printf(n); /GPG4 Output Port 9:8 01 G口初始化,開LCD顯示 rGPGCON = (rGPGCON ,if(i=0 /如果i在實驗范圍內(nèi),做第i項實驗 2410test.c程序提供了S3C2410所有硬件資源的驅(qū)動例子,根據(jù)我們系統(tǒng)的需要,再參考具體函數(shù),對我們編程會有很大幫助。,第三章習(xí)題與練習(xí) 1,從人民郵電出版社網(wǎng)站下載隨書提供軟件包,打開2410addr.h頭文件,仔細(xì)閱讀程序,熟悉程序。 2,從人民郵電出版社網(wǎng)站下載隨書提供軟件包,打開2410TEST文件,熟悉程序UART0.C和
47、UART0.H,練習(xí)串口編程和I/O口操作,熟悉中斷程序編制。 3, 從人民郵電出版社網(wǎng)站下載隨書提供軟件包,打開2410TEST文件,熟悉練習(xí)串口編程和I/O口操作。 4,void * function2定義的是一個什么類型的二維數(shù)組,數(shù)組中每個元素代表什么變量? 5,2410addr.h將系統(tǒng)所有的資源進(jìn)行了宏定義,宏的名字有什么特點(diǎn)?,6,S3C2410電源管理模塊通過幾種模式有效地控制功耗? 7,S3C2410處理器體系結(jié)構(gòu)中有幾個存儲器模塊,每個Bank的大小是多少?總的Bank大小是多少?,第四章 S3C2410的中斷系統(tǒng),4.1 S3C2410的處理器中斷 S3C2410的中斷控
48、制邏輯如圖4-1所示,S3C2410可以處理多達(dá)56個中斷源的中斷請求。這些中斷源可以是來自片內(nèi)外設(shè)的的中斷,比如DMA、UART和I2C等;也可以來自處理器的外部中斷輸入引腳。在這些中斷源中,有如下11個中斷源通過分支中斷控制器來申請使用中斷。 INT_ADC A/D轉(zhuǎn)換中斷; INT_TC 觸摸屏中斷; INT_ERR2 UART2收發(fā)錯誤中斷; INT_TXD2 UART2發(fā)送中斷; INT_RXD2 UART2接收中斷; INT_ERR1 UART1收發(fā)錯誤中斷; INT_TXD1 UART1發(fā)送中斷;,INT_RXD1 UART1接收中斷; INT_ERR0 UART0收發(fā)錯誤中斷;
49、 INT_TXD0 UART0發(fā)送中斷; INT_RXD0 UART0接收中斷。 片內(nèi)外設(shè)UARTn中斷和外部中斷輸入EINTn是邏輯“或”的關(guān)系,它們共用一根中斷請求線。 中斷控制邏輯(interrupt controller logic)的任務(wù)是在片內(nèi)外圍和外部中斷源組成的多重中斷發(fā)生時,選擇其中一個中斷,通過FIQ (快速中斷請求)或IRQ(通用中斷請求)向CPU內(nèi)核發(fā)出中斷請求。,圖4-1 S3C2410 的中斷邏輯,實際上最初CPU內(nèi)核只有FIQ和IRQ兩種中斷,其他中斷都是各個芯片廠家在設(shè)計芯片時,通過加入一個中斷控制器來擴(kuò)展定義的。這些中斷根據(jù)中斷優(yōu)先級的高低來進(jìn)行處理,更符合實
50、際應(yīng)用系統(tǒng)中要求提供多個中斷源的要求。例如,如果定義所有的中斷源為IRQ中斷(通過中斷模式寄存器設(shè)置),并且同時有10個中斷發(fā)出請求,那么這時可以通過讀中斷優(yōu)先級寄存器來確定哪一個中斷被優(yōu)先執(zhí)行。 當(dāng)多重中斷源請求中斷時,硬件優(yōu)先級邏輯會判斷哪一個中斷將被執(zhí)行;同時,硬件邏輯將會執(zhí)行位于0 x18(或0 x1C)地址處的指令,再由軟件編程識別各個中斷源,然后再根據(jù)中斷源跳轉(zhuǎn)到相應(yīng)的中斷處理程序。,4.2中斷控制 4.2.1 程序狀態(tài)寄存器的F位和I位 如果CPSR(程序狀態(tài)寄存器)的F位被設(shè)置為1,那么CPU將不接受來自中斷控制器的FIQ(快速中斷請求);如果CPSR程序狀態(tài)寄存器的I位被設(shè)置
51、為1,那么CPU將不接受來自中斷控制器的IRQ(通用中斷請求)。因此,為了使能FIQ和IRQ,必須先將CPSR程序狀態(tài)寄存器的F位和I位清零,并且中斷屏蔽寄存器INTMSK中相應(yīng)的位也要清零。 在使用C語言編寫控制程序時,CPSR在程序中是不可見的。F位和I位清零可由中斷屏蔽寄存器INTMSK中相應(yīng)的位清零自動完成。,4.2.2 中斷模式(INTMOD) S3C2410提供了兩種中斷模式,即FIQ(快速)模式和IRQ(通用)模式。所有的中斷源在中斷請求時都要確定使用那一種中斷模式。INTMOD相應(yīng)位為0,選通用中斷模式;INTMOD相應(yīng)位為1,選快速中斷模式。上電或復(fù)位時INTMOD相應(yīng)位為0
52、,默認(rèn)選通用中斷模式。,4.2.3 中斷掛起寄存器(INTPND)和中斷源掛起寄存器 (SRCPND) S3C2410有兩個中斷掛起寄存器:中斷源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND)。這兩個寄存器用于指示對應(yīng)的中斷源和中斷是否被激活。當(dāng)中斷源請求中斷時,SRCPND寄存器的相應(yīng)位被置1;當(dāng)中斷被激活時,INTPND寄存器的相應(yīng)位被置1。 如果屏蔽位被設(shè)置為1,則相應(yīng)的SRCPND位會被置1,而INTPND寄存器不會有變化;如果INTPND被置位,只要標(biāo)志I或標(biāo)志F被清零,就會執(zhí)行相應(yīng)的中斷服務(wù)子程序。在中斷服務(wù)子程序中要先向SRCPND中的相應(yīng)位寫1來清除掛起狀態(tài),再用同
53、樣的方法來清除INTPND相應(yīng)位的掛起狀態(tài)。 注意:可以通過INTPND= INTPND來實現(xiàn)清零,以避免寫入不正確的數(shù)據(jù)引起錯誤。 4.2.4 中斷屏蔽寄存器(INTMSK) 當(dāng)INTMSK寄存器的相應(yīng)位(屏蔽位)為1時,對應(yīng)的中斷被禁止;當(dāng)INTMSK寄存器的屏蔽位為0時,則相應(yīng)的中斷正常實行。如果一個中斷的屏蔽位為1,則該中斷請求不被受理。,4.2.5 中斷優(yōu)先寄存器 (PRIORITY) 上面已介紹過,S3C2410共有56個中斷源,有26個中斷控制器,外部中斷EXTIN823共用一個中斷控制器,外部中斷EXTIN47共用一個中斷控制器,9個UART中斷分成3組,共用3個中斷控制器,A
54、DC和觸摸屏共用一個中斷控制器。中斷的優(yōu)先級是由主組號和從ID號的級別控制,具體見表4-1。 中斷優(yōu)先級設(shè)置模塊如圖4-2所示:,圖4-2中斷優(yōu)先級設(shè)置圖,從上圖可以看出,中斷優(yōu)先級產(chǎn)生模塊共有7個中斷仲裁器(AIRBITER0AIRBITER6),每個中斷仲裁器是否使能由寄存器PRIORITY6:0決定,每個中斷仲裁器下面有46個中斷源,這些中斷源對應(yīng)著REQ0REQ5這6個優(yōu)先級。 每個中斷仲裁器可以控制6個中斷請求的優(yōu)先順序(ARB_MODE),仲裁器和中斷請求的優(yōu)先順序如表4-1示:,其中,REQ 0中斷優(yōu)先級總是最高的,REQ5中斷優(yōu)先級總是最低的。,4.3 S3C2410中斷源 表
55、4-2所示為S3C2410的56個中斷源。在56個中斷源中,有30個中斷源提供給中斷控制器,其中,外部中斷EINT4EINT7通過“或”的形式提供一個中斷源送至中斷控制器,EINT8EINT23也通過“或”的形式提供一個中斷源送至中斷控制器。 56個中斷源具體來說: EINT0EINT23(24個)、nBATT_FLT(1個)、INT_TICK(1個)、INT_WDT(1個)、INT_TIMER0INT_TIMER4(5個)、INT_UART0INT_UART2(各3個,共9個)、INT_LCD(2個)、INT_DMA0INT_DMA3(4個)、INT_SDI(1個)、INT_SPI0INT_
56、SPI1(2個)、INT_USBD(1個)、INT_USBH(1個)、INT_IIC(1個)、INT_RTC(1個)、INT_ADC(2個),共56個。,4.4 中斷控制專用寄存器 在4.2節(jié)中已介紹中斷控制器有5個,但S3C2410有8個寄存器與中斷有關(guān),有5個專用于中斷控制:源掛起寄存器(SRCPND)、中斷模式寄存器(INTMOD)、中斷屏蔽寄存器(INTMSK)、中斷優(yōu)先權(quán)寄存器(PRIORITY)和中斷掛起寄存器(INTPND),與中斷有關(guān)的寄存器如表4-3所列。 中斷源發(fā)出的中斷請求首先被寄存在中斷源掛起寄存器(SRCPND)中,中斷模式寄存器INTMOD把中斷請求分為兩組:快速中
57、斷請求(FIQ)和通用中斷請求(IRQ),中斷優(yōu)先權(quán)寄存器(PRIORITY)處理中斷的優(yōu)先級。,4.4.1 IRQ偏移寄存器(INTOFFSET) 除上面介紹的5個中斷控制寄存器以外,還有幾個寄存器與中斷控制有關(guān)。 中斷偏移寄存器INTOFFSET給出IRQ模式的中斷請求中被響應(yīng)的中斷的地址(哪個IRQ模式的中斷請求被響應(yīng))。,4.4.2 外部中斷控制寄存器(EXTINTn) S3C2410的24個外部中斷有幾種中斷觸發(fā)方式,EXTINTn配置外部中斷的觸發(fā)類型是電平觸發(fā)還是邊沿觸發(fā)以及觸發(fā)的極性。EXTINT2 :0的具體配置參考數(shù)據(jù)手冊。 4.4.3 外部中斷屏蔽寄存器(EINTMASK
58、) EINTMASK23:4分別對應(yīng)外部中斷234,該位等于1,對應(yīng)外部中斷被屏蔽;該位等于0,對應(yīng)外部中斷被使能,EINTMASK3 :0保留。,4.5 中斷控制程序編寫步驟 4.5.1 主程序工作 先清除中斷源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND),可用rSRCPND= rSRCPND和rINTPND=r INTPND來完成; 設(shè)中斷模式,這里使用通用中斷,rINTMOD=0 x00000000;因上電或復(fù)位時rINTMOD是清0的,這步也可以不做。 I/O口初始化,有些中斷源要通過I/O口向CPU申請中斷,如外部中斷0(EXTINT0)通過F口的GPF0、外部中斷11(EXTINT11)通過G口的GPG3向CPU申請中斷,此時兩個口的控制寄存器GPFCON和GPGCON的要設(shè)置成:GPFCON1:0=1,0;GPGCON7:6=1,0。具體見下章I/O口介紹。 設(shè)中斷服務(wù)函數(shù)地址,S3C2410在2410addr.h中定義了40個宏,設(shè)置了系統(tǒng)支持的中斷服務(wù)函數(shù)的指針,設(shè)中斷服務(wù)函數(shù)地址就是把我們編寫的中斷服務(wù)函數(shù)的地址(就是中斷服務(wù)函數(shù)的名字)賦予相應(yīng)的函數(shù)指針。函數(shù)指針定義如下:,/ ISR
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省商洛市2024-2025學(xué)年九上化學(xué)期末聯(lián)考模擬試題含解析
- 山西省朔州懷仁縣聯(lián)考2024年物理八上期末經(jīng)典試題含解析
- 低碳金融與氣候風(fēng)險保險產(chǎn)品設(shè)計趨勢預(yù)測
- 2025年考研政治理論時政熱點(diǎn)知識試題庫(含答案)
- 精準(zhǔn)設(shè)備管理的新動力:AR設(shè)備點(diǎn)檢系統(tǒng)的應(yīng)用實踐與未來展望
- 醫(yī)療廢物處理技術(shù)革新:智能系統(tǒng)的成功案例分析
- 市政管網(wǎng)建設(shè)環(huán)境保護(hù)管理體系與措施
- 2025至2030中國自我美黑產(chǎn)品行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國自動物料搬運(yùn)行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 教育機(jī)器人教具行業(yè)現(xiàn)狀與發(fā)展策略
- 麻醉與人文關(guān)懷(wxh)幻燈片
- 危巖治理工程分項工程安全保證措施
- YY/T 0065-2016眼科儀器裂隙燈顯微鏡
- 裝飾裝修工程-工程施工設(shè)計方案
- 記憶原理及方法課件
- 頸脊髓損傷 -課件
- 老年俱樂部建設(shè)項目可行性研究報告
- 國外不規(guī)則氣象報文課件
- 杭州網(wǎng)約車從業(yè)資格考試題庫與答案
- 格力好易控集中控制器使用說明
- 巨光Y型空氣消毒器
評論
0/150
提交評論