LPC2000系列微處理器組成與中斷技術(shù).ppt
《LPC2000系列微處理器組成與中斷技術(shù).ppt》由會員分享,可在線閱讀,更多相關(guān)《LPC2000系列微處理器組成與中斷技術(shù).ppt(132頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1,5.1LPC2000系列簡介5.2芯片內(nèi)部結(jié)構(gòu)5.3存儲器結(jié)構(gòu)5.4系統(tǒng)控制模塊5.5中斷技術(shù)5.6向量中斷控制器,LPC2000系列微處理器組成與中斷技術(shù),2,5.1LPC2000系列芯片簡介,嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola68K等,其中ARM占據(jù)了絕對主流?;贏RM平臺的嵌入式系統(tǒng)設(shè)計在工業(yè)控制、無線通訊、網(wǎng)絡(luò)應(yīng)用、消費類電子產(chǎn)品、成像和安全產(chǎn)品等領(lǐng)域內(nèi)均有廣泛地應(yīng)用。ARM處理器根據(jù)其應(yīng)用及其特點,分為控制類芯片、特殊應(yīng)用類芯片、數(shù)字信號處理器、消費類電子的嵌入式芯片以及安全芯片??刂祁愋酒笙鄬^低,具有中斷控制器、片內(nèi)存儲器;應(yīng)用處理器具有MMU、支持SDRAM、附帶LCD控制器或接口并具有DMA;消費類電子的嵌入式芯片一般具有較強的專業(yè)性;數(shù)字信號處理器通過使用協(xié)處理器和DSP等方式提高運算能力;安全芯片使用專門的SecurCore內(nèi)核。,3,5.1LPC2000系列芯片簡介,ARM系列種類繁多,本章我們主要討論一般控制類的芯片,以NXP公司LPC2000系列處理器為例進行介紹。LPC2000系列微控制器基于ARM7TDMI-SCPU內(nèi)核。支持ARM和Thumb指令集,芯片內(nèi)集成豐富外設(shè),而且具有非常低的功率消耗。使該系列微控制器特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和POS機等場合。,簡介,LPC2100系列LPC2200系列LPC2300系列LPC2400系列LPC2800系列,,4,5.1.1LPC2100系列芯片,LPC2100系列MCU基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI-SCPU,并帶有128/256KB嵌入的高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32位代碼能夠在最大時鐘速率下運行。如果在實際應(yīng)用中對代碼規(guī)模有嚴格控制,使用16位Thumb模式可將代碼規(guī)模降低超過30%,而性能的損失卻很小。,5,LPC2100系列MCU主要特點:,16/32位ARM7TDMI-S核,超小LQFP和HVQFN封裝;16/32/64kB片內(nèi)SRAM;128/256kB片內(nèi)Flash程序存儲器;128位寬度接口/加速器可實現(xiàn)高達60MHz工作頻率;通過片內(nèi)boot裝載程序?qū)崿F(xiàn)在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP);EmbeddedICE可實現(xiàn)斷點和觀察點;嵌入式跟蹤宏單元(ETM)支持對執(zhí)行代碼進行無干擾的高速實時跟蹤;10位A/D轉(zhuǎn)換器,轉(zhuǎn)換時間低至2.44μs;CAN接口,帶有先進的驗收濾波器;包括2個16C550工業(yè)標(biāo)準(zhǔn)UART、高速I2C接口(400kHz)和2個SPI接口。,6,表5.1LPC2100系列MCU參數(shù)規(guī)格,7,5.1.2LPC2200系列芯片特點:,處理器和封裝:16/32位ARM7TDMI-S微控制器,LQFP144和TFBGA144封裝;RAM:16/64kB片內(nèi)靜態(tài)RAM(LPC2210/LPC2220);串行boot裝載程序通過UART0來實現(xiàn)在系統(tǒng)下載和編程;調(diào)試:EmbeddedICE-RT和嵌入式跟蹤接口使用片內(nèi)RealMonitor軟件對任務(wù)進行實時調(diào)試;支持對執(zhí)行代碼進行無干擾的高速實時跟蹤;8路10位A/D轉(zhuǎn)換器,轉(zhuǎn)換時間低至2.44μs;定時器:2個32位定時器(LPC2220也具有外部事件計數(shù)器)帶4路捕獲和4路比較通道;PWM單元(6路輸出)、實時時鐘(RTC)和看門狗;串口:包括2個16C550工業(yè)標(biāo)準(zhǔn)UART、高速I2C總線(400kbit/s)和2個SPI接口;在LPC2220上,可選擇帶有數(shù)據(jù)緩沖區(qū)和可變長度傳輸?shù)耐酱锌?SSP)來代替一個SPI;,8,LPC2200系列MCU芯片資源及特點(續(xù)),向量中斷控制器(VIC),可配置優(yōu)先級和向量地址;外存:通過外部存儲器接口可將存儲器配置成4組,每組的容量高達16Mb,數(shù)據(jù)寬度為8/16/32位;多達76個通用I/O口(可承受5V電壓)。可使用9個邊沿或電平觸發(fā)的外部中斷管腳;通過可編程的片內(nèi)鎖相環(huán)(PLL)可實現(xiàn)最大為60/75MHz(LPC2210/2220)的CPU操作頻率;頻率:帶外部晶體的片內(nèi)振蕩器頻率范圍:1~30MHz,外部振蕩器的頻率高達50MHz;2個低功耗模式:空閑和掉電;喚醒:通過外部中斷將處理器從掉電模式中喚醒;優(yōu)化功耗:通過個別使能/禁止外部功能來優(yōu)化功耗;雙電源,CPU操作電壓范圍:1.65V1.95V(1.8V0.15V);I/O操作電壓范圍:3.03.6V(3.3V10%),I/O口可承受5V電壓。,9,表5.2LPC2200系列MCU參數(shù)規(guī)格表,10,5.1LPC2100/2200系列簡介,器件信息,關(guān)于LPC2000其它器件的介紹請登錄“LPC2000系列ARM”專欄,11,5.1LPC2000系列簡介5.2芯片內(nèi)部結(jié)構(gòu)5.3存儲器結(jié)構(gòu)5.4系統(tǒng)控制模塊5.5中斷技術(shù)5.6向量中斷控制器,LPC2000系列微處理器組成與中斷技術(shù),12,5.2芯片內(nèi)部結(jié)構(gòu),LPC2000系列微控制器包含4大部分:,13,5.2芯片內(nèi)部結(jié)構(gòu),,,,,,LPC2200系列芯片內(nèi)部結(jié)構(gòu)如圖5.1所示,芯片內(nèi)部有三種總線,分別是局部總線、AHB和VPB,14,5.1LPC2000系列簡介5.2芯片內(nèi)部結(jié)構(gòu)5.3存儲器結(jié)構(gòu)5.4系統(tǒng)控制模塊5.5中斷技術(shù)5.6向量中斷控制器,LPC2000系列微處理器組成與中斷技術(shù),15,嵌入式系統(tǒng)中存儲器部分按其位置分為片內(nèi)和片外存儲器,其存儲器主要分為RAM、ROM和FlashMemory。Flashmemory(閃速存儲器)是嵌入式系統(tǒng)中重要的組成部分,用來存儲程序和數(shù)據(jù)。FlashMemory是一種非易失性存儲器NVM(Non-VolatileMemory),掉電后數(shù)據(jù)不會丟失,但在使用FlashMemory時,必須根據(jù)其自身特性,對存儲系統(tǒng)進行特殊設(shè)計,以保證系統(tǒng)的性能達到最優(yōu)。,5.3存儲器結(jié)構(gòu),16,5.3存儲器尋址,5.3.1存儲器映射5.3.2片內(nèi)存儲器5.3.3片外存儲器5.3.4存儲器重映射及引導(dǎo)塊5.3.5啟動代碼相關(guān)部分,17,LPC2000系列微處理器的片內(nèi)儲存器大小,1MB,,512KB,,64KB,32KB,256KB,128KB,64KB,,,32KB,16KB,,,LPC2104LPC2114LPC2119LPC2134LPC2144LPC2212,,,,8KB,,,LPC2210LPC2290,LPC2220LPC2880,片內(nèi)SRAM,,0KB,4KB,2KB,16KB,8KB,LPC2124LPC2194LPC2129LPC2214LPC2292LPC2294,LPC2136LPC2146,,LPC2103LPC2131LPC2141,,,LPC2101,,,LPC2102,LPC2105,LPC2106,LPC2132LPC2142,LPC2138LPC2148,,LPC2888,片內(nèi)Flash,LPC2101,LPC2102,LPC2103LPC2131LPC2141,LPC2210LPC2290,LPC2132LPC2142,LPC2104LPC2114LPC2119LPC2134LPC2144LPC2212,LPC2124LPC2194LPC2129LPC2214LPC2292LPC2294,LPC2105,LPC2136LPC2146,LPC2220LPC2880,LPC2138LPC2148,LPC2106,LPC2888,18,概述,5.3.1存儲器映射,ARM芯片存儲器分布可以在片內(nèi)和片外,這些存儲器本身不具有地址信息,它們在芯片中的地址是由芯片廠家或用戶分配的。給物理存儲器分配邏輯地址的過程稱為存儲器映射。通過這些邏輯地址就可以訪問到相應(yīng)存儲器的物理存儲單元。,19,LPC2210存儲器地址分布,圖5.2LPC2210存儲器地址分布,ARM芯片存儲器分布可以在片內(nèi)和片外,地址從低到高分布有片內(nèi)FLASH、片內(nèi)SRAM、BOOTBLOCK、保留的外存儲器空間、VPB外設(shè)以及AHB外設(shè)。,20,系統(tǒng)存儲器映射,5.3.1存儲器映射,256KB片內(nèi)非失憶性存儲器(LPC2124/2214),2MBAHB外設(shè),128KB片內(nèi)非失憶性存儲器(LPC2114/2212),16KB片內(nèi)靜態(tài)RAM,8KBBootBlock(片內(nèi)ROM存儲器重映射),2MBVPB外設(shè),16MBBank0,保留,保留給片內(nèi)RAM存儲器,保留給片內(nèi)FLASH存儲器,16MBBank1,16MBBank2,16MBBank3,,,,,保留給片外存儲器,用戶所見存儲器的分布,圖5.3系統(tǒng)存儲器地址映射,21,ARM存儲器映射空間,ARM7TDMI的存儲器映射空間0X00000000~0XFFFFFFFF起始地址依次為:FLASH——0X00000000,SRAM——0X40000000,BOOTBLOCK,外部存儲器0X80000000,VPB(低速外設(shè)地址)——0XE0000000,AHB(高速外設(shè):向量中斷控制器,外部存儲器控制器)——從0XFFFFFFFF回頭。,22,5.3.1存儲器映射,AHB和VPB,AHB(先進的高性能總線)和VPB(VLSI外設(shè)總線)外設(shè)區(qū)域都為2M字節(jié),可各分配128個外設(shè)。每個外設(shè)空間的規(guī)格都為16K字節(jié),這樣就簡化了每個外設(shè)的地址譯碼。,注意:外設(shè)寄存器的地址都是字對齊。AHB和VPB外設(shè)區(qū)域中不管是字還是半字,都是一次性訪問。例如不可能對一個字寄存器的最高字節(jié)執(zhí)行單獨的讀或?qū)懖僮鳌?23,外設(shè)存儲器映射,5.3.1存儲器映射,注:AHB和VPB均為128x16kB(2MB)范圍。,24,AHB外設(shè)映射,5.3.1存儲器映射,注:只有LPC2200系列微處理器有外部總線控制器,25,VPB外設(shè)映射,4.3.3存儲器映射,26,5.3.2片內(nèi)存儲器,LPC2000系列中除了LPC2210/2220/2290外,其它的ARM微處理器內(nèi)部都帶有容量不等的Flash,這為ARM芯片的單片應(yīng)用帶來可能。片內(nèi)Flash通過128位寬度的總線與ARM內(nèi)核相連,具有很高的速度,加上特有的存儲器加速功能,因此可以將程序直接放在Flash上運行。,片內(nèi)FLASH程序存儲器,27,5.3.2片內(nèi)存儲器,片內(nèi)Flash編程方法,1.使用JTAG仿真/調(diào)試器,通過芯片的JTAG接口下載程序;,2.使用在系統(tǒng)編程技術(shù)(即ISP),通過UART0接口下載程序;,3.使用在應(yīng)用編程技術(shù)(即IAP),在用戶程序運行時對Flash進行擦除和/或編程操作,實現(xiàn)數(shù)據(jù)的存儲和固件的現(xiàn)場升級。,,,,,,,,,,,JTAG,,UART0,28,5.3.2片內(nèi)存儲器,LPC2000系列微控制器的片內(nèi)RAM為靜態(tài)RAM(SRAM),它們可用作代碼和/或數(shù)據(jù)的存儲。SRAM支持8位、16位和32位的讀寫訪問。,片內(nèi)靜態(tài)RAM,29,5.3.3片外存儲器,概述,在CPU外部擴展連接的存儲器芯片稱為片外存儲器,這些器件通常都具有數(shù)據(jù)線、地址線和控制線等。主要器件有ROM、FLASH、SRAM等。,,Bank0,Bank1,Bank2,Bank3,,,,,LPC2200,每個Bank尋址空間:16M字節(jié);數(shù)據(jù)寬度:8/16/32位。,30,5.3.3片外存儲器,片外Flash編程方法,Flash的擦寫操作需要配合一段符合Flash編程時序的代碼,這段代碼稱為裝載程序,一般由用戶編寫。,,,程序代碼(源),程序代碼(目標(biāo)),Loader,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,下載用戶代碼時,首先得在CPU內(nèi)運行裝載程序,通過它把從串口(或其它接口)接收的代碼寫到片外Flash中。,31,5.3.4存儲器重映射及引導(dǎo)塊,存儲器重映射,將已經(jīng)過映射的存儲器再次映射的過程稱為存儲器重映射,它使同一物理存儲單元出現(xiàn)多個不同的邏輯地址。這些存儲單元主要包括引導(dǎo)塊“BootBlock”和用于保存異常向量表的少量存儲單元。,Addr1,0 x1234,0 x1234,,,注意:存儲器重映射并不是對映射單元的內(nèi)容進行了復(fù)制,而只是將多個地址指向了同一個存儲單元,這種效果是通過芯片內(nèi)部的“存儲器管理部件”實現(xiàn)的。,32,5.3.4存儲器重映射及引導(dǎo)塊,存儲器映射:為存儲器分配地址的過程.存儲器重映射:為了增加系統(tǒng)的靈活性,系統(tǒng)中有部分地址可以同時出現(xiàn)在不同的地址上,這就叫做存儲器重映射。包括引導(dǎo)塊“BootBlock”重映射和異常向量表的重映射。1.引導(dǎo)塊“BootBlock”及其重映射引入的原因:BootBlock中有些程序可被用戶調(diào)用,如擦寫片內(nèi)Flash的IAP代碼。為了增加用戶代碼的可移植性,所以最好把BootBlock的代碼固定的某個地址上。但由于各芯片的片內(nèi)Flash大小不盡相同,如果把BootBlock的地址安排在內(nèi)部Flash結(jié)束的位置上,那就無法固定BootBlock的地址。廠家為了BOOTBLOCK在芯片中的位置固定,就在編址的2G靠前編址的位置虛擬劃分一個區(qū)域作為BOOTBLOCK區(qū)域,這就是重映射,這樣訪問<2G即<0X80000000的位置時,就可以訪問到在FLASH尾部的BOOTBLOCK區(qū)了。,33,5.3.4存儲器重映射及引導(dǎo)塊,1.引導(dǎo)塊及其重映射,引導(dǎo)塊(BootBlock)是芯片設(shè)計廠家在LPC2000系列ARM內(nèi)部固化的一段代碼,用戶無法修改或刪除。這段代碼在芯片復(fù)位后被首先運行,其功能主要是:,判斷運行哪個存儲器上的程序;檢查用戶代碼是否有效;判斷芯片是否被加密;芯片的在應(yīng)用編程(IAP)以及在系統(tǒng)編程功能(ISP)。,注意:部分器件內(nèi)部雖然沒有用戶Flash空間(比如LPC2210/2220/2290),但它們?nèi)匀淮嬖贐ootBlock,并且復(fù)位后會被首先運行。,34,5.3.4存儲器重映射及引導(dǎo)塊,引導(dǎo)塊在存儲器中的狀態(tài),LPC2200系列芯片的BootBlock為8KB大小,它們占用了用戶的Flash空間。,LPC2130系列芯片的BootBlock為12KB大小,除了LPC2138占用用戶的Flash空間外,該系列中其它的芯片不占用用戶Flash空間。,35,,BootBlock重新映射,,BootBlock重新映射,5.3.4存儲器重映射及引導(dǎo)塊,BootBlock,BootBlock,引導(dǎo)塊(BootBlock)的重映射,36,引入原因:由于ARM處理器的存儲器結(jié)構(gòu)比較復(fù)雜,可能同時存在片內(nèi)存儲器和片外存儲器等,他們在存儲器映射上的起始地址都不一樣,因此ARM內(nèi)核要訪問的中斷向量表可能不在0 x0000~0 x003F地址上,因此采用了存儲器重映射來實現(xiàn)將存在與不同地方的中斷向量表都映射到0 x0000~0 x003F地址上。ARM內(nèi)核在發(fā)生異常后,會使程序跳轉(zhuǎn)到0 x0000~0 x001C的異常向量表處,再經(jīng)過向量跳轉(zhuǎn)到異常服務(wù)程序。但ARM單條指令的尋址范圍有限,無法用一條指令實現(xiàn)4G范圍的跳轉(zhuǎn),所以應(yīng)在其后面的0 x0020~0 x003F地址上放置跳轉(zhuǎn)目標(biāo),這樣就可以實現(xiàn)4G范圍內(nèi)的任意跳轉(zhuǎn),因此一個異常向量表實際上占用了16個字的存儲單元(64字節(jié))。,5.3.4存儲器重映射及引導(dǎo)塊,2.異常向量表概述,37,5.3.4存儲器重映射及引導(dǎo)塊,ARM異常入口,該位置被Boot裝載程序用作有效用戶程序的檢測標(biāo)志。通過定義此保留值,使向量表所有數(shù)據(jù)32位累加和為0,芯片復(fù)位后才能脫機運行用戶程序。,38,5.3.4存儲器重映射及引導(dǎo)塊,異常向量表的重映射,異常向量表可以來自四個不同的區(qū)域:BootBlock、片內(nèi)Flash、片內(nèi)RAM和外部存儲器。微控制器可以執(zhí)行這些存儲器中的代碼。除了片內(nèi)Flash的向量表位于0 x0000~0 x003F地址上,其他存儲器的向量表都不位于這個地址。為了能讓ARM內(nèi)核通過訪問0 x0000~0 x003F地址訪問到其他存儲區(qū)域的向量表,這樣向量表必須進行重映射。,注意:除了“用戶片內(nèi)Flash模式”外,其它模式下都無法訪問片內(nèi)Flash的0 x0000~0 x003F區(qū)域。,39,來自不同區(qū)域的異常向量表,異常向量表,地址重映射,,,,復(fù)位后,首先運行BootBlock程序,將BootBlock內(nèi)0 x7FFFE000~0 x7FFFE03F的異常向量表重映射到0 x0000~0 x003F地址以允許處理異常并在Boot裝載過程中使用中斷。,此時無需進行Flash向量表的重映射,其向量表本身就處于0 x0000~0 x003F地址空間。,異常向量表,異常向量表,再根據(jù)MEMMAP寄存器的設(shè)置運行片內(nèi)Flash代碼。,片內(nèi)RAM代碼。,片外存儲器代碼。,此時需將片內(nèi)RAM0 x40000000~0 x4000003F的向量表重映射到0 x0000~0 x003F地址空間。,此時需將外部存儲器0 x80000000~0 x8000003F的向量表重映射到0 x0000~0 x003F地址空間。,地址重映射,地址重映射,40,外擴存儲器異常向量表實現(xiàn)示例,應(yīng)用程序的異常向量表就存放在0 x80000000起始的64個物理存儲單元中。但是ARM核發(fā)生異常(中斷)后是從0 x00000000~0 x0000003F地址范圍取異常向量的。所以要把0 x80000000~0 x8000003F范圍內(nèi)的存儲單元重新映射到0 x00000000~0 x0000003F地址范圍上。以后CPU存取0 x00000000~0 x0000003F地址就是存取0 x80000000~0 x8000003F范圍內(nèi)的存儲單元。,41,ARM芯片的另外一種重映射方式,為了提高異常相應(yīng)速度我們采取以下做法:(1)先把0 x00000000~0 x0000003F(FLASH)存儲單元內(nèi)的異常向量表復(fù)制到0 x40000000~0 x4000003F(片內(nèi)RAM的最低端64個字節(jié)的存儲單元)范圍內(nèi)存儲單元中。(2)把0 x40000000~0 x4000003F范圍內(nèi)存儲單元地址重新映射到0 x00000000~0 x0000003F地址范圍。這樣做了以后,當(dāng)異常發(fā)生的時候,CPU取異常向量就是從RAM區(qū)中的異常向量表中區(qū),速度快了。,42,異常向量表的重映射的實現(xiàn)機制,存儲器映射控制寄存器,存儲器映射控制寄存器(MEMMAP)是一個可讀可寫的寄存器。,異常向量表可以重新映射到:BootBlock;片內(nèi)Flash;片內(nèi)SRAM;外部存儲器Bank0。,目的:為了允許運行在不同存儲器空間中的代碼對中斷進行控制,需要使用存儲器映射控制機制改變地址0 x0000~0 x003F的中斷向量的映射。,43,存儲器映射控制,系統(tǒng)引導(dǎo)與存儲器映射,對于LPC2200系列微處理器,當(dāng)nRESET為低時,BOOT1:0腳的狀態(tài)控制著引導(dǎo)方式。,44,,MAP[1:0]設(shè)置值與各種異常地址范圍的關(guān)系,當(dāng)發(fā)生異常時,對應(yīng)的向量表實際訪問到0 x80000000~0 x8000003C地址。,,,,當(dāng)發(fā)生異常時,對應(yīng)的向量表實際訪問到0 x7FFFE000~0 x7FFFE03C地址。,當(dāng)發(fā)生異常時,對應(yīng)的向量表實際訪問到0 x40000000~0 x4000003C地址。,當(dāng)發(fā)生異常時,對應(yīng)的向量表實際訪問到0 x00000000~0 x0000003C地址。,異常向量表從片外存儲器中重映射。,異常向量表從BootBlock中重映射。,異常向量表從SRAM中重映射。,異常向量表來自片內(nèi)Flash。,45,5.3.5系統(tǒng)啟動代碼介紹,概述,ARM微處理器在上電或復(fù)位后首先運行BootBlock中的一段代碼,這段代碼稱為“引導(dǎo)代碼”,由芯片廠商固化在芯片中。此后,在正式運行用戶main函數(shù)之前,還需要運行一段“啟動代碼”,由用戶添加。,引導(dǎo)代碼(BootBlock),用戶main函數(shù),啟動代碼,向量表定義;堆棧初始化;系統(tǒng)變量初始化;中斷系統(tǒng)初始化;I/O初始化;外圍初始化;地址重映射等操作。,上電/復(fù)位,,46,啟動代碼流程圖,,,47,5.1LPC2000系列簡介5.2芯片內(nèi)部結(jié)構(gòu)5.3存儲器結(jié)構(gòu)5.4系統(tǒng)控制模塊5.5中斷技術(shù)5.6向量中斷控制器,LPC2000系列微處理器組成與中斷技術(shù),48,5.4系統(tǒng)控制模塊,系統(tǒng)控制模塊通常包括很多功能部件,這些功能部件的影響是全局性的,它們的狀態(tài)改變時可能引起整個系統(tǒng)運行狀態(tài)的改變,它們包括時鐘系統(tǒng)、功率控制、復(fù)位、存儲器映射控制。,49,5.4系統(tǒng)控制模塊功能匯總,概述,一個ARM芯片中通常有很多功能部件,有一些部件是全局性的,它們狀態(tài)的改變可能引起整個系統(tǒng)運行狀態(tài)的改變,這些部件我們統(tǒng)一稱之為系統(tǒng)控制模塊。,在這些系統(tǒng)控制模塊中,有些部件需要外部引腳的配合,如晶體振蕩器、外部復(fù)位輸入。,50,5.4系統(tǒng)控制模塊功能匯總,在系統(tǒng)控制模塊中,有些部件需要在進行寄存器配置后才能正常工作,如存儲器映射控制、鎖相環(huán)、功率控制、VPB分頻器。,51,5.4.1時鐘系統(tǒng),概述,時鐘是計算機系統(tǒng)的脈搏,處理器核在一拍接一拍的時鐘驅(qū)動下完成指令執(zhí)行、狀態(tài)變換等動作。外設(shè)部件在時鐘的驅(qū)動下進行著各種工作,比如串口數(shù)據(jù)的收發(fā)、A/D轉(zhuǎn)換、定時器計數(shù)等。所以時鐘對于一個計算機系統(tǒng)是至關(guān)重要的,通常時鐘系統(tǒng)出現(xiàn)問題也是最致命的,比如振蕩器不起振、振蕩不穩(wěn)、停振等。,52,5.4.1時鐘系統(tǒng),時鐘系統(tǒng)結(jié)構(gòu),LPC2000系列微控制器的時鐘系統(tǒng)包括四個部分:晶體振蕩器、喚醒定時器、鎖相環(huán)(PLL)和VPB分頻器。,外接晶體或外接時鐘源,產(chǎn)生穩(wěn)定的時鐘信號,將Fosc提升到合適的頻率,1,3,4,2,53,5.4.1時鐘部件-晶體振蕩器,1.晶體振蕩器,LPC2000系列微控制器的晶體振蕩器可以使用外部時鐘源(從屬模式),也可以使用外接晶體和片內(nèi)振蕩電路(振蕩模式)產(chǎn)生時鐘。,54,時鐘部件-晶體振蕩器,從屬模式,使用從屬模式時,時鐘信號通過X1引腳從外部輸入,輸入頻率范圍:1~50(MHz),其幅度范圍為:200mV~1.8V。,55,時鐘部件-晶體振蕩器,振蕩模式,使用振蕩模式時,時鐘信號由內(nèi)部晶體振蕩器和外部連接的晶體振蕩產(chǎn)生,振蕩頻率范圍:1~30(MHz)。,56,時鐘部件-晶體振蕩器,注意:如果使用了ISP下載功能或者連接PLL提高頻率,則輸入的時鐘頻率范圍必須在10~25(MHz)之間。,57,,5.4.1時鐘部件-喚醒定時器,2.喚醒定時器,喚醒定時器能夠確保振蕩器和芯片內(nèi)部硬件電路在處理器開始執(zhí)行指令之前有足夠的時間初始化。工作原理如圖:,,對輸入時鐘計數(shù),計數(shù)滿4096個周期后,控制開關(guān)閉合,,為CPU提供時鐘,58,5.4.1時鐘部件-喚醒定時器,當(dāng)給芯片加電或某個事件使芯片退出掉電模式后,振蕩器就開始工作,但是需要一段時間來產(chǎn)生足夠振幅的信號驅(qū)動時鐘邏輯。振蕩的波形大致如下:,,注:喚醒定時器就通過監(jiān)測晶振狀態(tài)來判斷是否能開始可靠的執(zhí)行代碼。,59,5.4.1時鐘部件-喚醒定時器,喚醒定時器與時鐘的關(guān)系,喚醒定時器檢測到有效時鐘信號后,計數(shù)4096個時鐘脈沖,并在這段時間里初始化系統(tǒng)硬件。如芯片滿足運行條件(Flash初始化完成、外部復(fù)位信號已撤除等),接通系統(tǒng)時鐘,處理器開始執(zhí)行指令。總之,LPC2000系列芯片的喚醒定時器是根據(jù)晶振的情況來執(zhí)行最短時間的復(fù)位,它在處理器從掉電模式中喚醒或發(fā)生了任何復(fù)位時激活。,60,5.4.1時鐘部件-PLL(鎖相環(huán)),3.鎖相環(huán),LPC2000系列芯片內(nèi)部均具有PLL電路,振蕩器產(chǎn)生的時鐘Fosc通過PLL升頻,可以獲得更高的系統(tǒng)時鐘(Fcclk)。,輸入范圍10~25MHz,將FOSC提升到10~60MHz,61,PLL內(nèi)部結(jié)構(gòu)框圖,5.4.1時鐘部件-PLL(鎖相環(huán)),62,5.4.1時鐘部件-PLL(鎖相環(huán)),PLL的鎖定過程,CCO的輸出頻率受到“相位頻率檢測”部件的控制,輸出所需頻率的過程不是一蹴而就的,而是一個拉鋸反復(fù)的過程。,,,CCO的輸出頻率在高低起伏一段時間后漸漸穩(wěn)定在了預(yù)期的頻率值,輸出頻率穩(wěn)定后即“鎖定”成功,63,5.4.1時鐘部件-PLL(鎖相環(huán)),寄存器描述,與PLL相關(guān)的寄存器有四個,其中三個為控制寄存器,還有一個是狀態(tài)寄存器。,64,寄存器描述,PLLCFG.MSEL[4:0],PLLCON.PLLE,PLLCFG.PSEL[1:0],PLLCON.PLLC,PLL控制寄存器(PLLCON):,PLLE:PLL使能,該位為1時將激活PLL并允許其鎖定到指定的頻率;,PLLC:PLL連接,當(dāng)PLLE為1,并且在PLL鎖定后,該位為1,將把PLL作為時鐘源連接到CPU,否則直接使用振蕩器時鐘。,PLL配置寄存器(PLLCFG):,MSEL[4:0]:PLL倍頻器值,在PLL頻率計算中其值為(M-1);,PSEL[1:0]:PLL分頻器值,在PLL頻率計算中其值為P。,PLL狀態(tài)寄存器(PLLSTAT):,,,,,,MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:讀出反映這幾個參數(shù)的設(shè)置值,寫入無效;,PLOCK:反映PLL的鎖定狀態(tài)。為0時,PLL未鎖定;為1時,PLL鎖定到指定頻率。,PLL控制位組合:,65,寄存器描述,PLL饋送寄存器(PLLFEED):,PLLFEED[7:0]:PLL饋送序列必須寫入該寄存器才能使PLL配置和控制寄存器的更改生效。饋送序列分兩步進行,如下所示:step1.將值0 xAA寫入PLLFEEDstep2.將值0 x55寫入PLLFEED,操作示例DISABLE_IRQ();//關(guān)閉中斷,防止饋送序列操作被打斷PLLFEED=0 xAA;//饋送序列第一步PLLFEED=0 x55;//饋送序列第二步ENABLE_IRQ();//饋送序列操作結(jié)束,打開中斷注:這兩個寫操作的順序必須正確,且必須是連續(xù)的VPB總線周期。,66,5.4.1時鐘部件-PLL(鎖相環(huán)),PLL和掉電模式,掉電模式會自動關(guān)閉并斷開PLL。從掉電模式喚醒不會自動恢復(fù)PLL的設(shè)定,PLL的恢復(fù)必須由軟件來完成。通常,首先將PLL激活并等待鎖定,然后再將PLL連接。注:不要試圖在掉電喚醒之后簡單地執(zhí)行饋送序列來重新啟動PLL,因為這會在PLL鎖定建立之前同時使能并連接PLL。,67,5.4.1時鐘部件-PLL(鎖相環(huán)),PLL頻率計算,Fosc為晶體振蕩器的輸出頻率,即PLL的輸入頻率,FOSC,FCCO,FCCO/(2p),FCCO/(2pM),連接PLL之后FCCLK=FCCO/(2p),Fcco為PLL電流控制振蕩器的輸出頻率,Fcclk為PLL最終的輸出頻率(也是處理器的時鐘頻率),Fcco經(jīng)過“2P分頻”部件后得到Fcco/(2p)的頻率,Fcco/(2p)信號經(jīng)過“M分頻”部件,得到Fcco/(2pM)的頻率,PLL鎖定后相位頻率檢測的兩輸入端信號的頻率相等,68,5.4.1時鐘部件-PLL(鎖相環(huán)),PLL頻率計算,可以得出以下幾個等式:Fosc=Fcco/(2pM)?Fcco=Fosc(2pM)Fcclk=Fcco/(2p)?Fcco=Fcclk(2p)最后得出PLL的輸出頻率(當(dāng)PLL激活并連接時)為:Fcclk=MFosc或Fcclk=Fcco/(2P)CCO輸出頻率為:Fcco=Fcclk2P或Fcco=FoscM2P,69,5.4.1時鐘部件-PLL(鎖相環(huán)),確定PLL設(shè)定的過程,2.選擇合適的晶振頻率,3.計算M值,4.計算P值,1.確定處理器時鐘頻率,70,PLL設(shè)置舉例,系統(tǒng)要求Fosc=10MHz,F(xiàn)cclk=60MHz。根據(jù)這些要求:確定Fcclk=60MHz;選擇Fosc=10MHz;計算M=Fcclk/Fosc=60MHz/10MHz=6。M-1=5,所以寫入PLLCFG[4:0]=00101;計算P=Fcco/(Fcclk*2),其中Fcco為156~320MHz。當(dāng)Fcco=156MHz時,P=156MHz/(2*60MHz)=1.3當(dāng)Fcco=320MHz時,P=2.67P取整數(shù)2,所以寫入PLLCFG[6:5]=01。,71,,,,,,,,,,,,PLL設(shè)置舉例,PLL配置過程:,uint8PLLSet(uint32Fcclk,uint32Fosc,uint32Fcco){uint8i;uint32plldat;i=(Fcco/Fcclk);switch(i){case2:plldat=((Fcclk/Fosc)-1)|(0<<5);break;case4:plldat=((Fcclk/Fosc)-1)|(1<<5);break;case8:plldat=((Fcclk/Fosc)-1)|(2<<5);break;case16:plldat=((Fcclk/Fosc)-1)|(3<=10ms,>=300ns,,振蕩器處于穩(wěn)定工作狀態(tài),5.4.3復(fù)位,外部復(fù)位,81,5.4.3復(fù)位,復(fù)位與電源上電次序,V18:數(shù)字1.8V供電電源V18A:模擬1.8V供電電源,V3:數(shù)字3.3V供電電源V3A:模擬3.3V供電電源,CPU內(nèi)核,片內(nèi)外設(shè),,電源管理,,,1.8V為內(nèi)核供電,因此1.8V電源必須正常上電。,82,5.4.3復(fù)位,外部復(fù)位和內(nèi)部WDT復(fù)位的區(qū)別,,,,判斷引腳:P1.20/TRACESYNCP1.26/RTCKBOOT1和BOOT0,判斷引腳:P0.14,執(zhí)行用戶程序或運行ISP程序,,外部復(fù)位,時間,T0,T1,T2,,,WDT復(fù)位,時間,T0,執(zhí)行用戶程序或運行ISP程序,83,Boot程序工作流程—LPC2114/2124,84,Boot程序工作流程—LPC2210/2212/2214,85,5.4.3復(fù)位,復(fù)位與BootBlock,BootBlock的功能包括:,LPC2200系列微控制器可以同時存在片內(nèi)存儲器和片外存儲器,BootBlock通過芯片上的BOOT0和BOOT1引腳來判斷程序的運行。,注:LPC2100系列微控制器只有片內(nèi)Flash,它們無需判斷。,86,5.4.3復(fù)位,復(fù)位與BootBlock,BootBlock的功能包括:,BootBlock在將芯片的控制權(quán)交給用戶程序之前,要先判斷用戶程序是否有效,否則將不運行用戶程序,這樣可以避免在現(xiàn)場設(shè)備中的芯片因為代碼損壞而導(dǎo)致程序亂飛引起事故的情況發(fā)生。,87,CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0 xb9205f80LDRPC,[PC,#-0 xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0,異常向量表源代碼,Reset[0 xe59ff018][0 xe59ff018]...[0 xb9205f80][0 xe51ffff0][0 xe59ff018][0 x8000008c][0 x80000040]...[0 x00000000][0 x00000000],指令機器碼,獲取跳轉(zhuǎn)地址,用戶代碼有效判別方案,調(diào)整該字使累加和為0,88,5.4.3復(fù)位,復(fù)位與BootBlock,BootBlock的功能包括:,芯片可加密可以保護芯片用戶的知識產(chǎn)權(quán)不受侵害。加密后:芯片禁止JTAG接口調(diào)試;芯片限制ISP命令,只能執(zhí)行芯片整片擦除。,對芯片加密的方法:在芯片F(xiàn)lash的0 x01FC地址處寫入數(shù)據(jù)0 x87654321即可。當(dāng)BootBlock檢測到該地址存在加密標(biāo)志字時,就對芯片的JTAG和ISP操作進行限制,達到加密的效果。,89,5.4.3復(fù)位,復(fù)位與BootBlock,BootBlock的功能包括:,LPC2000系列微控制器內(nèi)部的Flash是無法從外部直接擦寫的,這些功能必須通過IAP代碼來實現(xiàn)。IAP可以實現(xiàn)片內(nèi)Flash的擦除、查空、將數(shù)據(jù)從RAM寫入指定Flash空間、校驗、讀器件ID等功能。應(yīng)用實例:數(shù)據(jù)存儲在線升級,90,5.4.3復(fù)位,復(fù)位與BootBlock,BootBlock的功能包括:,ISP功能是一種非常有用的片內(nèi)Flash燒寫方式。ISP工作時,通過UART0使用約定協(xié)議與計算機上的ISP軟件進行通信,并按用戶的操作要求,調(diào)用內(nèi)部的IAP代碼實現(xiàn)各種功能。比如把用戶代碼下載到片內(nèi)Flash中。有兩種情況可以使芯片進入ISP狀態(tài)1、將芯片的P0.14引腳拉低后,復(fù)位芯片可以進入ISP狀態(tài);2、在芯片內(nèi)部無有效用戶代碼時,BootBlock進入ISP狀態(tài)。,91,5.4.3復(fù)位,復(fù)位及復(fù)位芯片配置,一些微控制器自己在上電時會產(chǎn)生復(fù)位信號,但大多數(shù)微控制器需要外部輸入這個信號。阻容式復(fù)位電路:,電容兩端電壓不能突變,產(chǎn)生低電平脈沖復(fù)位,電源消失提供迅速放電回路,對電容充電,電容兩端電壓穩(wěn)定為電源電壓,這個電路成本低廉,但不能保證任何情況產(chǎn)生穩(wěn)定可靠的復(fù)位信號,所以一般場合需要使用CAT809、SP708和CAT1025等專門的復(fù)位芯片。,92,5.1LPC2000系列簡介5.2芯片內(nèi)部結(jié)構(gòu)5.3存儲器結(jié)構(gòu)5.4系統(tǒng)控制模塊5.5中斷技術(shù)5.6向量中斷控制器,LPC2000系列微處理器組成與中斷技術(shù),93,5.5中斷技術(shù),5.5.1中斷概念日常生活引入:“讀書-敲門-電話”事件處理過程,,94,中斷概念,什么是中斷,計算機在執(zhí)行正常程序過程中,當(dāng)出現(xiàn)某種異常事件或某種外部請求時,處理器就暫停執(zhí)行當(dāng)前的程序,而轉(zhuǎn)去執(zhí)行對異常事件或某種外部請求的處理操作。當(dāng)處理完畢后,CPU再返回到被暫停執(zhí)行的程序,繼續(xù)執(zhí)行,這個過程稱為中斷。主程序被打斷的地方稱其為斷點,在計算機系統(tǒng)中,實現(xiàn)中斷處理過程打的技術(shù)就稱為中斷技術(shù),實現(xiàn)該技術(shù)包含的軟件、硬件的總體稱為中斷系統(tǒng)。,95,5.5.2中斷源及管理,中斷源,是指引起中斷的原因或發(fā)出中斷請求的來源。中斷源可分為硬件中斷源和軟件中斷源兩類。中斷請求是隨機發(fā)生的,當(dāng)系統(tǒng)具有多個中斷源時,有時會同時出現(xiàn)多個中斷請求,CPU只能按一定的次序予以響應(yīng)和處理,這個響應(yīng)的次序稱為中斷優(yōu)先級。中斷系統(tǒng)優(yōu)先級有兩層含義:①中斷事件同時發(fā)生時,CPU響應(yīng)誰;②CPU正在執(zhí)行ISR過程中,又有中斷事件,CPU如何處理。,96,不同級別的中斷請求處理原則,不同優(yōu)先級的多個中斷源同時發(fā)出中斷請求,按優(yōu)先級由高到低依次處理。低優(yōu)先級中斷正在處理,出現(xiàn)高優(yōu)先級請求,應(yīng)轉(zhuǎn)去處理高優(yōu)先級請求,服務(wù)結(jié)束后再返回原優(yōu)先級較低的中斷服務(wù)程序繼續(xù)執(zhí)行。高優(yōu)先級中斷正在處理,出現(xiàn)低優(yōu)先級請求,可暫不響應(yīng)。中斷處理時,出現(xiàn)同級別請求,應(yīng)在當(dāng)前中斷處理結(jié)束以后再處理新的請求。,97,中斷優(yōu)先級的確定,有多個中斷源時,多個中斷優(yōu)先級的確定是我們面臨的一個問題,在一般系統(tǒng)中通常用三種方法來確定中斷源的優(yōu)先級別:軟件查詢法,增加簡單硬件電路,進入中斷后,通過軟件按優(yōu)先級進行查詢確定,首先處理高優(yōu)先級中斷;硬件排隊電路法,通過鏈?zhǔn)接布抨犽娐?,硬件確定優(yōu)先級,高優(yōu)先級直接可以屏蔽低優(yōu)先級;專用中斷控制電路法,在ARM嵌入式系統(tǒng)中,通過向量中段控制器確定。,98,中斷源管理,99,5.5.3中斷處理過程,中斷處理過程一般包括以下五個步驟::中斷請求、中斷響應(yīng)、斷點保護、中斷處理和中斷返回。1.中斷請求物理事件轉(zhuǎn)換成一個電信號作為事件請求處理的申請。中斷處理過程中,首先要有中斷請求(中斷申請)。該信號可被屏蔽控制。,100,5.5.3中斷處理過程,2.中斷響應(yīng)(軟件設(shè)置,硬件自動工作)CPU收到請求并進入到ISR的一系列動作:CPU總是在每條指令執(zhí)行的最后一個時鐘周期檢測有無中斷請求,若有中斷申請則對其進行響應(yīng)。中斷響應(yīng)的同時,中斷系統(tǒng)自動屏蔽控制,以保證中斷邏輯的正確性。中斷響應(yīng)還要獲得相應(yīng)的中斷向量,找到對應(yīng)的ISR并運行它。一般有兩種方式:非向量中斷方式和向量中斷方式。不同的中斷系統(tǒng),中斷響應(yīng)的具體操作差別較大,基本原理相似。,101,5.5.3中斷處理過程,3.斷點保護(硬件自動工作)保護斷點,保障ISR能返回到主程序的斷點處繼續(xù)運行;斷點保護----主程序被打斷時的PC當(dāng)前值備份。不同的系統(tǒng)中,保護的方法不一樣:x86將PC值入堆棧,ARM將PC值保護到LR。此操作都是由硬件自動完成。PSW----程序狀態(tài)字的保護;不同的系統(tǒng)中,保護的方法不一樣:x86需要軟件方式將PSW值入堆棧,ARM中CPSR硬件自動保護到SPSR。,102,5.5.3中斷處理過程,4.中斷處理(軟件編程)保護CPU數(shù)據(jù)現(xiàn)場,事件業(yè)務(wù)處理,恢復(fù)CPU數(shù)據(jù)現(xiàn)場;CPU數(shù)據(jù)現(xiàn)場保護----ISR運行中用到的數(shù)據(jù)寄存器要先保護后使用,以保證返回時主程序的中間結(jié)果不被影響;一般通過入堆棧實現(xiàn),也有些場合通過切換CPU的寄存器組實現(xiàn);PSW----程序狀態(tài)字的保護;不同的系統(tǒng)中,保護的方法不一樣;事件處理代碼完成對應(yīng)的事件服務(wù)功能;恢復(fù)CPU數(shù)據(jù)現(xiàn)場---將保護數(shù)據(jù)原樣恢復(fù)。,103,5.5.3中斷處理過程,5.中斷返回(軟件編程)執(zhí)行完ISR后,要返回到原先被中斷的主程序的斷點處繼續(xù)運行;斷點保護的逆過程,使用之前保護的PC值,重置PC;不同的計算機有不同的中斷返回方法;x86使用專用的中斷返回指令(reti),ARM則是使用LR的值重置PC。,104,5.1LPC2000系列簡介5.2芯片內(nèi)部結(jié)構(gòu)5.3存儲器結(jié)構(gòu)5.4系統(tǒng)控制模塊5.5中斷技術(shù)5.6向量中斷控制器,LPC2000系列微處理器組成與中斷技術(shù),105,5.6向量中斷控制器,5.6.1向量中斷分類ARM7TDMI內(nèi)核具有兩個中斷輸入,分別為IRQ中斷和FIQ中斷。向量中斷控制器(VIC,VectoredInterruptController)負責(zé)管理芯片的中斷源,最多可以管理32個中斷輸入請求,16個向量IRQ中斷和1個非向量中斷。常見的中斷源有:WDT(看門狗)、Timer(定時計數(shù)器)、PWM(脈寬調(diào)制器)、UART(通用異步收發(fā)器)、I2C(I2C接口)、SPI(SPI接口)、RTC(實時時鐘)、A/D(模數(shù)轉(zhuǎn)換器)、EINT(外中斷)等.,106,LPC2000系列處理器各功能模塊中斷標(biāo)志以及VIC通道分配,107,5.6.2向量中斷結(jié)構(gòu),108,5.6.2向量中斷結(jié)構(gòu),ARM技術(shù)中的‘中斷’和‘異?!涸贏RM中包含有7種異常:復(fù)位異常、SWI異常(軟中斷異常)、未定義指令異常、數(shù)據(jù)中止異常、指令中止異常、IRQ異常和FIQ異常?!袛唷恰惓!膬蓚€特例。習(xí)慣上將以IRQ異常方式傳遞、響應(yīng)的中斷稱之為“IRQ中斷”;以FIQ異常方式傳遞、響應(yīng)的中斷稱之為“FIQ中斷”。IRQ中斷又根據(jù)中斷服務(wù)程序入口地址的定位方式,被進一步劃分為‘向量IRQ中斷’和‘非向量IRQ中斷’。,109,5.6.2向量中斷結(jié)構(gòu),程序狀態(tài)寄存器CPSR與VIC的關(guān)系,ARM內(nèi)核通過CPSR來監(jiān)視和控制內(nèi)部的操作,CPSR中的“I”位和“F”位分別用來控制IRQ模式和FIQ模式的使能。,,,,CPU,,,,,,,,,ARM7TDMI-S,VIC,,,IRQ,FIQ,CPSR[7](I),CPSR[6](F),110,5.6.2向量中斷結(jié)構(gòu),程序狀態(tài)寄存器CPSR與VIC的關(guān)系,當(dāng)I=1時,禁止IRQ中斷,當(dāng)I=0時,使能IRQ中斷,,111,5.6.2向量中斷結(jié)構(gòu),程序狀態(tài)寄存器CPSR與VIC的關(guān)系,當(dāng)F=1時,禁止FIQ中斷,當(dāng)F=0時,使能FIQ中斷,,112,5.6.2向量中斷結(jié)構(gòu),中斷輸入請求可以在VIC中被設(shè)置為以下三類:FIQ中斷:具有最高優(yōu)先級;向量IRQ中斷:具有中等優(yōu)先級;非向量IRQ中斷:具有最低優(yōu)先級;,這三類中斷中,F(xiàn)IQ中斷優(yōu)先級最高,1個FIQ中斷時響應(yīng)最快,當(dāng)分配給FIQ中斷請求多于1個,VIC將FIQ中斷“相或”后向ARM產(chǎn)生FIQ信號,F(xiàn)IQ服務(wù)程序通過讀取狀態(tài)寄存器識別FIQ請求源,并分別予以處理。向量中斷IRQ(VectoredIRQ)優(yōu)先級中等,該級別可分配32個請求中的16個,32個中斷請求可靈活配置,中斷通道號可靈活配置到插槽slot0~slot15中,其中配置到slot0優(yōu)先級最高,配置到slot15級別在16個向量IRQ中最低。非向量IRQ(Non-vectoredIRQ)優(yōu)先級在VIC控制中最低。VIC將所有向量和非向量IRQ“相或”后向ARM處理器產(chǎn)生IRQ信號。,113,114,,,,,5.6.3向量中斷寄存器,115,控制寄存器功能描述,5.6.3向量中斷寄存器,116,寄存器描述-參數(shù)設(shè)置寄存器,,,,,,,,117,IRQ中斷相關(guān)寄存器,5.6.3向量中斷寄存器,注意:如果將同一個中斷源分配給多個使能的向量IRQ中斷,那么該中斷源發(fā)生中斷時,會使用最高優(yōu)先級(最低編號)的寄存器設(shè)置。,118,產(chǎn)生中斷后的服務(wù)程序地址,5.6.3向量中斷寄存器,119,寄存器描述-狀態(tài)寄存器,,,,注意:讀取VICRawIntr寄存器將得到所有32個中斷請求和軟件中斷的狀態(tài),它不管中斷是否使能或分類。,120,保護使能寄存器,5.6.3向量中斷寄存器,保護使能寄存器(VICProtection):,在某些場合可能需要禁止在用戶模式下訪問VIC寄存器,以提高軟件的安全等級。,121,5.6.4向量中斷的處理過程,ARM的FIQ、IRQ中斷是五種異常中的兩種,ARM使用對“異常”響應(yīng)處理的方法響應(yīng)處理FIQ、IRQ中斷。FIQ異常響應(yīng)的服務(wù)入口地址固定為:0 x0000001C;IRQ異常響應(yīng)的服務(wù)入口地址固定為:0 x00000018;IRQ中斷一般要對應(yīng)多個中斷源,IRQ_ISR入口地址處理需要特殊處理;ARM啟動代碼的異常向量表部分:0 x00LDRPC,ResetAddr;跳轉(zhuǎn)到ResetAddr單元0 x04LDRPC,UndefinedAddr0 x08LDRPC,SWI_Addr0 x0CLDRPC,PrefetchAddr0 x10LDRPC,DataAbortAddr0 x14DCD0 xb9205f80;用戶代碼有效性檢查碼0 x18LDRPC,[PC,#-0 xff0];PC←(PC)–0 xff00 x1CLDRPC,FIQ_Addr,122,5.6.4向量中斷的處理過程,ARM啟動代碼的異常向量表部分說明:IRQ語句含義如下:0 x18LDRPC,[PC,#-0 xff0];PC←(PC)–0 xff0這條指令的地址是0 x18,執(zhí)行該指令時PC=0 x20;執(zhí)行的結(jié)果為PC=[0 x20-0 xff0]=[0 xfffff030];0 xfffff030恰是VICVectAddr寄存器的地址;結(jié)論:ARM處理器響應(yīng)IRQ異常時,固定按VICVectAddr寄存器間接轉(zhuǎn)移。FIQ中斷語句含義,通常系統(tǒng)中僅安排一個FIQ中斷源,因此,F(xiàn)IQ異常響應(yīng)的服務(wù)入口地址就是“FIQ_ISR”入口地址:0 x1CLDRPC,FIQ_Addr,123,,FIQ中斷處理,5.6.4向量中斷的處理過程,SUBSPC,LR,#4,,124,,IRQ中斷處理,5.6.4向量中斷的處理過程,硬件處理,軟件處理,125,5.6.5IRQ中斷的設(shè)計實例,將定時器0中斷分配為向量IRQ通道0,中斷服務(wù)程序地址設(shè)置為Timer0_ISR。,C代碼:,步驟:,IRQ通道0控制寄存器VICVectCntl0,向量IRQ通道0控制寄存器位分配,位,數(shù)值,,126,,圖示IRQ中斷的發(fā)生過程,,1.正在執(zhí)行用戶程序;,①,2.外部中斷0發(fā)生中斷;,②,3.VIC硬件將中斷服務(wù)程序地址裝入VICVectAddr寄存器;,,④,4.程序跳轉(zhuǎn)至異常向量表中IRQ入口0 x0018處;,5.執(zhí)行指令跳轉(zhuǎn)至VICVectAddr寄存器中的中斷服務(wù)地址;,,⑤,⑥,6.中斷服務(wù)程序執(zhí)行完畢,返回被中斷的用戶程序繼續(xù)執(zhí)行被中斷的代碼。,,,127,,圖示IRQ中斷的發(fā)生過程,,①,②,,④,,⑤,⑥,,,IRQ_Eint0,,注意:任何IRQ中斷產(chǎn)生之后,微控制器跳轉(zhuǎn)到地址0 x18執(zhí)行代碼,該地址處的指令為:LDRPC,[PC,#-0 xff0]在執(zhí)行該指令時,PC指向當(dāng)前指令后的第2條指令,即地址0 x20。該指令將內(nèi)存地址:0 x20-0 xFF0=0 xFFFFF030處的內(nèi)容存入PC,該地址正是VICVectAddr寄存器的地址。所以一條ARM指令即可實現(xiàn)程序向中斷服務(wù)程序的跳轉(zhuǎn)。,128,使用VIC的注意要點,如果在片內(nèi)RAM中調(diào)試程序,并使用了中斷,那么必須將存儲器映射控制設(shè)置為內(nèi)部RAM模式;將多個中斷源設(shè)置為FIQ,將增加中斷響應(yīng)延時,所以建議FIQ中斷只有一個中斷源;ADS1.2規(guī)定在定義中斷服務(wù)函數(shù)時必須加入關(guān)鍵字“__irq”,保證函數(shù)返回時會切換處理器模式;在退出中斷服務(wù)程序時要清零相應(yīng)外設(shè)的中斷標(biāo)志,以及VICVectAddr寄存器,為響應(yīng)下次中斷作好準(zhǔn)備。,129,VIC相關(guān)啟動代碼分析,.../*初始化VIC*/VICIntEnClr=0 xffffffff;VICVectAddr=0;VICIntSelect=0;...,在LPC2100、LPC2200的啟動代碼中包含有VIC初始化程序,默認是禁止所有中斷。,TargetResetInit函數(shù):,InitStack...MSRCPSR_c,#0 xdfLDRSP,=StackUsrMOVPC,R0,在LPC2100、LPC2200的啟動代碼中默認是關(guān)閉IRQ和FIQ中斷的。如果用戶需要使用這兩個中斷,則要設(shè)置CPSR寄存器的I位或F位,這需要在特權(quán)模式下處理。最簡單的方法是在啟動代碼中設(shè)置(修改0 xdf值)。,處理器各模式堆棧設(shè)置:,130,5.6.5IRQ中斷的設(shè)計實例——VIC相關(guān)啟動代碼分析,CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0 xb9205f80LDRPC,[PC,#-0 xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler,異常向量表:,一旦產(chǎn)生IRQ中斷,微控制器切換到IRQ模式,并跳轉(zhuǎn)到向量表0 x0018地址執(zhí)行指令。,一旦產(chǎn)生FIQ中斷,微控制器切換到FIQ模式,并跳轉(zhuǎn)到向量表0 x001C地址執(zhí)行指令,然后跳轉(zhuǎn)到FIQ_Handler代碼段。,,,,,131,本章小結(jié),本章首先介紹了ARM系列芯片特點及其內(nèi)部結(jié)構(gòu),芯片內(nèi)部由ARM7內(nèi)核、局部總線、先進的高性能(AHB)總線和連接外設(shè)的外圍總線(VPB)連接各種資源。通過對存儲器結(jié)構(gòu)分析,介紹了ARM處理器各種資源的地址分布以及地址映射,片內(nèi)外存儲器資源及編程作了介紹,引入存儲器重映射概念,增加了系統(tǒng)的靈活性,包括引導(dǎo)塊“BootBlock”重映射和異常向量表的重映射,分析了引入重映射的目的,重映射的原理以及重映射的實現(xiàn)機制,給出了ARM微處理器在上電或復(fù)位后程序運行流程以及啟動代碼流程。系統(tǒng)控制模塊的功能部件影響全局,系統(tǒng)控制模塊對時鐘、鎖相環(huán)、功率控制以及復(fù)位等電路做了介紹。中斷是嵌入式處理器與外設(shè)傳輸數(shù)據(jù)很重要的一種方式,在中斷技術(shù)中講述了中斷概念、多個中斷源的管理以及一般中斷的處理過程。嵌入式處理器中斷源很多,LPC2000系列處理器通過向量中斷控制器VIC統(tǒng)一管理,通過對向量中斷控制器VIC的結(jié)構(gòu)分析,給出了向量中斷的處理過程。,132,作業(yè),2,3,4,5,7,8,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- LPC2000 系列 微處理器 組成 中斷 技術(shù)
鏈接地址:http://zhongcaozhi.com.cn/p-11497056.html