《ZedBoard之中断原理及过程详解.docx》由会员分享,可在线阅读,更多相关《ZedBoard之中断原理及过程详解.docx(6页珍藏版)》请在第一文库网上搜索。
1、ZedBoard之中断原理及过程详解Interrupt中断GenericInterruptContro11erEnab1e.C1assify.DistributeSoftwareInterruptsadPrioritizeFigure7-1:System-1eve1B1ockDiagram概述:1 .Zynq的中断类型有:软件中断(SoftwareGeneratedInterrupt,SGI,中断号0T5)(16-26reserved)私有外设中断(PriVatePeriphera1Interrupt,PPI,中断号27-31),共享外设中断(Sharee1Periphera1Interrup
2、t,SPI,中断号32-95).2 .私有外设中断(PPI):每个CPU都有一组PPI,包括全局定时器、私有叠门狗定时器、私有定时器和来自P1的FIQ/IRQ.3 .软件中断(SGD被路由到一个或者两个CPU上,通过写ICDSGIR寄存器产生SG14 .共享外设中断(SPI)由PS和P1上的各种I/O控1避和存储器控制器产生,这些中断信号被路由的CPU.5 .通用中断控制器(GIC)是核心资源,用于集中管理从PS和P1产生的中断信号的资源集合。控制器可以使能、关使能、屏蔽中断源和改变中断源的优先级,并且会将中断送到对应的CPU中,CPU通过私有总线访问这些寄存器。6 .中断控制器(ICC,In
3、terruptContro11erCPU)和中断控制器分配器(ICD,InterruptContro11erDistributor)是GIC寄存器子集。7 .(外部)中断请求(IRQ)、快速中断请求(FIQ)中断原理当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下一条指令处继续执行。在进入异常中断处理程序时,要保存被中断程序的执行线程。从中断处理程序退出时要恢复被中断程序的执行现场。中断寄存器概述Tab1e75:InterruptContro11erRegisterOverviewNameRegisterDesc
4、riptionWriteProtectionInterruptContro11erCPU(ICC)ICC1CRCPUinterfacecontro1Yes,exceptEnabICCPMRInterruptprioritymaskICCBPRBinarypointforinterruptpriorityMr.JrjNameRegisterDescriptionWriteICCIARInterruptacknow1edgeICCEO1REndofinterruptICCRPRRunningpriorityICCHPIRHighestpendinginterruptICCABPRA1iasedno
5、n-securebinarypoint眄InterruptContro11erDistributor(ICD)ICDDCRSecure/non-securemodese1ectICDICTR,icddrContro11erimp1ementationICDISR2:0InterruptsecurityICDISER2:0,1CDICER2:0Interruptset-enab1eandc1ear-enab1eICDISPR2:0,ICDICPR2:0Interruptset-pendingandc1ear-pendingICDABR2:0InterruptactiveICDIPR23:0)In
6、terruptpriority,8-bitfie1ds.On1ytheupper7bitsofeach8-bitfie1darewritab1e;the1owestbitisa1ways0.ThismeanstheAPSoCsupports128priority1eve1s,a11evenva1ues.ICDIPTR23:0Interruptprocessortargets,8-bitfie1ds.ICDICFR5:0Interruptsensitivitytype12-bitfie1ds(1eve1edgefhand1ingmode1)PPIandSPIStatusPP1STATUSPPIs
7、tatus:CorrespondstoICDISR01ICD1SERO,ICDICER0,ICDISPR0,ICD1CPRO,andICDABRfOJregisters(security,enab1e,pendingandactive).SPI.STATS2:1SPIstatus:CorrespondstoICD1SR2:111CDISER2:11ICD1CER2:111CD1SPR2:111CD1CPR2:11andICDABR2r1registers(security,enab1e,pendingandactive).SoftwareGeneratedInterrupts(SGI)ICDS
8、GIRSoftware-generatedinterruptsDisab1eWriteAccesses(S1CRregister)APU.CTR1CFGSDISAB1Ebitdisab1essomewriteaccesses1 .中断分配器(ICD寄存器):1)ICDDCR:(0xF8F01000)ICD分配控制寄存器,控制开启或者关闭中断配置。2) ICDICFR:ICD配置寄存器。配置中断触发模式(高低电平),共6个寄存器,分别是ICDICFR0-ICDICFR5(0xF8F01C00-0xF8F01C14),每个寄存器32位,占4个字节,每个寄存器的位意义不一样,每2位代表一个中断,32
9、位x62=96,正好包括所有中断,3) ICDIPR:(0xF8F01400-0xF8F0145C)ICD中断优先级寄存器,共24个寄存器,ICDIPR0-ICDIPR23,每个寄存器32位,占4个字节,每8位代表一个中断,32位x248=96,正好包括所有中断。4) ICDIPTR:(0xF8F01800-0xF8F0185C)ICDCPU接口选择寄存器,配置CPU接口选择(CPUOcpu1),包括24个寄存器,ICD1PTR0-ICDIPTR23,每个寄存器32位,占4个字节,每8位代表一个中断,32位x248=96,正好包括所有中断。*5)ICDICER:中断不使能寄存器,*3个寄存器,
10、ICDICER0-ICDICER2(0xF8F01180-0xF8F01888),每个寄存器32位,占4个字节,每位代表一个中断,32位x3:96,正好包括所有中断。写1表示不使能(屏蔽)。*6)ICDISER:中断使能寄存器,*3个寄存器,ICDISER0-ICDISER2(0xF8F01100-0xF8F01108),每个寄存器32位,占4个字节,每位代表一个中断,32位x3=96,正好包括所有中断。写1表示使能。7)ICDICPR:清除中断等待寄存器。3个寄存器,ICD1CPR0-ICDICPR2(0xF8F01280-0xF8F01288),每个寄存器32位,占4个字节,每位代表一个中
11、断,32位x3=96,正好包括所有中断。写1表示清除中断等待状态。寄存器地址中断号IcdicfroIcdicfriICDICFR2ICDICFR3ICDICFR4ICDICFR50xF8F01C000xF8F01C040xF8F01C080xF8F01C0C0xF8F01C100xF8F01C14#0-#15#27-#31#32-#47#48-#63#64-#79#80-#95(16-26保留)(36保留)(93/94/95保留)2.中断控制器(IeC寄存器):1) ICCPMR:(0xF8F00104)中断优先级屏蔽寄存器,设置CPU的中断优先级。(与ICD的中断优先级比较。比写到这个寄存器
12、的优先级值大的,cpu可以处理)Xi1_0ut32(0xF8F00104,OXF0);设置cpu的中断优先级为FO02) ICCICR:(0xF8F00100)ICCCPU接口配置寄存器,配置CPU接口。使能某个中断,比如IRQ:WriteReR(OXF8F00100,0x07)即使处理器能接收IRQ,使能中断信号连接到处理器。11)ATA寄存港仝Figure14-2:GPIOChanne1一应G“,腑j;/管是S逑选输;GPIO中断源配置所有GP1O共享一个中断(#52,bank1),必须在软件上检查IN1MASK和INT,STT的值判断是哪个GP1o引发了中断。1. INT_MASK(OX
13、EOoOA20C):中断屏蔽寄存器,只读,读取该寄存器的值可以显示哪些位被屏蔽和没有屏蔽(即使能)。2. INT_ENT(0xE000A210-):中断使能寄存器(4个bank,4个寄存器)。写1,前应的引脚中断功能开启,即使能。3. INT_DIS(OXEOooA214):屏蔽寄存器(4个bank,4个寄存器)。写1对应的包脚中断屏蔽。4. INTSTAT(0xE000A18-):中断状态寄存器(4个bank,4个寄存器)。每一位代表对应的引脚上是否发生中断事件,中断发生时,该引脚的中断标志位为1。如果对该位写1,清除该引脚的中断标志,写O无操作。5. INT_TYPE(0xE000A21C-):中断类型寄存器(4个bank,4个寄存器)。写1代表边沿触发中断,写0代表电平触发中断。6. INT_PO1ARITY(0xE000A220-):中断极性寄存器,控制中断的触发条件(4个bank,4个寄存器)。写1代表高电平或者上升沿触发,写0代表低电平或者下降沿触发。7. INT_ANY(0xE000A224-):中断边沿触发类型设置寄存器(4个bank,4个寄存密)。写1代表上升沿和下降沿同时触发,写。代表单边沿触发中断,只在INTJrYPE设置为边沿触发中断(写1)时有效。