版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9講S3C44B0硬件結(jié)構(gòu)與關(guān)鍵技術(shù)分析S3C44B0是基于ARM7TDMI架構(gòu)的,S3C2410是基于ARM920T架構(gòu)的。當(dāng)前,這兩款芯片在嵌入式開發(fā)領(lǐng)域廣泛應(yīng)用。本章主要介紹S3C44B0的硬件資源和整體架構(gòu),對其存儲(chǔ)控制器、NANDFlash控制原理、時(shí)鐘電源管理、通用I/O接口和中斷控制器作了詳細(xì)介紹,并通過一定的實(shí)例來加深讀者對關(guān)鍵技術(shù)的理解。S3C44B0微控制器帶8KBCache的ARM7TDMI核。內(nèi)置系統(tǒng)存儲(chǔ)控制器(片選邏輯,支持ROM、SRAM、Flash、FP/EDO/SDRAM)。LCD控制器(支持256色的STN,集成1個(gè)DMA控制器)。2個(gè)通用DMA控制器(ZDMA)/2個(gè)外圍DMA控制器(BDMA)。2個(gè)帶硬件握手的UART控制器(符合550標(biāo)準(zhǔn))/1個(gè)SIO。1個(gè)支持多主設(shè)備的I2C控制器。1個(gè)IIS總線控制器。5個(gè)PWM定時(shí)器和1個(gè)內(nèi)部定時(shí)器??撮T狗定時(shí)器WatchDog。71個(gè)通用可編程的I/O口和8個(gè)外部中斷源。具有8通道輸入的10位ADC。具有日歷功能的實(shí)時(shí)時(shí)鐘RTC。功率控制模式:Nomal、Slow、Idle和Stop。帶鎖相環(huán)PLL的片內(nèi)時(shí)鐘發(fā)生器。S3C44B0內(nèi)部結(jié)構(gòu)看門狗定時(shí)器看門狗定時(shí)器(WDT,WatchDogTimer)實(shí)際上是一個(gè)計(jì)數(shù)器,一般給看門狗一個(gè)大數(shù),程序開始運(yùn)行后看門狗開始倒計(jì)數(shù)。如果程序運(yùn)行正常,過一段時(shí)間CPU應(yīng)發(fā)出指令讓看門狗復(fù)位,重新開始倒計(jì)數(shù),即“喂狗”,以防止復(fù)位信號(hào)的發(fā)生。如果看門狗減到0就認(rèn)為程序沒有正常工作,強(qiáng)制整個(gè)系統(tǒng)復(fù)位??撮T狗的作用就是防止程序發(fā)生死循環(huán),或者說程序跑飛。S3C44B0X在使用嵌入式ICE來調(diào)試時(shí),看門狗定時(shí)器不能被操作。因此,信號(hào)在調(diào)試模式下,即使看門狗的定時(shí)器定時(shí)時(shí)間到了,也不會(huì)產(chǎn)生復(fù)位信號(hào)。看門狗定時(shí)器對微控制器提供了獨(dú)立的保護(hù)系統(tǒng),當(dāng)系統(tǒng)出現(xiàn)故障時(shí),在可選的超時(shí)周期之后,看門狗將以RESET信號(hào)作出響應(yīng)。即當(dāng)WatchDog在你的程序陷入死循環(huán)的時(shí)候,可以讓系統(tǒng)復(fù)位而不用整個(gè)系統(tǒng)斷電,從而保護(hù)你的硬件電路。汽車電子系統(tǒng)需要監(jiān)控電路監(jiān)測故障容限或安全性。看門狗定時(shí)器可理想滿足這類需求,通過對微控制器正常工作條件下產(chǎn)生的周期脈沖進(jìn)行檢測,偵測電路或IC的失效狀態(tài),一旦發(fā)生故障可立即切換到備份/冗余系統(tǒng)。看門狗定時(shí)器PWM脈寬調(diào)制PWM是“PulseWidthModulation”即脈沖寬度調(diào)制,簡稱脈寬調(diào)制。脈寬調(diào)制PWM一種是利用微處理器的數(shù)字輸出對模擬電路進(jìn)行控制的非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中。PWM是一種對模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法。通過高分辨率計(jì)數(shù)器的使用,方波的占空比被調(diào)制用來對一個(gè)具體的模擬信號(hào)的電平進(jìn)行編碼。其中:占空比和調(diào)制頻率是兩個(gè)主要參數(shù)PWM脈寬調(diào)制占空比是指在一個(gè)周期內(nèi),接通信號(hào)與周期的比值10%50%70%占空比為10%的PWM輸出,即在信號(hào)周期中,10%的時(shí)間通(高電平),其余90%的時(shí)間斷。另外兩個(gè)顯示的分別是占空比為50%和70%的PWM輸出。這三種PWM輸出的編碼分別是強(qiáng)度為滿度值的10%及50%和70%的3種不同模擬信號(hào)值。PWM脈寬調(diào)制燈開關(guān)調(diào)制頻率是周期的倒數(shù)。例如圖中使用9V電池給一個(gè)白熾燈泡供電。如果將連接電池和燈泡的開關(guān)閉合50ms,則燈泡在這段時(shí)間中將得到9V供電,如果在下一個(gè)50ms中將開關(guān)斷開,燈泡得到的供電將為0V。如果在1s內(nèi)將此過程重復(fù)10次,燈泡將會(huì)點(diǎn)亮。因占空比是50%,因此像連接到了一個(gè)4.5V電池(9V的50%)
因T=1s/10次=0.1s,因此調(diào)制頻率為1/T=1/0.1s=10HzPWM定時(shí)器S3C44B0的PWM定時(shí)器具有6個(gè)16位定時(shí)器,每個(gè)定時(shí)器可以按照中斷模式或DMA模式工作。定時(shí)器0,1,2,3和4具有PWM輸出功能。定時(shí)器5是一個(gè)內(nèi)部定時(shí)器不具有對外輸出口線。定時(shí)器0具有死區(qū)發(fā)生器,通常用于大電流設(shè)備應(yīng)用。用于在開關(guān)設(shè)備的斷開和另一個(gè)開關(guān)設(shè)備的閉合之間插入一個(gè)時(shí)間缺口。這個(gè)時(shí)間缺口阻止兩個(gè)開關(guān)設(shè)備處于同時(shí)閉合的狀態(tài),即使是非常短的時(shí)間。例如:通過PWM控制器控制蜂鳴器的發(fā)生S3C44B0存儲(chǔ)控制器存儲(chǔ)器是嵌入式系統(tǒng)的重要組成部分,在嵌入式開發(fā)中,擴(kuò)展存儲(chǔ)器是重要的一步。S3C44B0和S3C2410的存儲(chǔ)器控制器提供訪問外部存儲(chǔ)器所需要的存儲(chǔ)器控制信號(hào),便于擴(kuò)展外部存儲(chǔ)器。S3C44B0存儲(chǔ)控制與地址空間存儲(chǔ)格式小/大端選擇S3C44B0存儲(chǔ)空間共有8個(gè)Bank,每個(gè)Bank為32MB,總共256MB。8個(gè)Bank中:Bank0~Bank5這6個(gè)為ROM、SRAM等類型的Bank,起始地址都是固定的。Bank6、Bank7這兩個(gè)可做SROM、SDRAM、FP/EDO/SDRAM等類型的Bank;Bank6、Bank7這兩個(gè)的大小是可選的,因此,Bank6的起始地址固定,但Bank7的起始地址是可變的;但Bank6和Bank7必須有相同的存儲(chǔ)器大小。(見教材表9-2)地址空間分布專用功能寄存器Bank6~Bank7大小可選
S3C44B0的Bank6/7地址分布S3C44B0存儲(chǔ)位寬控制
S3C44B0存儲(chǔ)器數(shù)據(jù)寬度選擇S3C44B0的Bank0數(shù)據(jù)總線(nGCS0)寬度可配置成8/16/32bit;又因?yàn)锽ANK0是ROM區(qū)的引導(dǎo)(映射到0x00000000),總線寬度需在ROM訪問前確定,在復(fù)位時(shí)根據(jù)OM[1:0]的邏輯電平來確定。S3C44B0存儲(chǔ)器接口ROM接口
4片8位ROM存儲(chǔ)器接口讀/寫32位寬度數(shù)據(jù)時(shí) CPU 存儲(chǔ)器地址線A2——A016位ROM存儲(chǔ)器接口讀/寫16位寬度數(shù)據(jù)時(shí) CPU 存儲(chǔ)器地址線A1——A0SDRAM接口地址線連與ROM同理讀/寫16位寬度數(shù)據(jù)時(shí) CPU 存儲(chǔ)器地址線A1——A0讀/寫32位寬度數(shù)據(jù)時(shí) CPU 存儲(chǔ)器地址線A2——A0S3C44B0存儲(chǔ)控制寄存器總線寬度和等待控制寄存器(BWSCON)詳細(xì)信息見教材《ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程》
227頁表9-6總線控制寄存器(1)(BANKCONn:nGCS0-nGCS5):總線控制寄存器BANKCON0~BANKCON5位詳細(xì)信息見教材227頁表9-7(2)(BANKCONn
:nGCS6-nGCS7):總線控制寄存器BANKCON6~BANKCON7位詳細(xì)信息見教材229頁表9-8刷新控制寄存器(REFRESH)刷新控制寄存器REFRESH詳細(xì)信息見230頁表9-9BANKSIZE寄存器(BANKSIZE) BANKSIZE寄存器位詳細(xì)信息見教材231頁表9-10SDRAM接口電路設(shè)計(jì)SDRAM的行地址線和列地址線是分時(shí)復(fù)用的,也就是地址線要分兩次送出,先送行地址線,再送列地址線。HY57V561620是現(xiàn)代公司生產(chǎn)的容量為32MB(4Mx16bitx4Bank)的SDRAMHY57V561620內(nèi)部原理jS3C2410與HY57V561620的接口電路詳細(xì)信息見教材233頁表9-12S3C44B0存儲(chǔ)器初始化實(shí)例例:使用一條STM指令完成13個(gè)控制寄存器的初始化。當(dāng)系統(tǒng)復(fù)位后,通過LDMIA和STMIA命令來設(shè)置BWSCON,BANCON0-7,REFRESH,BANKSIZ,MRSRB6/7這13個(gè)控制寄存器。LDR R0,=SMRDATALDMIAR0,{R1-R13};將[R0]~[R0+13*4]的字?jǐn)?shù)據(jù)讀到R1~R13中, ;即下面DATA區(qū)的13個(gè)字?jǐn)?shù)據(jù)讀到R1~R13中LDR R0,=0x01C80000;BWSCON寄存器地址STMIAR0,{R1-R13};將R1~R13中的字?jǐn)?shù)據(jù)存入[R0]~[R0+13*4]中 ;即將DATA區(qū)的字?jǐn)?shù)據(jù)存入13個(gè)控制寄存器SMRDATADATADCD0x22221210 ;BWSCONDCD0x00000600 ;GCS0DCD0x00000700 ;GCS1DCD0x00000700 ;GCS2DCD0x00000700 ;GCS3DCD0x00000700 ;GCS4DCD0x00000700 ;GCS5DCD0x0001002A ;GCS6,EDODRAM(Trcd=3) ;(Tcas=2,Tcp=1,CAN=10bit)DCD0x0001002A ;GCS7,EDODRAMDCD0x00960000+953 ;Refresh(REFEN=1,TREFMD=0) ;(Trp=3,Trc=5,Tchr=3)DCD0x0 ;BankSize,32MB/32MBDCD0x20 ;MRSR6(CL=2)DCD0x20 ;MRSR7(CL=2)S3C44B0時(shí)鐘電源管理S3C44B0的電源管理有五種模式:正常模式低速模式空閑模式停止模式LCD的SL空閑模式S3C44B0的時(shí)鐘生成器能夠?yàn)镃PU和外設(shè)產(chǎn)生所需的時(shí)鐘信號(hào),且可以控制每個(gè)外設(shè)提供或斷開時(shí)鐘,以減少電源消耗。S3C44B0時(shí)鐘管理S3C44B0的時(shí)鐘發(fā)生器模塊主時(shí)鐘源來自外部晶振或外部時(shí)鐘。連接到外部的晶體振蕩器PLL鎖相環(huán),把低頻率震蕩輸出作為它的輸入,然后產(chǎn)生滿足S3C44B0需求的高頻率時(shí)鐘。2.時(shí)鐘源的選擇:控制模式引腳(OM3和OM2)與S3C44B0時(shí)鐘源選擇的結(jié)合關(guān)系如表9-18所示。OM[3:2]狀態(tài)通過查閱OM3和OM2引腳在nRESET上升沿時(shí)的值內(nèi)部鎖存的。五種電源管理模式分別是:正常模式:用來支持CPU和所有外設(shè)的時(shí)鐘。且用戶可以選擇斷開外設(shè)的的電源管理來減少消耗。低速模式:不使用PLL鎖相環(huán)直接種用外部時(shí)鐘作為主時(shí)鐘。電源消耗只依賴于外部時(shí)鐘頻率??臻e模式:只斷開CPU內(nèi)核的時(shí)鐘,但為所有外設(shè)提供時(shí)鐘。CPU內(nèi)核的電源消耗被減少了,任何中斷請求可使CPU從空閑模式被喚醒。停止模式:通過禁止PLL鎖相環(huán)來凍結(jié)CPU和所有外設(shè)的時(shí)鐘。CPU的外部中斷可使之從停止模式被喚醒。LCD的SL空閑模式:使得LCD控制器得以工作。除了LCD控制器外的CPU及外設(shè)的時(shí)鐘被停止,此模式電源消耗比空閑模式小。上電復(fù)位晶振開始振蕩數(shù)毫秒后,當(dāng)S3C44B0OSC時(shí)鐘穩(wěn)定后nRESET得到釋放,PLL開始根據(jù)默認(rèn)的PLL配置進(jìn)行運(yùn)作。PLL在上電復(fù)位后變得不穩(wěn)定,所以Fin代替Fpllo在S/W更新PLLCON的配置前直接反饋到Fout。用戶在復(fù)位后想使用PLLCON寄存器的默認(rèn)值,也需要通過S/W寫入相同的值給PLLCON寄存器。上電復(fù)位時(shí)鐘鎖定在正常模式下的操作,如果用戶希望通過寫PMS值的方法改變頻率,PLL鎖定時(shí)間會(huì)自動(dòng)寫入。在鎖定時(shí)間里,時(shí)鐘不支持內(nèi)部模塊。S3C44B0時(shí)鐘與電源管理專用寄存器鎖時(shí)計(jì)數(shù)寄存器LOCKTIME、PLL配置寄存器、時(shí)鐘控制寄存器(CLKCON)、低速時(shí)鐘控制寄存器(CLKSLOW)詳細(xì)描述信息見教材第246-250頁S3C44B0通用I/O端口S3C44B0有71個(gè)多功能輸入/輸出引腳。有如下7個(gè)端口一個(gè)10位輸入/輸出端口(端口A)一個(gè)11位輸入/輸出端口(端口B)一個(gè)16位輸入/輸出端口(端口C)兩個(gè)8位輸入/輸出端口(端口D和G)兩個(gè)9位輸入/輸出端口(端口E和F)端口控制描述1.端口配置寄存器在S3C44B0中,大多數(shù)引腳是復(fù)合式的。所以,需要決定每個(gè)引腳所選擇的功能。端口控制寄存器決定每個(gè)引腳的功能。在S3C44B0中,如果PG0-PG7用于在掉電模式下的喚醒信號(hào),這些端口需要配置成中斷模式。2.端口數(shù)據(jù)寄存器如果這些端口被配置成輸出端口,數(shù)據(jù)可以從相應(yīng)的位被寫入。如果這些端口被配置成輸入端口,數(shù)據(jù)可以從相應(yīng)的位讀出。3.端口上拉寄存器端口上拉寄存器控制每個(gè)端口組的上拉電阻使能/禁止。當(dāng)相應(yīng)的位置0,引腳的上拉電阻被使能。為1時(shí),上拉電阻被禁止。4.外部中斷控制寄存器S3C44B0的8個(gè)外部中斷通過多種信號(hào)方法被請求。EXTINT寄存器可以設(shè)置外部中斷觸發(fā)方式。通用I/O接口設(shè)計(jì)實(shí)例例:LED與蜂鳴器接口電路 S3C44B0的端口A的第0、1、2、3管腳分別與LED相連,端口E的第0管腳用來控制蜂鳴器。根據(jù)LED的硬件電路圖,實(shí)現(xiàn)LED的循環(huán)閃爍:{LED1亮延時(shí),LED4滅}->{LED2亮延時(shí),LED1滅}->{LED3亮延時(shí),LED2滅}->{LED4亮延時(shí),LED3滅}->{蜂鳴器開延時(shí),蜂鳴器關(guān)},如此無限循環(huán),實(shí)現(xiàn)LED霓虹燈式的循環(huán)閃爍。/************************************************************************************文件名:GPIO_Test.c版本號(hào):V1.0創(chuàng)建日期:2008-7-1作者:FE2000硬件描述:S3C44B0GPA0~GPA3分別接LED1~LED4,GPE0控制蜂鳴器。主要函數(shù)描述:函數(shù)LED1_delay~LED4_delay用于實(shí)現(xiàn)LED1~LED4亮滅控制并延時(shí)。修改日志:***********************************************************************************//*定義S3C44B0內(nèi)部端口寄存器地址*/#definerPCONA(*(volatileunsigned*)0x1d20000)//定義端口A配置寄存器rPCONA#definerPDATA(*(volatileunsigned*)0x1d20004)//定義端口A數(shù)據(jù)寄存器rPDATA#definerPCONE(*(volatileunsigned*)0x1d20028)//定義端口E配置寄存器rPCONE#definerPDATE(*(volatileunsigned*)0x1d2002c)//定義端口E數(shù)據(jù)寄存器rPDATE#definerPUPE(*(volatileunsigned*)0x1d20030)//定義端口E上拉電阻寄存器rPUPE/*S3C44B0端口配置*/rPCONA=rPCONA&0xFFFFFFF0//GPA0~GPA3設(shè)置為輸出rPCONE=rPCONE&0xFFFFFFFDrPCONE=rPCONE|0xFFFFFFFD//GPE0設(shè)置為輸出具體代碼見教材P276~279/******************************************函數(shù)名稱:Delay功能描述:Delay函數(shù)實(shí)現(xiàn)軟件延時(shí).入口參數(shù):Time延時(shí)參數(shù)出口參數(shù):無******************************************/VoidDelay(intTime){unsignedintI;for(i=0;i<Time;i++);}/************************************************************函數(shù)名稱:LED1_Delay功能描述:LED1_Delay函數(shù)實(shí)現(xiàn)控制LED1亮滅并延時(shí).入口參數(shù):x:控制LED1的亮滅.x=1亮,x=0滅出口參數(shù):無***************************************************************/voidLED1_Delay(charx){if(x==1) rPDATA=rDATA&0xFFFFFFFE;/*開LED1*/elseif(x==0) rPDATA=rDATA|0x000000001;/*關(guān)LED1*/Delay(500);}/************************************************************函數(shù)名稱:LED2_Delay功能描述:LED2_Delay函數(shù)實(shí)現(xiàn)控制LED2亮滅并延時(shí).入口參數(shù):x:控制LED2的亮滅.x=1亮,x=0滅出口參數(shù):無*****************************************************************/voidLED2_Delay(charx){if(x==1) rPDATA=rDATA&0xFFFFFFFD;/*開LED2*/elseif(x==0) rPDATA=rDATA|0x000000002;/*關(guān)LED2*/Delay(500);}/************************************************************函數(shù)名稱:LED3_Delay功能描述:LED3_Delay函數(shù)實(shí)現(xiàn)控制LED3亮滅并延時(shí).入口參數(shù):x:控制LED3的亮滅.x=1亮,x=0滅出口參數(shù):無*****************************************************************/voidLED3_Delay(charx){if(x==1) rPDATA=rDATA&0xFFFFFFFB;/*開LED3*/elseif(x==0) rPDATA=rDATA|0x000000004;/*關(guān)LED3*/Delay(500);}/************************************************************函數(shù)名稱:LED4_Delay功能描述:LED4_Delay函數(shù)實(shí)現(xiàn)控制LED4亮滅并延時(shí).入口參數(shù):x:控制LED4的亮滅.x=1亮,x=0滅出口參數(shù):無*****************************************************************/voidLED4_Delay(charx){if(x==1) rPDATA=rDATA&0xFFFFFFF7;/*開LED4*/elseif(x==0) rPDATA=rDATA|0x000000008;/*關(guān)LED4*/Delay(500);}/************************************************************函數(shù)名稱:Beep_Delay功能描述:Beep_Delay函數(shù)實(shí)現(xiàn)控制蜂鳴器的開關(guān)并延時(shí).入口參數(shù):x:控制蜂鳴器的開關(guān).x=1開,x=0滅出口參數(shù):無*****************************************************************/voidBeep_Delay(charx){if(x==1) rPDATE=rDATE&0xFFFFFFFE;/*開蜂鳴器*/elseif(x==0) rPDATE=rDATE|0x000000001;/*關(guān)蜂鳴器*/Delay(500);}/************************************************************函數(shù)名稱:Main()功能描述:實(shí)現(xiàn)以下過程的無限循環(huán){LED1亮延時(shí),LED4滅}->{LED2亮延時(shí),LED1滅}->{LED3亮延時(shí),LED2滅}->{LED4亮延時(shí),LED3滅}->{蜂鳴器開延時(shí),蜂鳴器關(guān)}入口參數(shù):無出口參數(shù):無*****************************************************************/voidMain(){while(1) { LED1_Delay(1); LED4_Delay(0); LED2_Delay(1); LED1_Delay(0); LED3_Delay(1); LED2_Delay(0); LED4_Delay(1); LED3_Delay(0); Beep_Delay(1); Beep_Delay(0); }}程序中:/*定義S3C44B0內(nèi)部端口寄存器地址*/#definerPCONA(*(volatileunsigned*)0x1d20000)//定義端口A配置寄存器rPCONA#definerPDATA(*(volatileunsigned*)0x1d20004)//定義端口A數(shù)據(jù)寄存器rPDATA#definerPCONE(*(volatileunsigned*)0x1d20028)//定義端口E配置寄存器rPCONE#definerPDATE(*(volatileunsigned*)0x1d2002c)//定義端口E數(shù)據(jù)寄存器rPDATE#definerPUPE(*(volatileunsigned*)0x1d20030)//定義端口E上拉電阻寄存器rPUPE/*S3C44B0端口配置*/rPCONA=rPCONA&0xFFFFFFF0//PA0~PA3設(shè)置為輸出rPCONE=rPCONE&0xFFFFFFFDrPCONE=rPCONE|0xFFFFFFFD//PE0設(shè)置為輸出端口A(控制寄存器PCONA,數(shù)據(jù)寄存器PDATA)各寄存器的具體位信息見教材P251表9-24程序中:/*定義S3C44B0內(nèi)部端口寄存器地址*/#definerPCONA(*(volatileunsigned*)0x1d20000)//定義端口A配置寄存器rPCONA#definerPDATA(*(volatileunsigned*)0x1d20004)//定義端口A數(shù)據(jù)寄存器rPDATA#definerPCONE(*(volatileunsigned*)0x1d20028)//定義端口E配置寄存器rPCONE#definerPDATE(*(volatileunsigned*)0x1d2002c)//定義端口E數(shù)據(jù)寄存器rPDATE#definerPUPE(*(volatileunsigned*)0x1d20030)//定義端口E上拉電阻寄存器rPUPE/*S3C44B0端口配置*/rPCONA=rPCONA&0xFFFFFFF0//PA0~PA3設(shè)置為輸出rPCONE=rPCONE&0xFFFFFFFDrPCONE=rPCONE|0xFFFFFFFD//PE0設(shè)置為輸出端口E(控制寄存器PCONE,數(shù)據(jù)寄存器PDATE,上拉電阻使能寄存器PUPE)各寄存器的具體位信息見教材P255頁表9-28寄存器
地址
讀/寫
描述
復(fù)位值
PCONE
0x01D20028
R/W
配置端口E的引腳
0x00
PDATE
0x01D2002C
R/W
端口E的數(shù)據(jù)寄存器
未定義
PUPE
0x01D20030
R/W
端口E上拉電阻使能寄存器
0x00S3C44B0中斷機(jī)制中斷是CPU在程序運(yùn)行過程中,被內(nèi)部或外部的事件所打斷,轉(zhuǎn)去執(zhí)行一段預(yù)先安排好的中斷服務(wù)程序,中斷服務(wù)程序執(zhí)行完畢后,又返回原來的斷點(diǎn),繼續(xù)執(zhí)行原來的程序。S3C44B0內(nèi)部集成了中斷控制器,能夠管理30個(gè)中斷源。26個(gè)獨(dú)立的外部中斷4個(gè)通過或門共用一根中斷請求線的外部中斷4/5/6/72個(gè)通過或門共用一根中斷請求線的UART錯(cuò)誤中斷0/1說明:對于共用中斷請求線的中斷發(fā)生時(shí),需要在中斷服務(wù)程序中進(jìn)行查詢以進(jìn)一步確定中斷源。中斷優(yōu)先級產(chǎn)生模塊由1個(gè)主單元和4個(gè)從單元組成主單元管理4個(gè)從單元和2個(gè)中斷源從單元有4個(gè)可編程優(yōu)先級中斷源sGN和2個(gè)固定優(yōu)先級中斷源sGKn;2個(gè)固定優(yōu)先級中斷源在6個(gè)中斷源中優(yōu)先級最低中斷優(yōu)先級約定從優(yōu)先級單元中:sGA、sGB、sGC、sGD的優(yōu)先級>sGKA>sGKB。其中,sGA、sGB、sGC、sGD的優(yōu)先級通過編程配置。主優(yōu)先級單元中:mGA、mGB、mGC、mGD的優(yōu)先級>mGKA>mGKB。其中,mGA、mGB、mGC、mGD的優(yōu)先級通過編程配置。所以mGKA和mGKB在其他中斷源中優(yōu)先級最低。非向量中斷方式中斷源產(chǎn)生中斷后,從0x18處取指執(zhí)行向量中斷方式中斷源產(chǎn)生中斷后,跳轉(zhuǎn)到0x18處,并忽略0x18處指令,由處理器識(shí)別中斷后自動(dòng)產(chǎn)生一個(gè)跳轉(zhuǎn)到中斷源向量地址的分支指令,并填充總線執(zhí)行總線上新的指令;在各中斷源對應(yīng)的中斷向量地址中,存放著跳轉(zhuǎn)到相應(yīng)中斷服務(wù)程序的指令代碼。0x18中斷服務(wù)入口0x18中斷服務(wù)入口S3C44B0的IRQ中斷分為向量中斷與非向量中斷向量中斷與非向量中斷處理過程IRQs中斷非向量中斷INTCONV=1向量中斷INTCONV=0中斷服務(wù)入口地址表地址映射中斷控制器讀取I_ISPR寄存器并計(jì)算偏移量26個(gè)中斷源EINT0/1/2……PowerDownEINT0/1/2……PowerDown中斷初始化時(shí)要對中斷控制寄存器INTCON進(jìn)行配置,設(shè)置V來選擇向量模式還是非向量模式。S3C44B0中斷控制特殊功能寄存器使用S3C44B0中斷控制時(shí),要能夠完成這些功能的寄存器的初始化。主要寄存器有:中斷控制寄存器INTCON中斷掛起寄存器INTPND中斷模式寄存器INTMOD中斷屏蔽寄存器INTMSKIRQ向量模式相關(guān)寄存器中斷控制寄存器INTCON—見P284頁表9-51中斷掛起寄存器INTPND—見P284頁表9-52所示每一個(gè)中斷源對應(yīng)著一位。只有未被屏蔽且具有最高優(yōu)先級、在源掛起寄存器中等待處理的中斷請求,其對應(yīng)的中斷掛起位被置1。S3C44B0在中斷服務(wù)程序中必須加入對I_ISPC和F_ISPC寫1的操作來清除掛起條件,準(zhǔn)備接收下一次中斷。中斷模式寄存器INTMOD—見P286表9-53ARM處理器的中斷模式有兩種:IRQ模式和FIQ模式。每一個(gè)中斷源對應(yīng)著一位。當(dāng)中斷源的模式位設(shè)置為0時(shí),中斷會(huì)按IRQ模式來處理;當(dāng)模式位設(shè)置為1時(shí),對應(yīng)的中斷會(huì)按FIQ模式來處理。某一時(shí)刻只能有一個(gè)中斷源在FIQ模式下處理,即INTMOD寄存器只有一位可以設(shè)置為1。中斷屏蔽寄存器INTMSK—見P288表9-54每一個(gè)中斷源對應(yīng)著一位;如果某位設(shè)置為1,則該位所對應(yīng)的中斷請求不會(huì)被處理;如果某位設(shè)置為0,則該位所對應(yīng)的中斷請求才會(huì)被處理;如果全局屏蔽位被設(shè)置為1,則所有的中斷請求都不會(huì)被處理。S3C44B0向量模式相關(guān)寄存器—見P290表9-55對S3C44B0中的優(yōu)先級產(chǎn)生模塊的設(shè)置通過對寄存器I_PSLV、I_PMST、I_CSLV、C_CMST的設(shè)置來完成。如果幾個(gè)中斷源同時(shí)發(fā)出中斷請求,則可通過讀I_ISPR寄存器可獲知前具有最高優(yōu)先級的中斷源。7個(gè)外部中斷的中斷控制寄存器EXTINT—見P258頁表9-327個(gè)外部中斷的中斷掛起寄存器EXINTPND—見P259頁表9-33外部中斷請求(4,5,6,7)是‘或’關(guān)系,中共享相同的中斷請求線,提供一個(gè)中斷信號(hào)給中斷控制器。當(dāng)每個(gè)外部中斷請求中斷,相應(yīng)位將會(huì)被設(shè)置成1。中斷服務(wù)例程必須在清除外部掛起條件EXINTPND后清除中斷掛起條件INTPNDS3C44B0中斷接口實(shí)例部分函數(shù)代碼見P298圖為一個(gè)3*3的矩陣鍵盤,3條行線接GPC0~2,3條列線接GPC3~5,鍵盤中斷從EXINT6輸入。行線由CPU送出低電平當(dāng)按鍵K1~9中任一按鍵按下時(shí),行線和列線短路,列線被拉低,經(jīng)過與門后,EXINT6產(chǎn)生低電平向CPU發(fā)出中斷請求。當(dāng)CPU受理中斷后,進(jìn)入相應(yīng)中斷服務(wù)程序,進(jìn)行按鍵判斷和鍵值計(jì)算?;贏RM的嵌入式硬件平臺(tái)體系結(jié)構(gòu)UP-NETARM3000
S3C44B0X把外部復(fù)位信號(hào),也作為一個(gè)中斷來處理。在系統(tǒng)復(fù)位的時(shí)候,程序(PC)指針被設(shè)置成0,使程序跳轉(zhuǎn)到0x00000000開始運(yùn)行。此空間對應(yīng)的是Bank0。因?yàn)樵谙到y(tǒng)的1MB的線性Flash和處理器的Bank0相連接。在線性Flash里存儲(chǔ)的是供系統(tǒng)的初始化的程序。此程序負(fù)責(zé)配置處理器的結(jié)構(gòu)、工作模式以及自動(dòng)檢測嵌入式控制器的各個(gè)硬件是否工作正常。此程序負(fù)責(zé)把存儲(chǔ)在16MB的非線性處理器里面的system.bin文件復(fù)制到0xc5f0000地址(此地址是系統(tǒng)8MB的SDRAM的首地址)。引導(dǎo)程序把程序(PC)指針指向0xc000000地址,系統(tǒng)開始運(yùn)行。system.bin是嵌入式操作系統(tǒng)引導(dǎo)的執(zhí)行文件。編譯以后的操作系統(tǒng)和應(yīng)用程序就是這個(gè)文件。S3C44B0X存儲(chǔ)系統(tǒng)的特征
支持?jǐn)?shù)據(jù)存儲(chǔ)的大/小端選擇(通過外部引腳進(jìn)行選擇)地址空間:具有8個(gè)存儲(chǔ)體,每個(gè)存儲(chǔ)體可達(dá)32Mb,總共可達(dá)256Mb。對所有存儲(chǔ)體的訪問大小均可進(jìn)行改變(8位/16位/32位)8個(gè)存儲(chǔ)體中,Bank0-Bank5可支持ROM、SRAM;Bank6、Bank7可支持ROM、SRAM和FP/EDO/SDRAM等。7個(gè)存儲(chǔ)體的起始地址固定,1個(gè)存儲(chǔ)體的起始地址可變。典型系統(tǒng)中存儲(chǔ)體的分配情況存儲(chǔ)體與存儲(chǔ)體的接口Bank0BIOS512K×2FlashBank116MFlash硬盤Bank2USB接口Bank3LCD顯示模塊Bank4保留Bank5保留Bank6系統(tǒng)內(nèi)存SDRAMBank7保留復(fù)位后的S3C44B0X的存儲(chǔ)器映射表使用Bank0上的兩片512Kb×2來放置系統(tǒng)BIOS,系統(tǒng)上電以后,PC指針自動(dòng)指向Bank0的第一個(gè)單元,開始進(jìn)行系統(tǒng)自舉。系統(tǒng)自舉完成以后,便從硬盤中將系統(tǒng)文件和用戶應(yīng)用程序復(fù)制到SDRAM
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年滬教版選擇性必修1生物上冊階段測試試卷
- 創(chuàng)新的小學(xué)生字詞教學(xué)案例分享
- 從食材到菜品家庭菜譜設(shè)計(jì)的全解析
- 公共設(shè)施與社區(qū)服務(wù)類服飾品牌的聯(lián)名項(xiàng)目
- 2025中國航材集團(tuán)總部崗位招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國電信股份限公司灣沚分公司招聘10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國城市規(guī)劃設(shè)計(jì)研究院公開招聘60名高校畢業(yè)生高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年黑龍江省哈爾濱理工大學(xué)招聘專職輔導(dǎo)員心理健康教師26人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年江蘇鹽城市水利局部分事業(yè)單位招聘15人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年廣東江門市開平市招聘事業(yè)單位職員擬聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 健康素養(yǎng)科普健康知識(shí)講座-課件
- 擋土墻計(jì)算實(shí)例
- 人教PEP版英語四年級上冊單詞表默寫(英譯漢、漢譯英)
- 水不同溫度的熱焓值
- EPC總承包項(xiàng)目設(shè)計(jì)的總體安排與資源配置方案
- 浙江省溫州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 空氣壓縮機(jī)檢驗(yàn)原始記錄表
- 建材行業(yè)重大安全事故隱患檢查表(根據(jù)2022版工貿(mào)行業(yè)重大生產(chǎn)安全事故隱患判定標(biāo)準(zhǔn)編制)
- 隆中對-完整版獲獎(jiǎng)?wù)n件
- 《國民經(jīng)濟(jì)核算》課程教學(xué)大綱
- DB32∕T 3261-2017 水利工程預(yù)拌混凝土應(yīng)用技術(shù)規(guī)范
評論
0/150
提交評論