s3c2410中断控制器

合集下载

第7章S3C2410中断

第7章S3C2410中断
嵌入式系统设计
南昌大学信息工程学院
中断方式控制的I/O操作步 骤
南昌大学
NANCHANG UNIVERSITY
中断源及其识别方法
• 嵌入式系统中,需要采用中断控制方式 的I/O端口或部件有许多,如S3C2410芯 片中就有56个中断源。而通常微处理器 能够提供的中断请求信号线是有限的, 如ARM920T核提供给外部的中断请求 信号线仅有IRQ和FIQ两根。因此,当有 中断产生时,微处理器就必须通过一定 的方式识别出是哪个中断源发来的请求 信号,以便转向其对应的中断服务程序 例程,这就是中断源的识别。
嵌入式系统设计
南昌大学信息工程学院
南昌大学
NANCHANG UNIVERSITY

• 中断的形象示意:
嵌入式系统设计
南昌大学信息工程学院
南昌大学
NANCHANG UNIVERSITY
· 初始化微处理器中用于中断方式的寄存器,开放中 断。 · I/O端口或部件完成数据操作后并产生中断请求信 号。 · 当中断请求信号有效时,微处理器可能处在不可中 断状态。等到微处理器允许中断时,微处理器就 保存当前状态,停止它现行的操作并开始进行中 断源的识别。 · 在识别出优先级最高的中断源后,微处理器转到对 应的中断服务例程入口,并应答中断,I/O端口 或部件收到应答信号后,撤消其中断请求。 · 微处理器读入或写出数据,当中断服务例程结 束后,回到原来的被中断程序处继续执行。
嵌入式系统设计
南昌大学信息工程学院
南昌大学
NANCHANG UNIVERSITY
中断未决寄存器
嵌入式系统设计
• INTPND寄存器是32位寄存器,寄存器中的每一位 对应一个中断源。只有未被屏蔽且具有最高优先 级、在源未决寄存器中等待处理的中断请求可以 把其对应的中断未决位置1。因此,INTPND寄存 器中只有一位可以设置为1,同时,中断控制器 产生IRQ信号给ARM920T核。在IRQ的中断服务例 程里,设计者可以读取该寄存器,从而获知哪个 中断源被处理。 • 当INTPND寄存器的一个未决位被设置为1,只要 ARM920T核内部的状态寄存器PSR中的I标志和F标 志被清零,对应的中断服务例程就可以开始执行 。INTPND寄存器是可读写的,在中断服务例程里 面必须清除中断未决位。 南昌大学信息工程学院

S3C2410简介

S3C2410简介
ufstatxfifo状态寄存器umstatymodem状态寄存器utxhx发送缓冲区寄存器urxhx接收缓冲区寄存器ubrdivx波特率因子寄存器ulconx线控制寄存器uconx控制寄存器ufconxfifo控制寄存器umconymodem控制寄存器utrstatxtxrx状态寄存器uerstatx错误状态寄存器uart的操作模式数据收发模式红外模式自动流控模式loopback模式自动流控模式s3c2410的uart0和uart1都可以通过各自的nrts和ncts信号来实现自动流控
实用精品课件PPT
12
实用精品课件PPT
13
2.7.3 存储器控制器(续2)
与存储器有关的寄存器主要有: (1) 总线宽度和等待控制寄存器BWSCON ; (2) 组控制寄存器BANKCONn ; (3) REFRESH控制寄存器; (4) BANKSIZE控制寄存器; (5) SDRAM模式控制寄存器MRSRB6,MRSRB7 。
NAND Flash用复杂的I/O口来串行地存取数据,各个产品或
厂商的方法各不相同。8个引脚用来传送控制、地址和数据信息。
所 有 Flash 器 件 都 受 位 交 换 现 象 的 困 扰 , 此 问 题 更 多 见 于
NAND Flash。必须采用错误检测/错误更正(EDC/ECC)算法确保
可靠性。
— 可通过软件选择大小端 — 地址空间:每个Bank 128Mbytes (总共 1GB) —除 bank0 (16/32-bit) 外,所有的Bank都可以通过编程选择总线宽度 = (8/16/32-bit) — 共 8 个banks
前6个Bank用于控制 ROM, SRAM, etc. 最后2个Bank用于控制 ROM, SRAM, SDRAM, etc . — 7个Bank固定起始地址; — 最后一个Bank可调整起始地址; — 最后两个Bank大小可编程; —所有Bank存储周期可编程控制。

ARM微处理器 S3C2410的简介

ARM微处理器 S3C2410的简介

ARM微处理器 S3C2410的简介1.1 ARM微处理器的介绍1)ARM微处理器的工作状态和工作模式从编程的角度看,ARM微处理器的工作状态有两种,可在两种状态之间切换:第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。

2)ARM微处理器支持7种运行模式,分别为:用户模式(USR):ARM处理器正常程序执行的模式。

快速中断模式( FIQ ):用于高速数据传输或通道处理用于快速中断服务程序。

当处理器的快速中断请求引脚有效,且CPSR(6位)中F位为0时(开中断),会产生FIQ异常。

外部中断模式( IRQ ):用于通用的中断处理,当处理器的外部中断请求引脚有效,且CPSR(7位)中I位为0时(开中断),会产生IRQ异常。

系统的外设可通过该异常请求中服务。

特权模式或管理员模式(SVE):操作系统使用的保护。

执行软件中断SWI 指令和复位指令时,就进入管理模式,在对操作系统运行时工作在该模式下。

1.2 S3C2410微处理器1.2.1 概述S3C2410是韩国三星公司的一款基于ARM920T内核的16/32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用。

运行的频率可以达到203MHz。

ARM920T核由ARM9TDMI,存储管理单元(MMU)和高速缓存三部分组成。

其中MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache 组成。

ARM920T有两个协处理器:CP14和CP15。

CP14用于调试控制,CP15用于存储系统控制以及测试控制。

ARM920T体系结构框图图2-1 ARM920T体系结构框图1.2.2 S3C2410微处理器的结构S3C2410内部结构原理内部原理框图如下:图2-2S3C2410内部结构原理ARM 微处理器中共定义了37个编程可见寄存器,每个寄存器的长度均为32位。

嵌入式ARM-S3C2410

嵌入式ARM-S3C2410

1、S3C2410/S3C2440芯片的内部结构S3C2410采用ARM920T核,而ARM920T又集成了ARM9TDMI,属于高档32位嵌入式微处理器。

内部具有分离的16KB大小的指令Cache和16KB大小的数据Cache。

同时采用哈佛体系结构,程序存储器和数据存储器分开,分别有各自的存储管理部件MMU。

采用五级指令流水线。

使用ARM公司特有的AMBA 总线,对于高速组件采用AHB总线,而对于低速外设接口采用APB总线。

连在AHB上的组件系统总线控制器、电源管理单元、PLL(锁相环)时钟发生器、内部SRAM、外部存储器控制器、LCD控制器、DMA控制器、中断控制器;连接到APB上的硬件组件有三通道UART、一个多主IIC总线控制器、一个IIS总线控制器、五通道PWM定时器和一个内部定时器、一个看门狗定时器WDT、通用I/O口(GPIO)、具有日历功能的实时时钟RTC、八通道10位ADC、两个同步串行口SIO接口及SDI/MMC等。

S3C2440在S3C2410基础上增加了视频和音频接口。

2、存储器控制组件S3C2410存储器控制组件包括存储器控制器、总线控制器、外部主控器、NAND Flash控制器等。

存储器控制器提供访问外部存储器所需的存储器控制信号,支持大/小端模式,地址空间1GB3、时钟及电源管理组件在时钟控制器、电源控制器以及USB控制器的控制之下,产生不同需求的时钟信号,如:MPLL(锁相环时钟)输入时钟可由引脚OM[3:2]来选择是采用外部时钟EXTCLKA还是外界晶体利用内部振荡电路输出的时钟。

电源管理模块具有正常模式、、慢速模式、空闲模式、掉电模式。

正常模式下,当慢速控制位SLOW_BIT = 1时进入慢速模式,当休眠控制位IDLE_BIT = 1时进入休眠模式,当掉电控制位POWER_BIT = 时进入掉电模式。

在掉电模式和休眠模式下,只要有任意一个外部中断EINT【0:23】或RTC时钟发生中断,均将返回到正常模式。

s3c2410a第十四章-中断控制器

s3c2410a第十四章-中断控制器

第十四章 中断控制器概述S3C2410A中断控制器可以接受来自56个中断源的请求。

这些中断源是有内部外设(DMA控制器、UART、IIC 以及其他外设)供给的。

在这些中断源中,UARTn和EINTn中断是经过或之后送入中断控制器的。

当接收到来自内部外设和外部中断引脚的多路中断请求时,中断控制在仲裁程序之后请求ARM920T核心的FIQ或IRQ中断。

仲裁程序依赖于硬件优先逻辑,其结果被写入中断未决寄存器,让用户知道在众多的中断源中那个中断发生。

图14-1 中断处理过程图中断控制器操作程序状态寄存器(PSR)的F位和I位如果在ARM920T CPU内的PSR的F位设置为1,则CPU不接收来自中断控制器的快速中断请求(FIQ)。

同样地,如果PSR的I位设置为1,则CPU不接收来自中断控制器的中断请求(IRQ)。

所以通过清除PSR的F 位和I位以及设置INTMSK相应位为0,,中断控制器才能接收中断。

中断模式ARM920T有两种中断模式:FIQ或IRQ。

每个中断源决定那种模式用于中断请求。

中断未决寄存器S3C2410A有2个中断未决寄存器:源未决寄存器(SRCPND)和中断未决寄存器(INTPND)。

这些未决寄存器表明是否中断请求正在等待处理(未决的)。

当中断源请求中断服务,SRCPND寄存器相应位设置为1,且同时在仲裁程序之后,INTPDN单独的一个位也被自动置位(相应位也被置1)。

如果中断中断被屏蔽,SRCPND 寄存器相应位置1,但这不能引起INTPND寄存器中位发生改变。

当INTPND寄存器中一个未决位置1时,只要I标志和F标志为0,则中断服务例行程序就开始执行。

SRCPND和INTPND寄存器可以进行读写,所以服务例行程序必须先通过向SRCPND寄存器相应位写入1来清除未决条件,然后用同样的方法来清除INTPND的未决条件(先向SRCPDN相应位写入1,然后向INTPND相应位写入1,以清除中断标志)。

S3C2440的中断控制

S3C2440的中断控制
运行时间
系统程序 处理器 中断响应 中断处理 中断请求 外设设备 正常工作 中断返回
系统程序 中断响应 中断返回 中断处理 中断请求 正常工作 正常工作
当 CPU 在执行现行程序中启动外部设备之后, 不需要象程序控制方式那样反复查询外部 设备的状态,而能够与外部设备并行工作。当外部设备的数据准备就绪后,主动向 CPU 发出 中断请求。CPU 接到外部设备的中断请求后,如果没有更加紧急的任务(如 DMA 服务等), 就暂停正在执行的现行程序,转去执行中断服务程序,为外部设备服务。当中断服务完成之 后,再返回到原先的现行程序中继续执行。 当有多台外部设备需要同时工作时, CPU 可以在不同时刻根据需要分别启动这些外部设 备, 被启动的外部设备能够与 CPU 分别同时独立工作。 当某一台外部设备的数据准备就绪时, 就向 CPU 发出中断服务请求。如果有多台外部设备同时要求中断服务,CPU 能够根据这些外 部设备的优先级从高到低分别响应这些中断请求,为外部设备服务。 2) 能够处理例外事件 计算机在运行过程中,可能发生例外事件,如电源掉电、硬件故障、运算溢出、地址越 界、非法指令等。依靠程序控制方式根本不可能处理好这些例外事件,因为 CPU 不可能一直 不间断地查询是否有电源掉电,是否发生了硬件故障,如果这样,计算机就什么事也干不了
RTC 闹钟中断
ARM 体系结构与编程参考资料 V1.01
INT_SPI1/[29] INT_ERR0/SUBSRCPND[2] INT_UART0/[28] INT_IIC/[27] INT_USBH/[26] INT_USBD/[25] INT_NFCON/[24] INT_UART1/[23] INT_SPI0/[22] INT_SDI/[21] INT_DMA3/[20] INT_DMA2/[19] INT_DMA1/[18] INT_DMA0/[17] INT_LCD/[16] INT_UART2/[15] INT_TIMER4/[14] INT_TIMER3/[13] INT_TIMER2/[12] INT_TIMER1/[11] INT_TIMER0/[10] INT_WDT_AC97/[9] INT_TICK/[8] nBATT_FLT/[7] INT_CAM/[6] INT_CAM_P/SUBSRCPND[12] INT_CAM_C/SUBSRCPND[11] EINT23/EINTPND[23] EINT22/EINTPND[22] EINT21/EINTPND[21] EINT20/EINTPND[20] 外部中断 EINT8_23/[5] EINT19/EINTPND[19] EINT18/EINTPND[18] EINT17/EINTPND[17] EINT16/EINTPND[16] EINT15/EINTPND[15] EINT14/EINTPND[14] INT_AC97/SUBSRCPND[14] INT_WDT/SUBSRCPND[13] INT_ERR2/SUBSRCPND[8] INT_TXD2/SUBSRCPND[7] INT_RXD2/SUBSRCPND[6] INT_ERR1/SUBSRCPND[5] INT_TXD1/SUBSRCPND[4] INT_RXD1/SUBSRCPND[3] INT_TXD0/SUBSRCPND[1] INT_RXD0/SUBSRCPND[0]

S3C2410的中断异常处理机制

S3C2410的中断异常处理机制
异 常 中断 处理 程 序退 出时 ,则 要恢 复 程 序 的处 理器 状 态 ;二是 返 回到发 生 断 。图 中 的R q eto re wt b— eu s suc s(i s hu 被 中断 的程序 的执 行 现场 。 异 常 中断 的指 令 的下 一 条指 令 处继 续 rgse) 用 于 表 示 I T R O eitr N _ XD 、
IQ R
F O I
图1 S C 4 0中断 处 理 流 程 3 21
1 6 电 子 元 器 件 主 用 20 . W W C ia C . t 1 0 68 W .hnE Dn e
维普资讯
Ne De ie w v c
SCN R P D寄存 器 中相 应 位 被置 1 ,如果 此 中 断 没 有 被 I T K寄 存 器 屏 蔽 、 N MS
完 当前 指 令 ,那 么将 跳 转 到相 应 的异 行 。 C N R LE 章节。 O T OLR
常 中断处 理程 序 处执 行 。而 当异 常 中
在接 收到 中断Βιβλιοθήκη 求 以后 , A RM处 S B RC N U S P D和S C N R P D寄 存 器 可
断 处理 程 序执 行 完成 后 ,程 序 将 返 回 理 器 内核 会 自动 执行 以上 四步 ,而 程 用 于 表 明有 哪些 中断 被触 发 ,并 正在 C 到 发生 中断 的指 令 的下 一 条指 令处 执 序计 数器 P 总 是跳 转 到相 应 的固定 地 等 待 处 理
作:
¥ C 41 的 中断 处 理 流 程 32 0
在¥ C 4 0中 ,对 中 断 的 处 理 主 321
()保 存 处 理 器 当 前 状 态 、 中断 1

s3c2410中断控制工作原理和编程

s3c2410中断控制工作原理和编程

存在的问题S3C2410中断控制器工作原理一般说来cpu只有一个或两个外部中断输入管脚,但是s3c2410这个soc有56个外部中断源头,这56个外部中断源头是通过说s3c2410内部的中断控制器来管理的,中断控制器的主要工作就是管理外部中断源:开关某个中断源、中断优先级排队、向cpu发出中断请求信号。

ARM的异常中断类型在嵌入式系统中外部设备和cpu通信主要是靠中断机制来实现的。

中断功能可以解决CPU 内部运行速度远远快于外部总线速度而产生的等待延时问题。

ARM提供的FIQ和IRQ异常中断用于外部设备向CPU请求中断服务,一般情况下都是采用IRQ中断。

1313013130本次实验就是通过INTMASK(4A000008)来断开或闭合次“开关”从而达到是否屏蔽次外部中断对以上寄存器的简介:(重点) 1SRCPND ――源中断指示寄存器SRCPND 寄存器32位中的每一位对应着一个中断源,每一位被设置为1,则相应的中断源产生中断请求并且等待中断被服务。

因此,这个寄存器表明了哪个中断源在等待中断请求被处理。

注意,SRCPND 寄存器的每一位是由中断源自动设置的,而不管INTMSK 寄存器中的屏蔽位是否置1。

另外,SRCPND 寄存器不影响中断控制器的优先级逻辑。

在指定中断源的中断服务程序中,SRCPND 寄存器相对应的位必须被清除,这样才可以正确响应来自同一中断源的中断请求。

如果从ISR 返回而没有清除相应的位,也就是SRCPND 寄存器中的对应的位还是1,那么就会一直响应这个中断请求。

SRCPND 中相应的中断位清除的时间依赖于用户的需求,如果想要从同一中断源接收另一次有效的中断请求,你在第一次就应该清除相应的位,并且使能中断。

(怎么理解?) 用户可以通过向SRCPND 寄存器的相应位写“1”(不是写0 吗?因为s3c2410设计成写1就有清0的功能),这样可以清除该位。

INTPND――中断请求寄存器中断请求寄存器32位中的每一位对应着相应的中断请求,经过优先级逻辑后,INTPND 寄存器只能有一位被设置为1,并且向ARM产生中断请求。

S3C2410中断处理

S3C2410中断处理

S3C2410中断处理在介绍2410的中断处理之前,我们不得不先看看先把ARM的异常向量表(Exception Vectors),下面对异常向量表(Exception Vectors),做一个简单的介绍:ARM的异常向量表一般存放在0x00000000处,ARM920T能处理有7个异常,他们分别是:Reset(复位),Undefined instruction,Software Interrupt,Abort 舍弃(prefetch),Abort (data),IRQ,FIQ下面是系统源码片段:上面这部分片段一般出现在一个名叫“head.s”的汇编文件里,“b Handle_Reset”这条语句就是系统上电之后运行的第一条语句。

因为上电后CPU会从SDRAM的0x00000000处取第一条指令并执行。

上所示会放在0x00000000地址处,以后每当系统有异常出现,则CPU会根据异常号,从内存0x00000000地址处开始查中断向量表并做相应的处理,比如系统触发了一个IRQ异常,IRQ为6号异常,则CPU将把PC指向0x00000000地址处运行,调用中断服务程序。

S3C2410芯片可以接收56个中断源,产生32个中断请求。

这些中断源来自两部分:内部外设,如DMA控制器,UA RT等和外部引脚线。

A RM920T具有两种类型的中断模式:FIQ和IRQ,通过判定优先级产生IRQ或FIQ中断。

如果在ARM920T的CUP中的PSR(程序状态寄存器)的控制位F位置1,则CPU从中断控制器中不接受FIQ中断,如果在A RM920T的CUP中的PSR (程序状态寄存器)的控制位I位置1,则CPU从中断控制器中不接受IRQ中断,因此中断控制器通过清除F-bit位或I-bit位产生中断。

S3C2410的中断异常处理模块有以下寄存器构成:∙ SRCPND,∙INTMODE,∙INTMSK,∙PRIORITY,∙INTPND,∙INTOFFSET,∙SUBSRCPND,∙INTSUBMSK。

S3C2410的中断异常处理机制

S3C2410的中断异常处理机制

S3C2410的中断异常处理机制发表日期:1/12/2007 2:33:44 PM 来源:《电子元器件应用》S3C2410的中断异常处理机制摘要:ARM处理器在嵌入式系统中的地位越来越重要,S3C2410作为ARM9微处理器家族中的一员,应用已十分广泛。

文中简述了ARM处理器的中断异常种类、响应和返回过程;重点讨论了S3C2410中断控制器的结构和处理机制,以及对IRQ中断的具体处理流程,最后给出了详细的参考代码。

关键词:ARM9微处理器;S3C2410;IRQ;中断异常处理王皓平一帆西安电子科技大学通信工程学院引言在ARM微处理器的编程,特别是系统初始化代码的编写中,通常需要实现中断的响应、解析跳转和返回等操作,以便支持上层应用程序的开发。

中断处理的编程实现需要深入了解ARM 内核和处理器本身的中断特征,以便设计一种快速简便的中断处理机制。

当异常中断发生时,若系统执行完当前指令,那么将跳转到相应的异常中断处理程序处执行。

而当异常中断处理程序执行完成后,程序将返回到发生中断的指令的下一条指令处执行。

在进入异常中断处理程序时,要保存被中断的程序的执行现场。

而从异常中断处理程序退出时,则要恢复被中断的程序的执行现场。

ARM 体系中通常在存储地址的低端固化了一个32字节的硬件中断向量表,可用来指定各异常中断及其处理程序的对应关系。

当一个异常出现以后,ARM 微处理器会执行以下几步操作:(1)保存处理器当前状态、中断屏蔽位以及各条件标志位;(2)设置当前程序状态寄存器CPSR 中相应的位;(3)将寄存器lr_mode设置成返回地址;(4)将程序计数器(PC)值设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。

在接收到中断请求以后,ARM处理器内核会自动执行以上四步,而程序计数器PC总是跳转到相应的固定地址。

从异常中断处理程序中返回下面的两个基本操作:一是恢复被屏蔽的程序的处理器状态;二是返回到发生异常中断的指令的下一条指令处继续执行。

讲稿-09-S3C2410A的中断机制

讲稿-09-S3C2410A的中断机制

ldr r8, =HandleEINT0 ;将中断向量表的首地址送入r8 add r8, r8,r9,lsl #2 ;r8<-r8+r9*4,因为每一项占用了四个字节,所 以r8就是当前中断向量的地址 ldr r8, [r8] ;获取了中断向量 str r8, [sp,#8] 将中断向量放入栈中 ldmfd sp!,{r8-r9,pc} ;通过出栈的方法使得PC为中断向量地址,且 恢复了r8和r9的值,从而内容完整地跳向对应中 断服务程序
中断向量表
;IntVectorTable HandleEINT0 HandleEINT1 HandleEINT2 HandleEINT3 HandleEINT4_7 HandleEINT8_23 HandleRSV6 HandleBATFLT # # # # # # # # 4 4 4 4 4 4 4 4
中断异常处理程序举例
sub sp, sp, #4 ;栈顶向下一个单元,在栈中给PC挪出地方 stmfd sp!, {r8-r9} ;将r8-r9入栈,后面要使用这两个寄存器 ldr r9, =INTOFFSET ;将中断偏移值寄存器的地址送入r9 ldr r9, [r9] ;这个操作后r9就是当前中断的中断偏移值
4 4 4 4 4 4 4 4 4 4 4
HandleDMA2 HandleDMA3 HandleMMC HandleSPI0 HandleUART1 HandleRSV24 HandleUSBD HandleUSBH HandleIIC HandleUART0 HandleSPI1 HandleRTC HandleADC
和中断控制相关的寄存器
S3C2410A的中断控制器包括6类寄存器: 中断源状态寄存器 中断模式寄存器 中断屏蔽寄存器 优先级寄存器 中断状态寄存器 中断偏移寄存器

S3C2410-PWM定时器分析

S3C2410-PWM定时器分析


0001:选择timer0
0010:选择timer1

0011:选择timer2
0100:选择timer3

0101:选择timer4
011X:保留
• MUX4~ MUX0---timer4~timer0分频值选择
• 0000:1/2
0001:1/4
• 0010:1/8
0011:1/16
• 01XX:选择外部TCLK0、1(对timer0、1是选TCLK0,对timer4、3、2 是选TCLK1)
12.6
S3C2410 Timer部件概述
5个Time部件最核心的东西仍然是一个脉冲 减一计数器:
n=0,1,2,3 TCNTBn
TCMPBn
TCMPBn*比较器
宽度
TCNTn
TCMPn 定时中断
周期
TCNTBn*计数时钟周期
输出的脉冲的宽度 可以调节,所以称 为PWM脉冲
Toutn
黄颜色部分为Timer4的模块, 因为其没有脉冲输出,仅仅 是一个普通的定时器而已
• TR4~TR0---TIMER4~TIMER0运行控制位

0:停止
1:启动对应的TIMER
• TO3~TO0--- TIMER4~TIMER0输出控制位

0:正相输出
1:反相输出
• DZE---TIMER0死区操作控制位

0:禁止死区操作
1:使能死区操作
12.17
定时器产生PWM操作例子
(1)按照前面初始化定时器;设置TCNTBn=160(50+110),TCMPBn=110;手 动装入初值后,又重设TCNTBn=80,TCMPBn=40,自动重装初值开启;

嵌入式10_S3C2410处理器中断控制器

嵌入式10_S3C2410处理器中断控制器

据ARM系列中断处理的特点,各种异常中断对应
于ARM系列的不同工作模式 。
1、S3C2410的中断类型
2、异常中断的响应过程和返回过程
(1)异常中断响应过程
1) 保存CPSR到将要执行的异常中断的SPSR; 2)设置CPSR的值:设置CPSR相应位的值使处理器进 入特定的处理器模式,按要求屏蔽中断; 3)设置LR寄存器:将中断相应模式的LR寄存器的值设 置为异常中断的返回地址; 4)处理程序计数器PC:将PC值设为相应的中断向量的
*****************************************/
void EnableIrq(int bit) { rINTMSK |= ~(bit); }
(5)中断偏移寄存器(INTOFFSET)
中断偏移寄存器中的值显示了INTPND寄存器中哪个
IRQ模式的中断请求。这个位在清除SRCPND和INTPND 后被自动清除。
4、中断控制寄存器
4、S3C2410的中断控制寄存器
#define rSRCPND #define rINTMOD #define rINTMSK #define rPRIORITY #define rINTPND (*(volatile unsigned *)0x4a000000) (*(volatile unsigned *)0x4a000004) (*(volatile unsigned *)0x4a000008) (*(volatile unsigned *)0x4a00000a) (*(volatile unsigned *)0x4a000010)
(1)源中断申请寄存器( SRCPND)
(1)源中断申请寄存器( SRCPND)
(2)中断模式寄存器(INTMOD)

S3C2410中文手册第14章 中断控制器

S3C2410中文手册第14章 中断控制器

第十四章中断控制器概述S3C2410中断控制器接收56个中断源的中断请求。

中断源由如DMA控制器、UART、IIC等内部外设提供。

这些中断源中,UARTn和EINTn中断是以或逻辑输入到中断控制器的。

当从内部外设和外部中断请求引脚接收到多个中断请求时,经过中断仲裁后,中断控制器向ARM920T请求FIQ或者IRQ中断。

仲裁过程与硬件优先级有关,仲裁结果写入中断请求寄存器。

中断请求寄存器帮助用户确定哪个中断产生。

中断控制器操作程序状态寄存器PSR中的F位和I位如果PSR中的F位被置1,CPU不接收FIQ快速中断,同样如果I位PSR被置1,CPU不接收IRQ中断,因此中断控制器能够通过将PSR的F和I位和相应的INTMSK中的位清零来接收中断。

中断模式ARM920T有两种中断模式:FIQ和IRQ。

在中断请求时所有的中断源决定使用哪个模式。

中断请求寄存器S3C2410有两种中断请求寄存器:源请求寄存器(SRCPND)和中断请求寄存器(INTPND)。

这些请求寄存器揭示了一个中断是否正在请求。

当中断源请求中断服务时SRCPND寄存器中的相应位肯定被置1,然而,中断仲裁之后则只有INTPND寄存器的某1位被自动置1。

即使该中断被屏蔽,SRCPND寄存器中的相应位也会被置1,但是INTPND寄存器将不会改变。

当INTPND寄存器的某位被置1,且I位或者F位清零时中断服务即开始。

SRCPND和INTPND寄存器能够被读和写,因此服务函数必须通过向SRCPND和INTPND中相应位写入“1”来清除中断请求条件。

中断屏蔽寄存器INTMSK通过中断屏蔽寄存器的哪个屏蔽位被置1可以知道哪个中断被禁止。

如果INTMSK的某个屏蔽位为0,此中断将会被正常服务。

如果中断源产生了一个请求,SRCPND中的源请求位被置位,即使相应屏蔽位为1。

中断源下表列出了中断控制器支持的56个中断源中断优先级产生模块其中32个中断请求的优先级逻辑有由个rotation based仲裁位组成:6个一级仲裁位和一个二级位,如图14-2所示。

ARM嵌入式C编程标准教程第四章S3C2410的中断系统

ARM嵌入式C编程标准教程第四章S3C2410的中断系统

2014年福建厦门中考满分作文:老巷的距离老巷的距离黄昏,岁月的老巷。

多少人在这寻找散落的过往。

年代更替,一定有些什么被我遗忘。

否则夕阳的剪影不会那么让人神伤。

深巷内,金属碰击发出最原始的音,踏着饱经风霜的青石板,来到面前--叮……叮叮……叮小时候,住在巷尾,一听见买麦芽糖独特的吆喝声,就再也坐不住了,满脑子尽是卖糖的老人和他的麦芽糖。

老人话不对,也不常吆喝。

穿着靛青的衣,瘦小,皮肤黝黑,像从旧画里走出来的人。

他的糖担绝对是幅旧画:担两头各有一方正的木箱,箱里装的正是麦芽糖。

老人手持一柄铁锤和一长方弧形刀片--或许因饱受糖浆浸渍,铁质部分散发着白色光感。

挑糖担的老人走街串巷,边走边敲,诱惑着我们,带给我们幸福与快乐。

只要听见那独特的吆喝孩子们立即飞奔到家,拿出早已备下的破烂出来。

这是老人身后便多了一条长长的尾巴,打闹着来到巷口。

坐在凤凰木下换那甜腻的糖块。

我跑得慢,也笨拙,常常在长满青苔的石板上滑倒,惹得一身泥浆,竟也未哭,咬着牙,向巷口奔去。

真正108块砖,对于常往来于巷口与巷尾的我早已了然于心。

可每当我气吁吁从尾跑到头,孩子们早早就散去,留下的只有树下的老人和与夕阳一样火红的凤凰花。

刚才奔跑摔倒的疼似涌上心头,我低声啜泣着。

休息的老人,看着满身泥巴的我,神秘兮兮地招手叫唤我来,我跑去,掌心一打开,里面是一小方用红布裹着的麦芽糖,躺在几乎裂成地图的手掌里。

在夕阳下,折射出耀眼的金黄。

伸出舌头,小心舔,那是掌心的甜,是一丝一缕的填满心的。

一条老巷,一个老人,一块方糖。

已是黄昏,晚归的燕子在天边划过一抹精灵般的呢喃,很快就是万家灯火了。

金属碰击发出的最原始的声音,也许它踏过的不仅仅是一百零八块青石板--叮……叮叮……叮22014年福建厦门中考满分作文:今天与明天的距离今天与明天的距离我们命定的目标与道路不是受苦也不是享乐,而是行动在每一个明天都要比今天更前进一步--胡费罗当蜘蛛网无情地查封了你的炉台,灰烬的余烟叹息着末日的悲哀,你是否痛恨如今。

S3C2410的PWM定时器中断实验

S3C2410的PWM定时器中断实验

实验6 S3C2410 PWM定时器中断实验一、实验目的掌握S3C2410 PWM定时器的工作原理和定时时间的计算方法,掌握和PWM定时器有关寄存器的使用方法,会用C语言对PWM定时器进行初始化编程,理解PWM定时器中断的触发过程,熟练掌握和中断相关寄存器的使用以及中断服务函数的编程方法。

二、实验内容UP-NETARM2410实验箱上两个LED数码管的控制地址为0x08000110和0x08000112。

借助于PWM定时计数器可实现简单的计数秒表。

由于只有两位数码管,秒表计到99秒后,从0开始重新计数。

同时三个发光二极管每隔一秒闪烁点亮。

三、PWM定时器相关知识S3C2410A具有5个16位的定时器,其中定时器0~3具有PWM波发生功能,即可以输出PWM波,定时器4没有外部输出。

定时器工作频率为PCLK/(预分频值+1)/分频值,在下面的工程中,将使用定时器1,并设置其工作频率为20 kHz,即为:48MHz/(149+1)/16 = 20 kHz所以定时时间为:0x4E20* 20 kHz=1S定时器1的初始化方法如下:首先,设置TCFG0(定时器配置寄存器0,地址为0x51000000)的值为0x95,即定时器1的预分频值为0x95,十进制数为149。

注意:定时器0和1共用同一个预分频值。

然后,设置TCFG1(定时器配置寄存器1,地址为0x51000004)的值为0x30,即定时器1的分频值为16。

其次,设置TCNTB1(定时器1计数寄存器,地址为0x51000018)和TCMPB1(定时器1比较寄存器,地址为0x5100001C)的值为0x4E20和0x4000。

这里没有用到TCMPB1,当TCNTB1减计数到0后,将触发定时器1中断再次,设置TCON(定时器控制寄存器,地址为0x51000008)的值为0xA00,即刷新TCNB1和TCMPB1的值。

最后,设置TCON的值为0x900,启动定时器1。

S3C2410外部中断

S3C2410外部中断

S3C2410外部中断S3C2410有24个外部中断引脚:EINT0~EINT23,但是对于EINT0~EINT3 这4个外部中断而言,使用比较简单;对于其它20个而言,使用稍稍复杂一些。

首先,来看S3C2410的中断控制器,有6个中断裁决器分为2级,第1级5个,第2级1个;第1级的5个裁决器管理32级中断源,在这32级中断源中有2个保留,24级是给内部中断源的,对于24个外部中断只给了6个中断级:EINT0、EINT1、EINT2、EINT3、EINT4~7、EINT8~23,EINT4~EINT7 共享一个中断级,EINT8~EINT23共享一个中断级。

中断控制器中主要的相关寄存器有:INTMSK、SRCPND、PRIORITY、INTPND,还有一个INTMOD。

但是对于外部中断还有几个寄存器:EXTINTn、EINTMSK、EINTPEND等。

对于外部中断EINT0~EINT3由于没有共享,因此外部寄存器中只有EXTINT0和它们有关,进行中断触发电平信号的设置。

但是对于其他的20个外部中断而言,所有上面提到的寄存器都有关系。

实际上对于EINT4~EINT23,实际上可以看作有3级屏蔽,第1级屏蔽是CPSR中的I-Bit和F-Bit,第2级屏蔽是EINTMASK([4:23]每一位对应一个相应的外部中断),第3级屏蔽是INTMSK(Bit4、Bit5);对于EINT0~EINT3而言,只是INTMSK中的Bit0~Bit3,因此在变成初始化时应该要特别注意。

在外部中断有中断请求时,由于EINT4~7、EINT8~23分别共享中断,因此在SRCPND中分别对应Bit4、Bit5,最终导致INTPND中的相应位置1(在任何时刻只能有一个位置1),但是如何分辨这些共享的中断?可以通过查询EINTPEND来进行(Bit4~Bit23分别对应1个外部中断)。

由于在相应中断后在服务例程中应将挂起寄存器中相应的位清0来清除未处理状态,因此对于。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、CPU处理外部事件的方法
CPU运行过程中,如何知道各类外设发生了某些不预期的事件,主要有以下两个方法:
1、查询方式:程序循环地查询各设备的状态并作出相应反应;缺点是占用CPU资源过高,不适合用于多任务系统;
2、中断方式:当某件事发生时,硬件会设置某个寄存器,CPU在每执行完一个指令时,通过硬件查看这个寄存器,如果发现所关注的事件发生了,则中断当前程序流程,跳转到一个固定的地址处理这件事,最后返回继续执行被中断的程序;
二、S3C2410的中断控制器中寄存器的功能
SUBSRCPND 和SRCPND寄存器表明哪些中断被触发了,正在等待处理;
SUBMASK(INTSUBMASK)和MASK(INTMASK)用于屏蔽某些中断;
通过读取INTPND 或 INTOFFSET(2410/2440)来确定中断源;
INTMOD用于设置中断方式(FIQ或IRQ),同一时间,只能有一位被设为1;
PRIORITY用于设置仲裁器中各中断的优先级以及仲裁器中优先级是否可变;
三、S3C2410中断控制器的工作原理
1、Request sources(without sub-register)中的中断源被触发后,SRCPND 中相应位被置1,如果该中断在INTMASK中没有被屏蔽,或者是快速中断的话,将被进一步处理;
2、Request sources(with sub-register)中的中断源被触发后,SUBSRCPND 中相应位被置1,如果该中断在INTSUBMASK没有被屏蔽的话,它在SRCPND中的相应位也被置1,之后的处理就和Request sources(without sub-register)一样了;
3、如果被触发的是快速中断(FIQ),则CPU进入快速中断模式(FIQ Mode)进行处理;
4、对于一般中断IRQ,可能同时有几个中断被触发,未被INTMASK屏蔽的中断经过比较后,选出优先级最高的中断,然后CPU进入中断模式(IRQ Mode)进行处理;
5、中断服务程序可以通过读取INTPND或INTOFFSET来确定中断源,从而执行相应的处理;
四、中断处理前的准备工作
1、设置好中断模式和快速中断模式下的栈;
2、准备好中断处理函数;
(1)异常向量:在异常向量表中设置好当进入中断模式或快速中断模式时的跳转函数,它们的异常向量地址分别为0x0000_0018 、0x0000_001c
(2)中断服务程序(ISR):IRQ、FIQ的跳转函数,最终将调用具体中断的服务函数
(3)清除中断:可以在调用ISR之前清除中断,也可以在调用ISR之后清除中断;
清除中断从源头开始:
1.需要的话,操作具体外设清除中断信号;
2.清除SUBSRCPND、SRCPND中的相应位(往相应位写1即可)
3.清除INTPND中的相应位(往相应位写1即可)
3、进入或退出中断模式或快速中断模式时,需要保存、恢复中断程序的运行环境
(1)对于IRQ,进入和退出的代码如下:
sub lr ,lr,#4 ;计算返回地址
stmdb sp!,{r0—r12,lr} ;保存使用到得寄存器
……;中断处理
ldmia sp!,{r0—r12,pc}^
;中断恢复,^表示将spsr的值赋给cpsr
(2)对于FIQ,进入和退出的代码如下:
sub lr ,lr,#4 ;计算返回地址
stmdb sp!,{r0—r7,lr} ;保存使用到得寄存器
……;快速中断处理
ldmia sp!,{r0—r7,pc}^
;快速中断返回,^表示将spsr的值赋给cpsr
4、根据具体中断设置外设:比如GPIO中断,需要将相应引脚功能设为外部中断、设置中断触发条件(上跳沿触发…),一些中断拥有自己的屏蔽寄存器,还要开启它;
5、对于Request sources(without sub -register)中的中断,将INTSUBMANSK 寄存器中相应位设为0;
6、设置INTMOD、PRIORITY;
7、设置INTMASK;
8、设置CPSR中的I 和F 位,使能IRQ 或FIQ;。

相关文档
最新文档