《嵌入式系統(tǒng)的原理及應(yīng)用》課程義_4.doc_第1頁
《嵌入式系統(tǒng)的原理及應(yīng)用》課程義_4.doc_第2頁
《嵌入式系統(tǒng)的原理及應(yīng)用》課程義_4.doc_第3頁
《嵌入式系統(tǒng)的原理及應(yīng)用》課程義_4.doc_第4頁
《嵌入式系統(tǒng)的原理及應(yīng)用》課程義_4.doc_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

嵌入式系統(tǒng)的原理及應(yīng)用課程講義目 錄2.7 S3C2410 ARM微處理器簡介22.7.1 內(nèi)部結(jié)構(gòu)32.7.2 S3C2410A 的啟動(dòng)72.7.3 存儲(chǔ)器控制器72.7.4 Nand Flash控制器102.7.5 時(shí)鐘和電源管理112.7.6 輸入/輸出口122.7.7 中斷132.7.8 異步串行口UART17第4次課:S3C2410 ARM微處理器主要介紹4個(gè)方面的內(nèi)容:(1) 內(nèi)部結(jié)構(gòu)(2) S3C2410A 的啟動(dòng)(3) 存儲(chǔ)器控制器(4) Nand Flash控制器(5) 時(shí)鐘和電源管理(6) 輸入/輸出口(7) 中斷(8) 異步串行口UART2.7 S3C2410 ARM微處理器簡介Samsung 公司推出的16/32位RISC處理器S3C2410A,為手持設(shè)備和一般類型應(yīng)用提供了低價(jià)格、低功耗、高性能小型微控制器的解決方案。采用272 腳FBGA 封裝,內(nèi)含一個(gè)ARM920T 內(nèi)核。為了降低整個(gè)系統(tǒng)的成本,S3C2410A提供了以下豐富的片內(nèi)外圍: 1個(gè)LCD控制器(支持STN和TFT帶有觸摸屏的液晶顯示器); SDRAM控制器; 3個(gè)通道的UART; 4個(gè)通道的DMA; 4個(gè)具有PWM功能的計(jì)時(shí)器和1個(gè)內(nèi)部時(shí)鐘; 8通道的10位ADC; 觸摸屏接口; I2C總線接口; 1個(gè)USB主機(jī)接口,1個(gè)USB設(shè)備接口; 2個(gè)SPI接口; SD接口和MMC卡接口; 117位通用I/O口和24位外部中斷源;S3C2410A采用了ARM920T內(nèi)核,0.18um工藝的CMOS標(biāo)準(zhǔn)宏單元和存儲(chǔ)器單元。它的低功耗、精簡和出色的全靜態(tài)設(shè)計(jì)特別適用于對成本和功耗敏感的應(yīng)用。同樣它還采用了一種叫做Advanced Microcontroller Bus Architecture(AMBA)新型總線結(jié)構(gòu)。S3C2410A的顯著特性是它的CPU核心,是一個(gè)由Advanced RISC Machines(ARM)有限公司設(shè)計(jì)的16/32位ARM920T RISC處理器。ARM920T實(shí)現(xiàn)了MMU,AMBA BUS和Harvard高速緩沖體系結(jié)構(gòu)。這一結(jié)構(gòu)具有獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,每個(gè)都是由8字長的行(line)構(gòu)成。通過提供一系列完整的系統(tǒng)外圍設(shè)備,S3C2410A大大減少了整個(gè)系統(tǒng)的成本,消除了為系統(tǒng)配置額外器件的需要。關(guān)于S3C2410X和S3C2410A的區(qū)別如下:(1) A/D 9位升到10位;(2) MMC 的接口頻率從10M 升到 20M。其他功能一樣!管腳兼容,封裝一樣。S3C2410A可以替代S3C2410X。S3C2410X01已經(jīng)停產(chǎn)。2.7.1 內(nèi)部結(jié)構(gòu)S3C2410X的內(nèi)部結(jié)構(gòu)框圖如圖2.7所示。圖2.7 S3C2410X的內(nèi)部結(jié)構(gòu)Clock Cont.Interrupt Cont.JTAGPower ManagementARM920T Core200MHzLCD DMALCD Cont.4 Channel DMAControllerBus Cont.Arbiter/DecoderUSB HostCONT.NandFlash Cont.Memory Cont.AHBBridgeUARTSUSB DevicesSDI/MMCWatchdog TimerBUS Cont.SPII2CI2SGPIORTCADCUTRPNMLKJHGFEDCBA1 2 3 456 7 8 9 10 11 12 13 14 15 16 17 BOTTOM VIEW圖2.8 S3C2410A 引腳定義圖(272FBGA 封裝)表2.1 272-Pin FBGA封裝的引腳分配引腳順序引腳號(hào)引腳定義引腳號(hào)引腳定義引腳號(hào)引腳定義A1DATA19B14ADDR0/GPA0D10ADDR19/GPA4A2DATA18B15nSRASD11VDDiA3DATA16B16nBE1:nWBE1:DQM1D12ADDR10A4DATA15B17VSSiD13ADDR5A5DATA11C1DATA24D14ADDR1A6VDDMOPC2DATA23D15VSSMOPA7DATA6C3DATA21D16SCKEA8DATA1C4VDDiD17nGCS0A9ADDR21/GPA6C5DATA12E1DATA31A10ADDR16/GPA1C6DATA7E2DATA29A11ADDR13C7DATA4E3DATA28A12VSSMOPC8VDDiE4DATA30A13ADDR6C9ADDR25/GPA10E5VDDMOPA14ADDR2C10VSSMOPE6VSSMOPA15VDDMOPC11ADDR14E7DATA3A16nBE3:nWBE3:DQM3C12ADDR7E8ADDR26/GPA11A17nBE0:nWBE0:DQM0C13ADDR3E9ADDR23/GPA8B1DATA22C14nSCASE10ADDR18/GPA3B2DATA20C15nBE2:nWBE2:DQM2E11VDDMOPB3DATA17C16nOEE12ADDR11B4VDDMOPC17VDDiE13nWEB5DATA13D1DATA27E14nGCS3/GPA14B6DATA9D2DATA25E15nGCS1/GPA12B7DATA5D3VSSMOPE16nGCS2/GPA13B8DATA0D4DATA26E17nGCS4/GPA15B9ADDR24/GPA9D5DATA14F1TOUT1/GPB1B10ADDR17/GPA2D6DATA10F2TOUT0/GPB0B11ADDR12D7DATA2F3VSSMOPB12ADDR8D8VDDMOPF4TOUT2/GPB2B13ADDR4D9ADDR22/GPA7F5VSSOPF6VSSiH4nXDREQ1/GPB8K13TXD2/nRTS1/GPH6F7DATA8H5nTRSTK14RXD1/GPH5F8VSSMOPH6TCKK15TXD0/GPH2F9VSSiH12CLE/GPA17K16TXD1/GPH4F10ADDR20/GPA5H13VSSOPK17RXD0/GPH3F11VSSiH14VDDMOPL1VD0/GPC8Table 2.1 272-Pin FBGA封裝的引腳分配引腳順序(Continued) 引腳號(hào)引腳定義引腳號(hào)引腳定義引腳號(hào)引腳定義F12VSSMOPH15VSSiL2VD1/GPC9F13SCLK0H16XTOpllL3LCDVF2/GPC7F14SCLK1H17XTIpllL4VD2/GPC10F15nGCS5/GPA16J1TDIL5VDDiarmF16nGCS6:nSCS0J2VCLK:LCD_HCLK/GPC1L6LCDVF1/GPC6F17nGCS7:nSCS1J3TMSL7IICSCL/GPE14G1nXBACK/GPB5J4LEND:STH/GPC0L9EINT11/nSS1/GPG3G2nXDACK1/GPB7J5TDOL11VDDi_UPLLG3TOUT3/GPB3J6VLINE:HSYNC:CPV/GPC2L12nRTS0/GPH1G4TCLK0/GPB4J7VSSiarmL13UPLLCAPG5nXBREQ/GPB6J11EXTCLKL14nCTS0/GPH0G6VDDaliveJ12nRESETL15EINT6/GPF6G7VDDiarmJ13VDDiL16UEXTCLK/GPH8G9VSSMOPJ14VDDaliveL17EINT7/GPF7G11ADDR15J15PWRENM1VSSiarmG12ADDR9J16nRSTOUT/GPA21M2VD5/GPC13G13nWAITJ17nBATT_FLTM3VD3/GPC11G14ALE/GPA18K1VDDOPM4VD4/GPC12G15nFWE/GPA19K2VM:VDEN:TP/GPC4M5VSSiarmG16nFRE/GPA20K3VDDiarmM6VDDOPG17nFCE/GPA22K4VFRAME:VSYNC:STV/GPC3M7VDDiarmH1VSSiarmK5VSSOPM8IICSDA/GPE15H2nXDACK0/GPB9K6LCDVF0/GPC5M9VSSiarmH3nXDREQ0/GPB10K12RXD2/nCTS1/GPH7M10DP1/PDP0M11EINT23/nYPON/GPG15P8SPICLK0/GPE13T5I2SLRCK/GPE0M12RTCVDDP9EINT12/LCD_PWREN/GPG4T6SDCLK/GPE5M13VSSi_MPLLP10EINT18/GPG10T7SPIMISO0/GPE11M14EINT5/GPF5P11EINT20/XMON/GPG12T8EINT10/nSS0/GPG2M15EINT4/GPF4P12VSSOPT9VSSOPM16EINT2/GPF2P13DP0T10EINT17/GPG9M17EINT3/GPF3P14VDDi_MPLLT11EINT22/YMON/GPG14N1VD6/GPC14P15VDDA_ADCT12DN0N2VD8/GPD0P16XTIrtcT13OM3N3VD7/GPC15P17MPLLCAPT14VSSA_ADCN4VD9/GPD1R1VDDiarmT15AIN1Table 2.1 272-Pin FBGA封裝的引腳分配引腳順序(Continued)引腳號(hào)引腳定義引腳號(hào)引腳定義引腳號(hào)引腳定義N5VDDiarmR2VD14/GPD6T16AIN3N6CDCLK/GPE2R3VD17/GPD9T17AIN5N7SDDAT1/GPE8R4VD18/GPD10U1VD15/GPD7N8VSSiarmR5VSSOPU2VD19/GPD11N9VDDOPR6SDDAT0/GPE7U3VD21/GPD13N10VDDiarmR7SDDAT3/GPE10U4VSSiarmN11DN1/PDN0R8EINT8/GPG0U5I2SSDI/nSS0/GPE3N12VrefR9EINT14/SPIMOSI1/GPG6U6I2SSDO/I2SSDI/GPE4N13AIN7R10EINT15/SPICLK1/GPG7U7SPIMOSI0/GPE12N14EINT0/GPF0R11EINT19/TCLK1/GPG11U8EINT9/GPG1N15VSSi_UPLLR12CLKOUT0/GPH9U9EINT13/SPIMISO1/GPG5N16VDDOPR13R/nBU10EINT16/GPG8N17EINT1/GPF1R14OM0U11EINT21/nXPON/GPG13P1VD10/GPD2R15AIN4U12CLKOUT1/GPH10P2VD12/GPD4R16AIN6U13NCONP3VD11/GPD3R17XTOrtcU14OM2P4VD23/nSS0/GPD15T1VD13/GPD5U15OM1P5I2SSCLK/GPE1T2VD16/GPD8U16AIN0P6SDCMD/GPE6T3VD20/GPD12U17AIN2P7SDDAT2/GPE9T4VD22/nSS1/GPD142.7.2 S3C2410A 的啟動(dòng)S3C2410A支持從NAND Flash啟動(dòng),NAND Flash具有容量大,比NOR Flash價(jià)格低等特點(diǎn)。系統(tǒng)采用NAND Flash與SDRAM組合,可以獲得非常高的性價(jià)比。S3C4120X具有三種啟動(dòng)方式,可通過OM 1:0管腳(OM0為管腳UR14, OM1為管腳U15)進(jìn)行選擇。OM 1:0 = 00從Nand Flash 啟動(dòng);OM 1:0 = 01從16位寬的ROM啟動(dòng);OM 1:0 = 10從32位寬的ROM啟動(dòng);OM 1:0 = 11TEST模式。2.7.3 存儲(chǔ)器控制器先介紹一下存儲(chǔ)器類型。 Flash ROM FLASH ROM屬于真正的單電壓芯片,在使用上很類似EPROM,因此,有些書籍上便把FLASH ROM作為EPROM的一種。事實(shí)上,二者還是有差別的。FLASH ROM在擦除時(shí),也要執(zhí)行專用的刷新程序,但是在刪除資料時(shí),并非以Byte為基本單位,而是以Sector(又稱Block)為最小單位,Sector的大小隨廠商的不同而有所不同;只有在寫入時(shí),才以Byte為最小單位寫入;FLASH ROM芯片的讀和寫操作都是在單電壓下進(jìn)行,不需跳線,只利用專用程序即可方便地修改其內(nèi)容。DRAM,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,需要不斷的刷新(ms級(jí)),才能保存數(shù)據(jù)。而且是行列地址復(fù)用的,許多都有頁模式。 SRAM,靜態(tài)的隨機(jī)存取存儲(chǔ)器,加電情況下,不需要刷新,數(shù)據(jù)不會(huì)丟失,而且,一般不是行列地址復(fù)用的。需要更大的硅片面積,成本較高。它的存取時(shí)間比DRAM要短得多,經(jīng)常用于Cache。 SDRAM,同步的DRAM,即數(shù)據(jù)的讀寫需要時(shí)鐘來同步。因而能夠工作在較高的時(shí)鐘頻率下。數(shù)據(jù)從存儲(chǔ)元(memory cell) 被流水化地取出,最后突發(fā)式(burst)輸出到總線。DRAM和SDRAM由于實(shí)現(xiàn)工藝問題,容量較SRAM大。但是讀寫速度不如SRAM。存儲(chǔ)器控制是通過相關(guān)的寄存器來實(shí)施的。寄存器分為控制寄存器和狀態(tài)寄存器。可以給控制寄存器賦值以得到所需要的狀態(tài),而狀態(tài)寄存器會(huì)根據(jù)情況自行產(chǎn)生變化。不要試圖控制狀態(tài)寄存器。存儲(chǔ)器控制器是由若干寄存器組成。了解這些寄存器,就可以閱讀或編寫B(tài)ootloader程序了。(1) 總線寬度和等待控制寄存器寄存器地址讀/寫功能復(fù)位后的值BWSCON 0x48000000R/W總線寬度和等待控制0x000000bank0 的數(shù)據(jù)總線(nGCS0)必須首先設(shè)置成16 位或32 位的。因?yàn)閎ank0 通常作為引導(dǎo)ROM 區(qū)(映射到地址0x0000-0000),在復(fù)位時(shí),系統(tǒng)將檢測OM1:0上的邏輯電平,并依據(jù)這個(gè)電平來決定bank0 區(qū)存儲(chǔ)器的總線寬度。BWSCON寄存器描述了bank1bank7數(shù)據(jù)總線寬度和等待控制。總線寬度可以是8位、16位和32位。每個(gè)bank_n(n=17)用該寄存器的4位來描述,分別是UB/LB(即高8位和低8位,有些存儲(chǔ)器給出2個(gè)引腳可以進(jìn)行選擇)、是否需要總線訪問等待周期、數(shù)據(jù)總線寬度的是多少(占用了2位)。如果對每個(gè)bank使能WAIT功能,當(dāng)對某個(gè)bank區(qū)進(jìn)行訪問時(shí),nOE的低電平有效時(shí)間就會(huì)在nWAIT引腳的控制下延長。從tacc-1時(shí)刻開始檢測nWAIT的狀態(tài)。在采樣到nWAIT為高電平后的下一個(gè)時(shí)鐘,nOE將恢復(fù)高電平。nWAIT對nWE信號(hào)的作用與對nOE信號(hào)相同。(2) 組控制寄存器(nGCS0 nGCS7)寄存器地址讀/寫功能復(fù)位后的值BANKCON00x48000004R/WBANK0 控制0x0700BANKCON10x48000008R/WBANK1 控制0x0700BANKCON20x4800000cR/WBANK2 控制0x0700BANKCON30x48000010R/WBANK3 控制0x0700BANKCON40x48000014R/WBANK4 控制0x0700BANKCON50x48000018R/WBANK5 控制0x0700BANKCON60x4800001cR/WBANK6 控制0x18008BANKCON70x48000020R/WBANK7 控制0x18008組控制寄存器BANKCON05均用15位來描述地址信號(hào)建立時(shí)間Tacs、片選建立時(shí)間Tcos、訪問周期Tacc、片選保持時(shí)間Tcoh、地址信號(hào)保持時(shí)間Tcah、頁訪問周期Tacp和頁訪問模式PMC等。組控制寄存器BANKCON67除了用15位描述上述內(nèi)容外,還增加了2位來描述存儲(chǔ)器類型MT。當(dāng)MT=11時(shí),表示存儲(chǔ)器類型為SDRAM時(shí),位3:2 表示RAS(行地址使能)到CAS(列地址使能)的延遲時(shí)間Trcd。位1:0 表示列地址位數(shù)(可以是8、9、10位)。如此一來,總共8 個(gè)存儲(chǔ)器bank中,6 個(gè)是ROM,SRAM 等類型存儲(chǔ)器bank(05),剩下的2 個(gè)可以作為ROM,SRAM,SDRAM 等存儲(chǔ)器bank(67)。7個(gè)存儲(chǔ)器bank (06)的起始地址是固定的。最后一個(gè)bank(7)的起始地址是可調(diào)整的。最后兩個(gè)bank(67) 的大小是可編程的。OM1:0=00OM1:0=01,100xffff_ffff未使用0x6000_0000用N/F啟動(dòng)Boot internal / SRAM(4KB)未使用0x4800_0000SFR區(qū)SFR區(qū)未使用0x4000_0fffBootSRAM0x4000_0000(4KBytes)SROM/SDRAM0x3800_0000(nGCS7)2/4/8/16/32/64/128MBSROM/SDRAM(nGCS7)SROM/SDRAM0x3000_0000(nGCS6)2/4/8/16/32/64/128MBSROM/SDRAM(nGCS6)SROM0x2800_0000 (nGCS5)128MBSROM (nGCS5)SROM0x2000_0000 (nGCS4)128MBSROM1GB可訪問空間 (nGCS4)SROM0x1800_0000 (nGCS3)128MBSROM (nGCS3)SROM0x1000_0000 (nGCS2)128MBSROM (nGCS2)SROM0x0800_0000 (nGCS1)128MBSROM (nGCS1)SROM不用N/F啟動(dòng)0x0000_0000 (nGCS0)128MB (3) REFRESH控制寄存器寄存器地址讀/寫功能復(fù)位后的值REFRESH0x48000024R/WDRAM/SDRAM 刷新控制0xAC0000用來支持SDRAM 的自刷新和掉電模式。(4) BANKSIZE控制寄存器寄存器地址讀/寫功能復(fù)位后的值BANKSIZE0x48000028R/W可改變存儲(chǔ)器大小0BANKSIZE的第7位BURST_EN,突發(fā)傳輸模式使能。這種方式傳輸效率較高。BANKSIZE的第5位SCKE_EN,同步時(shí)鐘使能。BANKSIZE的第4位SCLK_EN有如下功能:0 = SCLK總是激活;1 = SCLK只有在訪問期間(推薦的)激活。SCLK=1時(shí),只有在SDRAM訪問周期期間,SCLK才使能,這樣做是可以減少功耗。當(dāng)SDRAM不被訪問時(shí),SCLK變成低電平。BANKSIZE的2:0,bank6/7的存貯空間分配。(5) SDRAM模式控制寄存器寄存器地址讀/寫功能復(fù)位后的值MRSRB60x4800002CR/WBANK6 的模式設(shè)置寄存器xxxMRSRB70x48000030R/WBANK7 的模式設(shè)置寄存器xxx主要對突發(fā)(burst)傳輸模式下的寫進(jìn)行設(shè)置:如。burst寫的長度、類型和時(shí)間等。2.7.4 Nand Flash控制器當(dāng)前,NOR flash存儲(chǔ)器的價(jià)格比較昂貴,而SDRAM和NAND flash存儲(chǔ)器的價(jià)格相對來說比較合適,這樣就激發(fā)了一些用戶產(chǎn)生希望從NAND flash啟動(dòng)和引導(dǎo)系統(tǒng),而在SDRAM上執(zhí)行主程序代碼的想法。S3C2410A恰好滿足這一要求,它可以實(shí)現(xiàn)從NAND flash上執(zhí)行引導(dǎo)程序。為了支持NAND flash的系統(tǒng)引導(dǎo),S3C2410A具備了一個(gè)內(nèi)部SRAM緩沖器,叫做“Steppingstone”。當(dāng)系統(tǒng)啟動(dòng)時(shí),NAND flash存儲(chǔ)器的前面4KByte字節(jié)將被自動(dòng)載入到Steppingstone中,然后系統(tǒng)自動(dòng)執(zhí)行這些載入的引導(dǎo)代碼。一般情況下,這4K的引導(dǎo)代碼需要將NAND flash中程序內(nèi)容拷貝到SDRAM中,在引導(dǎo)代碼執(zhí)行完畢后跳轉(zhuǎn)到SDRAM執(zhí)行。使用S3C2410A內(nèi)部硬件ECC功能可以對NAND flash的數(shù)據(jù)進(jìn)行有效性的檢測。 引導(dǎo)過程(1) 復(fù)位。(2) 如果自動(dòng)導(dǎo)入模式使能,NAND flash存儲(chǔ)器的前面4K字節(jié)被自動(dòng)拷貝到Steppingstone 內(nèi)部緩沖器中。(3) Steppingstone被映射到nGCS0。(4) CPU在Steppingstone的4-KB內(nèi)部緩沖器中開始執(zhí)行引導(dǎo)代碼。注意:在自動(dòng)導(dǎo)入模式下,不進(jìn)行ECC檢測。因此,NAND flash的前4KB應(yīng)確保不能有位錯(cuò)誤(一般Nandflash廠家都確保)。工作過程如圖2.9所示。圖2.9 Nand Flash 工作方式Nand Flash模式自動(dòng)啟動(dòng)模式用戶程序操作CPU操作(boot代碼)Nand Flash存儲(chǔ)器Nand Flash控制器特殊功能寄存器steppingstone(4KB Buffer) NAND FLASH 模式配置(1) 通過NFCONF寄存器配置NAND flash;(2) 寫NAND flash命令到NFCMD寄存器;(3) 寫NAND flash地址到NFADDR寄存器;(4) 在讀寫數(shù)據(jù)時(shí),通過NFSTAT寄存器來獲得NAND flash的狀態(tài)信息。應(yīng)該在讀操作前或?qū)懭胫髾z查R/nB信號(hào)(準(zhǔn)備好/忙信號(hào))。寄存器地址讀/寫功能復(fù)位后的值NFCONF0x4E000000R/WNAND flash配置-NFCMD0x4E000004R/WNAND flash 命令設(shè)置寄存器-NFADDR0x4E000008R/WNAND flash 地址設(shè)置寄存器-NFDATA0x4E00000CR/WNAND flash 數(shù)據(jù)寄存器-NFSTAT0x4E000010RNAND flash 操作狀態(tài)-NFECC0x4E000014RNAND flash ECC寄存器-需要說明的是:NAND Flash與Nor Flash是有很大不同的。從接口來看:NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)部的每一個(gè)字節(jié)。NAND器件使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),各個(gè)產(chǎn)品或廠商的方法可能各不相同。8個(gè)引腳用來傳送控制、地址和數(shù)據(jù)信息。NAND讀和寫操作采用512字節(jié)的塊,這有點(diǎn)像硬盤管理此類操作,很自然地,基于NAND的存儲(chǔ)器就可以取代硬盤或其他塊設(shè)備。所有flash器件都受位交換現(xiàn)象的困擾。位真的改變了,就必須采用錯(cuò)誤檢測/錯(cuò)誤更正(EDC/ECC)算法。位反轉(zhuǎn)的問題更多見于NAND閃存,在使用NAND閃存的時(shí)候,應(yīng)使用EDC/ECC算法。用NAND存儲(chǔ)多媒體信息時(shí)倒不是致命的。當(dāng)然,如果用本地存儲(chǔ)設(shè)備來存儲(chǔ)操作系統(tǒng)、配置文件或其他敏感信息時(shí),必須使用EDC/ECC系統(tǒng)以確??煽啃?。2.7.5 時(shí)鐘和電源管理時(shí)鐘和電源由3部分組成:時(shí)鐘控制、USB控制和電源控制。(1) 時(shí)鐘控制S3C2410A能夠產(chǎn)生3種時(shí)鐘信號(hào),分別是FCLK、HCLK、PCLK。FCLK應(yīng)用于CPU的時(shí)鐘,HCLK用于AHB bus各種外圍設(shè)備,PCLK 用于APB bus各種接口設(shè)備。其中FCLK 應(yīng)用的就是MPLL的頻率,不用設(shè)置。HCLK和PCLK 可以設(shè)置為FCLK或FCLK/2 ,即通過設(shè)置相應(yīng)得寄存器CLKDIVN中的對應(yīng)位HDIVN和PDIVN(即CLKDIVN的第1位和第0位)即可。CLKDIVN控制寄存器寄存器地址讀/寫功能復(fù)位后的值CLKDIVN0x4C000014R/W時(shí)鐘分頻控制寄存器 0x00000000S3C2410A有2個(gè)鎖相環(huán),一個(gè)是MPLL(用于FCLK、HCLK、PCLK);另一個(gè)是UPLL(用于USB)。時(shí)鐘控制邏輯可以在無PLL時(shí)使時(shí)鐘變慢,且可以通過軟件將時(shí)鐘連接或不連接到每一個(gè)外設(shè)的時(shí)鐘上,這將減少電源的功耗。(2) USB控制主要對USB的時(shí)鐘參數(shù)進(jìn)行配置。(3) 電源控制S3C2410A通過4種電源管理模式有效地控制了功耗。這4種模式分別是NORMAL模式、SLOW模式、IDLE模式和POWER-OFF模式。NORMAL 模式:電源管理模塊為CPU及所有的外設(shè)提供時(shí)鐘。在這種模式下,如果所有外設(shè)都工作的話,電源的功耗將是最大的。用戶可以通過軟件控制外設(shè)的運(yùn)行。如:假如不需要一個(gè)定時(shí)器,則可以斷開時(shí)鐘的連接以減少功耗。SLOW模式: 非鎖相環(huán)模式。與正常模式不同,SLOW模式直接把一個(gè)外部的時(shí)鐘作為S3C2410的FCLK而沒有鎖相環(huán)。在這種模式下,電源功耗僅取決于外部時(shí)鐘的頻率。因PLL的功耗應(yīng)除外。IDLE 模式(空閑模式): 電源管理模塊為所有的外設(shè)提供時(shí)鐘而僅把時(shí)鐘FCLK與CPU核斷開。該模式能夠減少因CPU核所帶來的電源功耗。任何對CPU的中斷請求將喚醒空閑模式。Power_OFF 模式: 電源管理模塊斷開內(nèi)部電源。在這種模式下,除了喚醒邏輯外,CPU和內(nèi)部邏輯將不會(huì)產(chǎn)生電源功耗。激活Power_OFF 模式需要2個(gè)獨(dú)立的電源。一個(gè)電源為喚醒邏輯供電。另一個(gè)為內(nèi)部邏輯(包括CPU)供電。且這兩個(gè)電源均可被控制為斷或開。在Power_OFF 模式下,第二個(gè)電源(為CPU和內(nèi)部邏輯供電)將被關(guān)斷。聲明EINT15:0或RTC報(bào)警中斷請求可喚醒Power_OFF 模式。另外:需要指出的是,S3C2410A提供了一個(gè)片內(nèi)的實(shí)時(shí)時(shí)鐘,可提供標(biāo)準(zhǔn)的日期和時(shí)間,并提供報(bào)警中斷和滴答中斷。2.7.6 輸入/輸出口S3C2410A 有117多功能I/O口,它們分別是: Port A (GPA): 23-輸出口 Port B (GPB): 11-輸入/輸出口 Port C (GPC): 16-輸入/輸出口 Port D (GPD): 16-輸入/輸出口 Port E (GPE): 16-輸入/輸出口 Port F (GPF): 8-輸入/輸出口 Port G (GPG): 16-輸入/輸出口 Port H (GPH): 11-輸入/輸出口每個(gè)口通過三個(gè)寄存器進(jìn)行配置及讀寫數(shù)據(jù)。分別是:GPxCON、GPxDAT、GPyUP其中x為AH,y為BH。(1) 輸入/輸出口配置寄存器(GPACON-GPHCON)在S3C2410A中大多數(shù)輸入/輸出口引腳是復(fù)用的,因此需要用輸入/輸出口控制寄存器來確定每個(gè)引腳的功能。如果GPF0 GPF7 和 GPG0 GPG7為Power-OFF模式下的喚醒信號(hào),那么這這些管腳必須被配置成中斷模式。(2) 輸入/輸出口數(shù)據(jù)寄存器(GPADAT-GPHDAT)如果管腳被置成輸出方式則可以向相應(yīng)的位寫數(shù)據(jù);如果管腳被置成輸入方式則可以從相應(yīng)的位讀數(shù)據(jù)。(3) 輸入/輸出口上拉電阻使能寄存器(GPBUP-GPHUP)該寄存器能夠使能或禁止每個(gè)端口組是否需要上拉電阻。0表示使能,1表示禁止。如果該端口上拉電阻使能,則上拉電阻始終有效,無論是否設(shè)置了管腳的功能。2.7.7 中斷S3C2410A的中斷控制器能夠接收來自56個(gè)中斷源的請求。這些中斷源由內(nèi)部的外設(shè)提供(如DMA控制器、UART等)。中斷的工作過程如圖2.10所示。圖2.10 硬件中斷的工作過程中斷請求數(shù)據(jù)總線中斷應(yīng)答中斷請求地址總線外設(shè)控制器中斷控制邏輯芯片處理器地址解碼邏輯中斷異常處理模塊總共由以下8個(gè)寄存器構(gòu)成: SRCPND (中斷源懸掛寄存器) INTMOD (中斷模式寄存器) INTMSK (中斷屏蔽寄存器) PRIORITY (中斷優(yōu)先級(jí)寄存器) INTPND (中斷懸掛寄存器) INTOFFSET (中斷偏移寄存器) SUBSRCPND (子中斷源懸掛寄存器) INTSUBMSK (子中斷屏蔽寄存器)(1) SRCPND/ SUBSRCPND寄存器地址讀/寫功能復(fù)位后的值SRCPND0X4A000000R/W表示中斷請求狀態(tài)。0 表示沒有請求中斷;1表示已經(jīng)請求中斷。0x00000000SUBSRCPND0X4A000018R/W表示中斷請求狀態(tài)。0 表示沒有請求中斷;1表示已經(jīng)請求中斷。0x00000000這兩個(gè)寄存器在功能上是相同的,它們是中斷源引腳寄存器,在一個(gè)中斷異常處理流程中,中斷信號(hào)傳進(jìn)中斷異常處理模塊后首先遇到的就是SRCPND/ SUBSRCPND,這兩個(gè)寄存器的作用是用于標(biāo)示出哪個(gè)中斷請求被觸發(fā)。SRCPND的有效位為32,SUBSRCPND 的有效位為11,它們中的每一位分別代表一個(gè)中斷源。SRCPND為主中斷源引腳寄存器,SUBSRCPND為副中斷源引腳寄存器。每個(gè)位的初始值皆為0。假設(shè)現(xiàn)在系統(tǒng)觸發(fā)了TIMER0中斷,則SRCPND的第10bit將被置1,代表TIMER0中斷被觸發(fā),該中斷請求即將被處理(若該中斷沒有被屏蔽的話)。SUBSRCPND情況與SRCPND相同,這里就不多講了。(2) INTMOD寄存器地址讀/寫功能復(fù)位后的值INTMOD0X4A000004R/W0為IRQ模式,1為FRQ模式0x00000000該寄存器有效位為32位,每一位與SRCPND中各位相對應(yīng),它的作用是指定該位相應(yīng)的中斷源處理模式(IRQ還是FIQ)。若某位為0,則該位相對應(yīng)的中斷按IRQ模式處理,為1則以FIQ模式進(jìn)行處理,該寄存器初始化值為0x00000000,即所有中斷皆以IRQ模式進(jìn)行處理。(3) INTMSK/ INTSUBMSK 寄存器地址讀/寫功能復(fù)位后的值INTMSK0X4A000008R/W確定相應(yīng)的中斷源是否被屏蔽。1是,0否。0xFFFFFFFFINTSUBMSK0X4A00001CINTSUBMSK確定相應(yīng)的中斷源是否被屏蔽。1是,0否。0x7FFINTMSK為主中斷屏蔽寄存器,INTSUBMSK為副中斷屏蔽寄存器。INTMSK有效位為32,INTSUBMSK有效位為11,這兩個(gè)寄存器各個(gè)位與SRCPND和SUBSRCPND分別對應(yīng)。它們的作用是決定該位相應(yīng)的中斷請求是否被處理。若某位被設(shè)置為1,則該位相對應(yīng)的中斷產(chǎn)生后將被忽略(CPU不處理該中斷請求),設(shè)置為0則對其進(jìn)行處理。這兩個(gè)寄存器初始化后的值是0xFFFFFFFF和0x7FF,既默認(rèn)情況下所有的中斷都是被屏蔽的。(4) PRIORITY寄存器地址讀/寫功能復(fù)位后的值PRIORITY0x4A00000CR/WIRQ 優(yōu)先級(jí)控制寄存器0x7F先弄清楚一點(diǎn),現(xiàn)在要討論的是一個(gè)中斷優(yōu)先級(jí)的判斷問題。為什么會(huì)有中斷有先級(jí)的問題呢?我們知道CPU某個(gè)時(shí)刻只能對一個(gè)中斷源進(jìn)行中斷處理,如果現(xiàn)在有3個(gè)中斷同時(shí)發(fā)生了,那CPU要按什么順序處理這個(gè)3個(gè)中斷呢?這正是引入優(yōu)先級(jí)判斷的原因所在。通過優(yōu)先級(jí)判斷,CPU可以按某種順序逐個(gè)處理中斷請求。S3C2410的優(yōu)先級(jí)判斷分為兩級(jí)。SRCPND寄存器對應(yīng)的32個(gè)中斷源總共被分為6個(gè)組,每個(gè)組由一個(gè)ARBITER(05)寄存器對其進(jìn)行管理。中斷必須先由所屬組的ARBITER(05)進(jìn)行第一次優(yōu)先級(jí)判斷(第一級(jí)判斷)后再發(fā)往ARBITER6進(jìn)行最終的判斷(第二級(jí)判斷)。ARBITER(05)這六個(gè)組的優(yōu)先級(jí)已經(jīng)固定,我們無法改變,也就是說由ARBITER0控制的該組中斷優(yōu)先級(jí)最高(該組產(chǎn)生的中斷進(jìn)行第一級(jí)判斷后永遠(yuǎn)會(huì)以REQ0向ARBITER6傳遞過去)其次是ARBITER1, ARBITER2, ARBITER4, ARBITER4, ARBITER5。我們能夠控制的是某個(gè)組里面各個(gè)中斷的優(yōu)先級(jí)順序。怎么控制?通過PRIORITY寄存器進(jìn)行控制。PRIORITY寄存器內(nèi)部各個(gè)位被分為兩種類型,一種是ARB_MODE,另一種為ARB_SEL。 ARB_MODE類型有5組對應(yīng)ARBITER(26),ARB_SEL類型有7組對應(yīng)ARBITER(06)。現(xiàn)在以ARBITER2為例,講解中斷組與PRIORITY寄存器中ARB_SEL, ARB_MODE之間的相互關(guān)系。首先我們看到ARBITER2寄存器管理的該組中斷里包括了6個(gè)中斷,分別是INT_TIMER0,INT_TIMER1,INT_TIMER2,INT_TIMER3,INT_TIMER4,INT_UART2,她們的默認(rèn)中斷請求號(hào)分別為REQ0,REQ1,REQ2,REQ3,REQ4,REQ5。我們先看PRIORITY寄存器中的ARB_SEL2,該參數(shù)由兩個(gè)位組成,初始值為00。從該表可以看出00定義了一個(gè)順序 0-1-2-3-4-5 ,這個(gè)順序就是這組中斷組的優(yōu)先級(jí)排列,這個(gè)順序指明了以中斷請求號(hào)為0(REQ0)的INT_TIMER0具有最高的中斷優(yōu)先級(jí),其次是INT_TIMER1,INT_TIMER2。假設(shè)現(xiàn)在ARB_SEL2的值被我們設(shè)置為01。則一個(gè)新的優(yōu)先級(jí)次序?qū)⒈皇褂茫?1對應(yīng)的優(yōu)先級(jí)次序?yàn)?-2-3-4-1-5,從中可以看出優(yōu)先級(jí)最高和最低的中斷請求和之前沒有變化,但本來處于第2優(yōu)先級(jí)的INT_TIMER1中斷現(xiàn)在變成了第5優(yōu)先級(jí)。從ARB_SEL2被設(shè)置為00,01,10,11各個(gè)值所出現(xiàn)的情況我們可以看出,除最高和最低的優(yōu)先級(jí)不變以外,其他各個(gè)中斷的優(yōu)先級(jí)其實(shí)是在做一個(gè)旋轉(zhuǎn)排列(rotate)。為了達(dá)到對各個(gè)中斷平等對待這一目標(biāo),我們可以讓優(yōu)先級(jí)次序在每個(gè)中斷請求被處理完之后自動(dòng)進(jìn)行一次旋轉(zhuǎn),如何自動(dòng)讓它旋轉(zhuǎn)呢?我們可以通過ARB_MODE2達(dá)到這個(gè)目的,該參數(shù)只有1個(gè) bit,置1代表開啟對應(yīng)中斷組的優(yōu)先級(jí)次序旋轉(zhuǎn),0則為關(guān)閉。事實(shí)上當(dāng)該位置為1之后,每處里完某個(gè)組的一個(gè)中斷后,該組的ARB_SEL便遞增在1(達(dá)到11后恢復(fù)為00)?,F(xiàn)在我們來看ARB_MODE2=1,ARB_SEL2=00:當(dāng)前ARBITER2的優(yōu)先級(jí)順序?yàn)?-1-2-3-4-5,假設(shè)現(xiàn)在該組的1號(hào)中斷請求INT_TIMER1和2號(hào)中斷請求INT_TIMER2被同時(shí)觸發(fā),CPU根據(jù)優(yōu)先級(jí)判斷后決定先把INT_TIMER1中斷向ARBITER6進(jìn)行發(fā)送(在ARBITER6做第最終優(yōu)先級(jí)判斷),接著再向ARBITER6發(fā)送INT_TIMER2中斷。請注意,在INT_TIMER1被處理完畢后,該組中段的優(yōu)先級(jí)次序被自動(dòng)做了一次旋轉(zhuǎn),旋轉(zhuǎn)后ARBITER2的優(yōu)先級(jí)順序變?yōu)?-2-3-4-1-5。假設(shè)之后某個(gè)時(shí)刻該組的INT_TIMER1和INT_TIMER2又被同時(shí)觸發(fā),則此時(shí)CPU優(yōu)先處理的會(huì)是INT_TIMER2。若我們另ARB_MODE2=0,則改組的中斷優(yōu)先級(jí)次序在任何情況下都不做任何改變,除非我們?nèi)藶榈刂匦略O(shè)置了ARB_SEL2的值。(5) INTPND 寄存器地址讀/寫功能復(fù)位后的值INTPND0X4A000010R/W表示中斷請求狀態(tài)。0 表示沒有請求中斷;1表示已經(jīng)請求中斷。0x00000000INTPND寄存器與SRCPND長得一模一樣,但他們在中斷異常處理中卻扮演著不同的角色,如果說SRCPND是中斷信號(hào)進(jìn)入中斷處理模塊后所經(jīng)過的第一個(gè)場所的話,那么INTPND 則是中斷信號(hào)在中斷處理模塊里經(jīng)歷的最后一個(gè)寄存器。它的每個(gè)位對應(yīng)一個(gè)中斷請求,若該位被置1,則表示相應(yīng)的中斷請求被觸發(fā),描述到這里你可能會(huì)發(fā)現(xiàn)它不僅和SRCPND長得一模一樣,就連功能都一樣,其實(shí)不然,他們在功能上有著重大的區(qū)別。SRCPND是中斷源引腳寄存器,某個(gè)位被置1表示相應(yīng)的中斷被觸發(fā),但我們知道在同一時(shí)刻內(nèi)系統(tǒng)可以觸發(fā)若干個(gè)中斷,只要中斷被觸發(fā)了,SRCPND的相應(yīng)位便被置1,也就是說SRCPND 在同一時(shí)刻可以有若干位同時(shí)被置1,然而INTPND則不同,他在某一時(shí)刻只能有1個(gè)位被置1,INTPND 某個(gè)位被置1(該位對應(yīng)的中斷在所有已觸發(fā)的中斷里具有最高優(yōu)先級(jí)且該中斷沒有被屏蔽),則表示CPU即將或已經(jīng)在對該位相應(yīng)的中斷進(jìn)行處理。于是我們可以有一個(gè)總結(jié):SRCPND說明了有什么中斷被觸發(fā)了,INTPND說明了CPU即將或已經(jīng)在對某一個(gè)中斷進(jìn)行處理。特別注意:每當(dāng)某一個(gè)中斷被處理完之后,我們必須手動(dòng)地把SRCPND,SUBSRCPND, INTPND三個(gè)寄存器中與該中斷相應(yīng)的位由1設(shè)置為0,剛才我說INTPND的操作很特別,它的特別之處就在于對當(dāng)我們要把該寄存器中某個(gè)值為1的位設(shè)置為0時(shí),我們不是往該位置0,而是往該位置1。假設(shè)SRCPND=0x00000003,INTPND=0x00000001,該值說明當(dāng)前0號(hào)中斷和1號(hào)中斷被觸發(fā),但當(dāng)前正在被處理的是0號(hào)中斷,處理完畢后我們應(yīng)該這樣設(shè)置INTPND和SRCPND:SRCPND = 0x00000002 /位0被置為0INTPND = 0x00000001 /位0被置為0(方法是往該位寫入1)(6) INTOFFSET寄存器地址讀/寫功能復(fù)位后的值INTOFFSET0X4A000014R表明哪個(gè)中斷正在被處理(也即正在INTPND中)0x00000000該寄存器的功能則很簡單,它的作用只是用于表明哪個(gè)中斷正在被處理。若當(dāng)前INT_TIMER0被觸發(fā)了,則該寄存器的值為10,以此類推。下面用INT_TIMER0, INT_TIMER2和INT_UART0三個(gè)中斷完整地介紹一次中斷異常處理。首先我們得做幾個(gè)假設(shè):假設(shè)1:這三個(gè)中斷的屏蔽被取消。假設(shè)2:PRIORITY寄存器中ARB_MODE2,ARB_MODE5皆為0,既不進(jìn)行優(yōu)先級(jí)的自動(dòng)旋轉(zhuǎn)排序,任何時(shí)候ARBITER2,ARBITER5控制的中斷組優(yōu)先級(jí)次序分別為0-1-2-3-4-5和1-2-3-4。假設(shè)3:這三個(gè)中斷皆為IRQ類型。假設(shè)4:這三個(gè)中斷同時(shí)被觸發(fā)。INT_TIMER0, INT_TIMER2和INT_UART0三個(gè)中斷被同時(shí)觸發(fā),此時(shí)三個(gè)中斷信號(hào)流向SRCPND寄存器,使該寄存器中的第10位,12位,28位被置為1,中斷信號(hào)繼續(xù)向前流經(jīng)INTMASK 寄存器,這三個(gè)中斷都沒有被屏蔽,于是信號(hào)進(jìn)一步流經(jīng)INTMO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論