配色: 字号:
《ARM9嵌入式系统设计基础教程》第3章32BitRISC微处理器S3C2410A
2023-05-24 | 阅:  转:  |  分享 
  
第3章 32 Bit RISC微处理器S3C2410A3.1 S3C2410A简介 3.1.1 S3C2410A内部结构S3C24
10是Samsung公司推出的16/32位RISC处理器,主要面向高性价比、低功耗的手持设备应用。S3C2410有S3C2410X
和S3C2410A两个型号,A型是X型的改进型,具有更好的性能和更低的功耗。为了降低系统的成本,S3C2410A在片上集成了单独的
16KB指令Cache和16KB数据Cache、用于虚拟存储器管理的MMU、支持STN和TFT的LCD控制器、NAND Flash
Boot Loader、系统管理器(片选逻辑和SDRAM控制器)、3通道UART、4通道DMA、4通道PWM定时器、I/O口、R
TC、8通道10位ADC和触摸屏接口、I2C总线接口、I2S总线接口、USB主设备、USB从设备、SD主卡和MMC(Multi M
edia Card,多媒体卡)卡接口、2通道的SPI(Serial Peripheral Interface,串行外围设备接口)以
及PLL时钟发生器。S3C2410A的CPU内核采用的是16/32位ARM920T 内核,同时还采用了AMBA(Advanced
Microcontroller Bus Architecture,先进的微控制器总线体系结构)新型总线结构。ARM920T采用了M
MU,AMBA总线和Harvard高速缓存体系结构,该结构具有独立的16KB指令Cache和16KB数据Cache,每个Cache
都是由8字长的行组成的。S3C2410A提供一组完整的系统外围设备接口,从而大大减少了整个系统的成本,省去了为系统配置额外器件的开
销。S3C2410A集成的片上功能包括: ● 内核电压1.8V/2.0V,存储器电压3.3V,外部I/O电压3.3V;
● 具有16KB的I-Cache和16KB的D-Cache以及MMU; ● 外部存储器控制器(SDRAM控制和片选逻
辑); ● LCD控制器(最大支持4K彩色STN和256K彩色TFT)提供1通道LCD专用DMA; ● 4通道DM
A并有外部请求引脚端; ● 3通道UART(IrDAl.0,16字节Tx FIFO和16字节Rx FIFO)/2通道SPI
; ● 1通道多主设I2C总线和1通道I2S总线控制器; ● 版本1.0SD主接口和2.11兼容版MMC卡协议;
● 2个USB主设接口/1个USB从设接口(版本1.1); ● 4通道PWM定时器和1通道内部定时器; ●
看门狗定时器; ● 117位通用I/O口和24通道外部中断源; ● 电源控制模式有正常、慢速、空闲和电源关断4种
模式; ● 8通道10位ADC和触摸屏接口; ● 具有日历功能的RTC; ● 使用PLL的片上时钟发生器。
S3C2410A的内部结构方框图如图3.1.1所示。图3.1.1 S3C2410A内部结构方框图3.1.2 S3C24
10A的技术特点 S3C2410A具有如下特点:1.体系结构 ● 采用ARM920T CPU内核,具有16/32位RISC
体系结构和强大的指令集,为手持设备和通用嵌入式应用提供片上集成系统解决方案; ● 增强的ARM体系结构MMU,支持WinC
E、EPOC 32和Linux; ● 使用指令Cache、数据Cache、写缓冲器和物理地址TAG RAM减少主存储器带宽
和反应时间对性能的影响; ● ARM920T CPU内核支持ARM调试体系结构; ● 内部采用先进的微控制器总线体
系结构(AMBA)(AMBA2.0,AHB/APB)。2.系统管理器 ● 支持小/大端方式。 ● 地址空间:每ba
nk 128 MB(byte)(总共1GB)。 ● 每个bank支持可编程的8/16/32位数据总线宽度。 ● b
ank0~bank6都采用固定的bank起始地址。 ● bank7具有可编程的bank起始地址和大小。 ● 8个存
储器bank: 一6个用于ROM、SRAM及其他; 一2个用于ROM、SRAM和同步DRAM。 ● 所有的
存储器bank都具有可编程的访问周期。 ● 支持使用外部等待信号来填充总线周期。 ● 支持掉电时的SDRAM自刷新
模式。 ● 支持各种类型的ROM启动(booting),包括NOR/NAND Flash和EEPROM等。3.NAND F
lash Boot Loader(启动装载) ● 支持从NAND Flash存储器的启动。 采用4 KB内部缓冲器用
于启动引导。 ● 支持启动之后NAND存储器仍然作为外部存储器使用。4.Cache存储器 ● I-Cache(16
KB)和D-Cache(16 KB)为64路组相联Cache。 ● 每行8字长度,其中每行带有一个有效位和两个脏位(di
rty bits)。 ● 采用伪随机数或循环替换算法。 ● 采用写直达(Write-through)或写回(Wri
te-back)Cache操作来更新主存储器。 ● 写缓冲器可以保存16个字的数据值和4个地址值。5.时钟和电源管理
● 片上MPLL和UPLL: 一UPLL产生用于USB主机/设备操作的时钟; 一MPLL产生操作MCU的时钟,时钟
频率最高可达266 MHz(2.0V内核电压)。 ● 通过软件可以有选择地为每个功能模块提供时钟。 ● 电源模式包
括正常、慢速、空闲和掉电模式: 一正常模式为正常运行模式; 一慢速模式为不加PLL的低时钟频率模式; 一空闲模式
只停止CPU的时钟; 一掉电模式切断所有外设和内核的电源。 ● 可以通过EINT[15:0]或RTC报警中断从掉电模
式中唤醒处理器。6.中断控制器 ● 55个中断源(1个看门狗定时器、5个定时器、9个UART、24个外部中断、4个DMA、
2个RTC、2个ADC、1个I2C、2个SPI、1个SDI、2个USB、1个LCD和1个电池故障); ● 支持电平/边沿触
发模式的外部中断源; ● 可编程的电平/边沿触发极性; ● 为紧急中断请求提供快速中断服务(FIQ)支持。7.具有
脉冲宽度调制(PWM)的定时器 ● 具有PWM功能的4通道16位定时器,可基于DMA或中断操作的1通道16位内部定时器;
● 可编程的占空比周期、频率和极性; ● 能产生死区; ● 支持外部时钟源。8.RTC(实时时钟)
● 完整的时钟特性:秒、分、时、日期、星期、月和年; ● 工作频率32.768 kHz; ● 具有报警中断;
● 具有时钟滴答中断。9.通用I/O口 ● 24个外部中断口; ● 多路复用的I/O口。10.UAR ●
3通道UART,可以基于DMA模式或中断模式操作; ● 支持5位、6位、7位或者8位串行数据发送/接收(Tx/Rx); ● 支
持外部时钟作为UART的运行时钟(UEXTCLK); ● 波特率可编程; ● 支持IrDA 1.0; ● 支持回环(Loop
back)测试模式; ● 每个通道内部都具有16字节的发送FIFO和16字节的接收FIFO 。11.DMA控制器 ● 4通道的
DMA控制器; ● 支持存储器到存储器、I/O到存储器、存储器到I/O和I/O到I/O的传送; ● 采用突发传送模式提高传送速
率。12.A/D转换和触摸屏接口 ● 8通道多路复用ADC; ● 转换速率最大为500 KSPS(Kilo Samples P
er Second,每秒采样千点),10位分辨率。13.LCD控制器STN LCD显示特性 ● 支持3种类型的STN LCD显示
屏:4位双扫描、4位单扫描和8位单扫描显示类型; ● 对于STN LCD支持单色模式、4级灰度、16级灰度、256彩色和4 09
6彩色; ● 支持多种屏幕尺寸,典型的屏幕尺寸有:640×480,320×240,160×160; ● 最大虚拟屏幕大小是4
MB; ● 在256彩色模式下支持的最大虚拟屏幕尺寸是:4 096×1 024,2 048×2 048,1 024×4 0960
或者其它尺寸。14. TFT(Thin Film Transistor,薄膜场效应晶体管)彩色显示特性 ● 彩色TFT支持1
、2、4或8bpp(bit per pixel,每像素所占位数)调色显示; ● 支持16bpp无调色真彩显示; ● 在24bp
p模式下支持最大16M彩色TFT; 支持多种屏幕尺寸,典型的屏幕尺寸有:640×480,320×320,160×160或者其它尺
寸; ● 最大虚拟屏大小是4 MB; ● 在64彩色模式下支持的最大虚拟屏幕尺寸是:2 048×1 024或者其它尺寸。15.
看门狗定时器 ● 16位看门狗定时器; ● 定时器溢出时产生中断请求或系统复位。16.I2C总线接口 ● 1通道多主机I2C
总线; ● 串行、8位、双向数据传送,在标准模式下数据传送速率可达100kb/s,在快速模式下可达400kb/s。17.I2S总
线接口 ● 1通道音频I2S总线接口,可基于DMA方式操作; ● 串行,每通道8/16位数据传输; 串行,每通道8/16位数据
传输; ● 发送和接收(Tx/Rx)具备128字节FIFO(64字节发送FIFO+64字节接收FIFO); ● 支持I2S格式
和MSB-justified数据格式。18.USB主设备 ● 2个USB主设接口; ● 遵从OHCI Revl.0标准; ●
兼容USB Verl.1标准。19.USB从设备 ● 1个USB从设接口; ● 具备5个USB设备端口; ● 兼容USB
Verl.1标准。20.SD主机接口 ● 兼容SD存储卡协议1.0版; ● 兼容SDIO卡协议1.0版; 发送和接收采用字节F
IFO; ● 基于DMA或中断模式操作; ● 兼容MMC卡协议2.11版。21.SPI接口 ● 兼容2通道SPI协议2.11
版; ● 发送和接收采用2字节的移位寄存器; ● 基于DMA或中断模式操作。22.工作电压 ● 内核电压:1.8V,最高工作
频率200 MHz(S3C2410A-20);2.0 V,最高工作频率266 MHz(S3C2410A-26)。 ● 存储器和I
/O电压:3.3 V。23.封装 ● 采用272-FBGA封装。3.2 S3C2410A存储器控制器3.2.1 S3C241
0A的存储器控制器特性S3C2410A的存储器控制器提供访问外部存储器所需要的存储器控制信号,具有以下特性: ● 支持小/大端(
通过软件选择)。 ● 地址空间:每个bank有128 MB(总共有8个bank,共1 GB)。 ● 除bank0只能是16/3
2位宽之外,其他bank都具有可编程的访问位宽(8/16/32位)。 ● 总共有8个存储器bank(bank0~bank7):
一其中6个用于ROM,SRAM等; 一剩下2个用于ROM,SRAM,SDRAM等。 ● 7个固定的存储器bank(bank0~b
ank6)起始地址。 ● 最后一个bank(bank7)的起始地址是可调整的。 ● 最后两个bank(bank6和bank7)
的大小是可编程的。 ●所有存储器bank的访问周期都是可编程的。 ● 总线访问周期可以通过插入外部等待来扩展。 ● 支持SD
RAM的自刷新和掉电模式。3.2.1 S3C2410A的存储器映射S3C2410A复位后,存储器的映射情况如图3.2.1所示,b
ank6和bank7对应不同大小存储器时的地址范围参见表3.2.1。 [不使用NAND Flash作为启动ROM] [使用
NAND Flash]作为启动ROM]注意:①SROM表示是ROM或SRAM类型的存储器;②SFR指特殊功能寄存器。图3.2.1
S3C2410A复位后的存储器映射表3.2.1 bank 6和bank 7地址注:bank 6和bank 7必须具有相同的存储
器大小。3.3 复位、时钟和电源管理1.复位电路在系统中,复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。复位电
路可由简单的RC电路构成,也可以使用其他的相对较复杂,但功能更完善的电路。为了提供高效的电源监视性能,选取了专门的系统监视复位芯片
IMP811S。该芯片性能优良,可以通过手动控制系统的复位,同时还可以实时监控系统的电源。一旦系统电源低于系统复位的阀值(2.9V
),IMP811S将会对系统进行复位。系统复位电路如图3.3.1所示。图3.3.1 系统复位电路也可以采用如图3.3.2所示较简
单的RC复位电路,经使用证明,其复位逻辑是可靠的。该复位电路的工作原理如下:在系统上电时,通过电阻R108向电容C162充电,当C
162两端的电压未达到高电平的门限电压时,RESET端输出为高电平,系统处于复位状态;当C162两端的电压达到高电平的门限电压时,
RESET端输出为低电平,系统进入正常工作状态。当用户按下按钮RESET时,C162两端的电荷被放掉,RESET端输出为高电平,系
统进入复位状态,再重复以上的充电过程,系统进入正常工作状态。两级非门电路用于按钮去抖动和波形整形;nRESET端的输出状态与RES
ET端相反,用于低电平复位的器件;通过调整R108和C162的参数,可调整复位状态的时间。图3.3.2 系统的复位电路2.时钟电
路在S3C2410A中的时钟控制逻辑能够产生CPU所需的FCLK时钟信号。AHB总线外围设备所需的HCLK时钟信号,以及APB总线
外围设备所需的PCLK时钟信号。S3C2410A有两个锁相环(Phase Locked Loops,PLL),一个用于FCLK,H
CLK和PCLK,另一个专门用于USB模块(48 MHz)。时钟控制逻辑可以在不需要PLL的情况下产生慢速时钟,并且可以通过软件来
控制时钟与每个外围模块是连接还是断开,从而降低功耗。S3C2410A微处理器的主时钟可以由外部时钟源提供,也可以由外部振荡器提供,
如图3.3.3所示,采用哪种方式通过引脚OM[3:2]来进行选择。 ● OM[3:2]=00时,MPLL和UPLL的时钟均选择外
部晶体振荡器; ● OM[3:2]=0l时,MPLL的时钟选择外部晶体振荡器;UPLL选择外部时钟源; ● OM[3:2]=
10时,MPLL的时钟选择外部时钟源;UPLL选择外部晶体振荡器; ● OM[3:2]=11时,MPLL和UPLL的时钟均选择外
部时钟源。在系统中选择OM[3:2]均接地的方式,即采用外部振荡器提供系统时钟。系统时钟源直接采用外部晶振,内部PLL电路可以调整
系统时钟,使系统运行速度更快。S3C2410X的系统时钟电路见图3.3.3,其外部振荡器由12MHz晶振和2个15pF的微调电容组
成。振荡电路输出接到S3C2410X微处理器的XTIPLL脚,输入由XTOPLL提供。由于片内的PLL电路兼有频率放大和信号提纯的
功能,因此,系统可以以较低的外部时钟信号获得较高的工作频率,从而降低因高速开关时钟所造成的高频噪声。图3.3.3 S3C2410
X微处理器外部时钟电路3.电源电路对于电源控制逻辑,S3C2410A具有多种电源管理方案,对于每个给定的任务都具有最优的功耗。在S
3C2410A中的电源管理模块具有正常模式、慢速模式、空闲模式和掉电模式4种有效模式。在正常模式,电源管理模块为CPU和S3C24
10A中的所有外围设备提供时钟。在这个模式,由于所有外围设备都处于开启状态,因此功耗达到最大。用户可以通过软件来控制外围设备的操作
。例如,如果不需要定时器,那么用户可以断开定时器的时钟,以降低功耗。慢速模式又称无PLL模式。与正常模式不同,在慢速模式不使用PL
L,而使用外部时钟(XTIPLL或EXTCLK)直接作为S3C2410A中的FCLK。在这种模式下,功耗大小仅取决外部时钟的频率,
功耗与PLL无关。在空闲模式下,电源管理模块只断开CPU内核的时钟(FCLK),但仍为所有其他外围设备提供时钟。空闲模式降低了由C
PU内核产生的功耗。任何中断请求可以从空闲模式唤醒CPU。在掉电模式,电源管理模块断开内部电源。因此,除唤醒逻辑以外,CPU和内部
逻辑都不会产生功耗。激活掉电模式需要两个独立的电源,一个电源为唤醒逻辑供电;另一个为包括CPU在内的其他内部逻辑供电,并且这个电源
开/关可以控制。在掉电模式下,为CPU和内部逻辑供电的第二个电源将关断。通过EINT[15:0]或RTC报警中断可以从掉电模式唤醒
S3C2410A。在设计系统电源电路之前对S3C2410A的电源引脚进行分析:VDDalive引脚给处理器复位模块和端口寄存器提供
1.8V电压;VDDi和VDDiarm为处理器内核提供1.8V电压;VDDi_MPLL为MPLL提供1.8V模拟电源和数字电源;V
DDi_UPLL为UPLL提供1.8V模拟电源和数字电源;VDDOP和VDDMOP分别为处理器端口和处理器存储器端口提供3.3V电
压;VDD_ADC为处理器内的ADC系统提供3.3V电压;VDDRTC为时钟电路提供1.8V电压,该电压在系统掉电后仍需要维持。系
统需要使用3.3V和1.8V的直流稳压电源。为简化系统电源电路的设计,要求整个系统的输入电压为高质量的5V直流稳压电源。VDD3.
3V提供给VDDMOP,VDDIO,VDDADC和VCC引脚,VDD1.8V提供给VDDi_X。5V输入电压经过DC-DC转换器可
完成5V到3.3V和1.8V的电压转换。系统中RTC所需电压由1.8V电源和后备电源共同提供,在系统工作时1.8V电压有效,系统掉
电时后备电池开始工作,以供RTC电路所需的电源,同时使用发光二极管指示电源状态。S3C2410A电源电路如图3.3.4所示。(a)
3.3V电源电路(b)1.8V电源电路(电阻R203=100K,R204=47.5K,阻值需要修改)图3.3.4 电源电路3.4
S3C2410A的I/O口3.4.1 S3C2410A的I/O口配置S3C2410A共有117个多功能复用输入/输出端口(I
/O口),分为端口A~端口H 8组,其中8组I/O口按照其位数的不同又可分为:端口A(GPA)是1个23位输出口;端口B(GPB)
和端口H(GPH)是2个11位I/O口;端口C(GPC)、端口D(GPD)、端口E(GPE)和端口G(GPG)是4个16位I/O口
;端口F(GPF)是1个8位I/O口。为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件对进行配置。每个引脚的功能必须在
启动主程序之前进行定义。如果一个引脚没有使用复用功能,那么它可以配置为I/O口。注意:端口 A除了作为功能口外,只能够作为输出口使
用。S3C2410A的I/O口配置情况如表3.4.1~3.4.7所列。表3.4.1 S3C2410A的端口A I/O口配置情况表
3.4.2 S3C2410A的端口B I/O口配置情况表3.4.3 S3C2410A的端口C I/O口配置情况表3.4.4
S3C2410A的端口D I/O口配置情况表3.4.5 S3C2410A的端口E、F I/O口配置情况表3.4.6 S3C24
10A的端口G I/O口配置情况表3.4.7 S3C2410A的端口H I/O口配置情况3.4.2 S3C2410A的I/O口
寄存器在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功
能。每个引脚端的功能通过端口控制寄存器(PnCON)来定义(配置)。与配置I/O口相关的寄存器包括:端口控制寄存器(GPACON~
GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断
控制寄存器(EXTINTN)等。在掉电模式,如果GPF0~GPF7和GPG0~GPG7用作为唤醒信号,那么这些端口必须配置为中断模
式。如果端口配置为输出口,数据可以写入到端口数据寄存器(PnDAT)的相应位中;如果将端口配置为输入口,则可以从端口数据寄存器(P
nDAT)的相应位中读出数据。端口上拉寄存器用于控制每组端口的上拉电阻为使能/不使能。如果相应位设置为0,则表示该引脚的上拉电阻使
能;为1,则表示该引脚的上拉电阻不使能。如果使能了端口上拉寄存器,则不论引脚配置为哪种功能(输入、输出、DATAn、EINTn等)
,上拉电阻都会起作用。杂项控制寄存器用于控制数据端口的上拉电阻、高阻状态、USB Pad和CLKOUT的选择。24个外部中断通过不
同的信号方式被请求。EXTINTn寄存器用于配置这些信号对于外部中断请求采用的是低电平触发、高电平触发、下降沿触发、上升沿触发还是
双边沿触发。有8个外部中断有数字滤波器。仅16 EINT引脚端(EINT[15:0])用来作为唤醒源。所有GPIO寄存器的值在掉电
模式下都会被保存。外部中断屏蔽寄存器EINTMASK不能阻止从掉电模式唤醒,但是如果EINTMASK正在屏蔽的是EINT[15:4
]中的某位,则可以实现唤醒,不过寄存器SRCPND的位EINT4 和EINT8 23在刚刚唤醒后不能设置为1。相关寄存器的设置分别
描述如下:1.端口A控制寄存器(参见表3.4.8) 表3.4.8 端口
A控制寄存器2.端口B控制寄存器(参见表3.4.9) 表.3.
4.9 端口B控制寄存器3.端口C控制寄存器(参见表3.4.10)
表3.4.10 端口 C控制寄存器4.端口D控制寄存器(参见表3.4.11)
表3.4.11 端口D控制寄存器 5.端口E控制寄存器(参见表3.4.12)
表3.4.12 端口 E控制寄存器6.端口F控制寄存器(参见表3.4.13)
表3.4.13 端口F控制寄存器7.端口G控制寄存器(参见表3.4.14)
表3.4.14 端口G控制寄存器8.端口H控制寄存器(参见表3.4.15)
表3.4.15 端口H控制寄存器9.杂项控制寄存器(参见表3.4.16)
表3.4.16 杂项控制寄存器10.DCLK控制寄存器(参见表3.4.17)
表3.4.17 DCLK控制寄存器11.外部中断控制寄存器(参见表3.4.18)
表3.4.18 外部中断控制寄存器12.外部中断滤波寄存器(参见表3.4.19)
表3.4.19 外部中断滤波寄存器14.外部中断挂起寄存器(参见表3.4.21)
表3.4.21 外部中断挂起寄存器13.外部中断屏蔽寄存器(参见表3.4.20)
表3.4.20 外部中断屏蔽寄存器15.通用状态寄存器(参见表3.4.22) 表3.4.2
2 通用状态寄存器3.5 S3C2410A的中断控制3.5.1 ARM系统的中断处理在ARM系统中,支持复位、未定义指令、软
中断、预取中止、数据中止、IRQ和FIQ 7种异常,每种异常对应于不同的处理器模式,有对应的异常向量(固定的存储器地址)。在ARM
系统中,一旦有中断发生,正在执行的程序都会停下来,通常都会执行如下的中断步骤: (1)保存现场。保存当前的PC值到R14,保存当前
的程序运行状态到SPSR。 (2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。 (3)获取中断服务子程序地址。PC指
针跳到异常向量表所保存的IRQ或FIQ地址处,IRQ或FIQ的异常向量地址处一般保存的是中断服务子程序的地址,PC指针跳入到中断服
务子程序,进行中断处理。 (4)多个中断请求处理。在ARM系统中,可以存在多个中断请求源,比如串口中断、AD中断、外部中断、定时器
中断及DMA中断等,所以可能出现多个中断源同时请求中断的情况。为了更好地区分各个中断源,通常为这些中断定义不同的优先级别,并为每一
个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识别哪一个中断发生了,进而调用相应的函数进行中
断处理。(5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR中,R14中保存的被中断程序
的地址恢复到PC中,继续执行被中断的程序。3.5.2 S3C2410A的中断控制器S3C2410A采用ARM920T CPU内核
,ARM920T CPU的中断包含有IRQ和FIQ。IRQ是普通中断,FIQ是快速中断,FIQ的优先级高于IRQ。FIQ中断通常在
进行大批量的复制、数据传输等工作时使用。S3C2410A通过对程序状态寄存器(PSR)中的F位和I位进行设置控制CPU的中断响应。
如果设置PSR的F位为1,则CPU不会响应来自中断控制器的FIQ中断;如果设置PSR的I位为1,则CPU不会响应来自中断控制器的I
RQ中断。如果设置PSR的F位或I位设置为0,同时将中断屏蔽寄存器(INTMSK)中的相对应位设置为0,CPU响应来自中断控制器的
IRQ或FIQ中断请求。中断屏蔽寄存器用于指示中断是否禁止。如果设置中断屏蔽寄存器中的相对应屏蔽位为1,表示相对应的中断禁止;如果
设置为0,表示中断发生时将正常执行中断服务。如果发生中断时相对应的屏蔽位正好为1,则中断挂起寄存器中的相对中断源挂起位将置1。S3
C2410A有SRCPND(中断源挂起寄存器)和INTPND(中断挂起寄存器)两个中断挂起寄存器。SRCPND和INTPND两个挂
起寄存器用于指示某个中断请求是否处于挂起状态。当多个中断源请求中断服务时,SRCPND寄存器中的相应位设置为1,仲裁过程结束后IN
TPND寄存器中只有1位被自动设置为1。S3C2410A中的中断控制器能够接收来自56个中断源的请求,这些中断源来自DMA控制器、
UART、I2C及外部中断引脚等。从表3.5.1可以看出,S3C2410A共有32个中断请求信号。S3C2410A采用了中断共享技
术,INT_UARTO、INT_UART1、INT_UART2、EINT8_23和EINT4_7为多个中断源共享使用的中断请求信号
。中断请求的优先级逻辑是由7个仲裁器组成的,其中包括6个一级仲裁器和1个二级仲裁器,如图3.5.1所示。每个仲裁器是否使能由寄存器
PRIORITY[6:0]决定。每个仲裁器可以处理4~6个中断源,从中选出优先级最高的。优先级顺序由寄存器PRIORITY[20:
7]的相应位决定。 表3.5.1 S3C2410A 的中断源图3.5.1 优先级生成模块S3C2410A中断控制器的特殊寄存器
如表3.5.2所示,中断控制需要正确 的设置这些寄存器,寄存器中每一位的含义请参阅S3C2410A数据手册。表3.5.2中断控制
器的特殊寄存器3.5.3 S3C2410A的中断编程实例本小节介绍一个通过定时器1控制一个led灯每1秒钟改变一次状态,需要完成
的主要工作如下。(1)对定时器1初始化,并设定定时器的中断时间为1,具体代码参见Timed init( )函数。 void Tim
erl_init(void){ rGPBCON = rGPBCON&0xfffffffc&0x00000001;
rGPBDAT= rGPBDAT |0x001; rTCFG0 = 255; rTCFG1 = 0<<4; rTCN
TB1 = 48828; //在pclk = 50MHz下,1s的记数值rTCNTB1
= 50000000/4/256=48828; rTCMPB1 = 0x00; rTCON = (1+11) | (1<<9)
| (0<<8);//禁用定时器1,手动加载 rTCON = (1+11) | (0<<9) | (1<<8);//启动定时器1,
自动装载 }(2)为了使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR中的I位,以及相应的中断屏蔽寄存
器中的位。打开相应的中断屏蔽寄存器中的位,是在TimerlINT Init()函数中实现的,具体代码如下。 void Timerl
INT_Init(void){ //定时器接口使能 if((rINTPND&BIT_TIMERI)){ r
SRCPND | = BIT_TIMER1; } pISR_TMER1=(int)Timerl_ISR; //写入定时器1中
断服务子程序的入口地址 rINTMSK &=~(BIT_TIMERI); //开中断; }(3)等待定时器中断,通过一个死循环
,如“while(1);”实现等待过程。(4)根据设置的定时时间,产生定时器中断。中断发生后,首先进行现场保护,然后转人中断的入口
代码处执行。该部分代码通常使用汇编语言编写。在执行中断服务程序之前,要确保HandleIRQ地址处保存中断分发程序IsrIRQ的入
口地址,代码如下。 ldr r0,= HandleIRQ ldr r1,= IsrIRQ str r
1,[r0〕 接下来将执行IsrIRQ中断分发程序,具体代码如下。 IsrIRQ sub sp,sp,#4;
//为保存PC预留堆栈空间 stmfd sp!,{r8-r9} ldr r9,= INT
OFFSET ldr r9,[r9]; //加载INTOFFSET寄存器值到r9 ld
r r8,=HandleEINT0; //加载中断向量表的基地址到r8 add r8,r8,
r9,lsl #2; //获得中断向量 ldr r8, [r8]; /
/加载中断服务程序的入口地址到r8 str r8,[sp,#8]; //保存sp,将其作为
新的pc值 ldmfd sp!,(r8-r9,pc}; //跳转到新的pc处执行,即跳转到中断服务子程
序执行(5)执行中断服务子程序,该子程序实现led灯每一秒钟改变一次状态。看到LEDl灯闪烁一次,则说明定时器发生了一次中断。具体
实现见函数Timerl_ISR()。 int f ; void _ _irq Timer1_ISR(void) { If (f=
= 0) { rGPBDAT = rGPBDAT | 0x001; f=1; } If (f= = 1) { rGPBDAT=
rGPBDAT &0x0; f=0; } rSRCPND |= BIT_TIMER1; rINTPND |= BIT_TIMER1
; }(6)从中断返回,恢复现场,跳转到被中断的主程序继续执行,等待下一次中断的到来。3.6 S3C2410A的DMA控制器3.
6.1 DMA工作原理DMA(Direct Memory Acess,直接存储器存取)方式是指存储器与外设在DMA控制器的控制下
,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。在DMA传输过程中,DMA控制器负责管理整个操作,并且无须CPU介
入,从而大大提高了CPU的工作效率。DMA方式为高速I/O设备和存储器之间的批量数据交换提供了直接的传输通道。由于I/O设备直接同
内存发生成块的数据交换,可以提高I/O效率。现在大部分计算机系统均采用DMA技术。许多输入/输出设备的控制器都支持DMA方式。在进
行DMA数据传送之前,DMA控制器会向CPU申请总线控制权,CPU如果允许,则将控制权交出。因此,在数据交换时,总线控制权由DMA
控制器掌握,在传输结束后,DMA控制器将总线控制权交还给CPU。采用DMA方式进行数据传输的具体过程如下。(1)外设向DMA控制器
发出DMA请求。(2)DMA控制器向CPU发出总线请求信号。(3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信
号。(4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制。(5)DMA控制器向外部设备发出DMA请求回答信号。(
6)进行DMA传送。(7)数据传送完毕,DMA控制器通过中断请求线发出中断信号。CPU在接收到中断信号后,转人中断处理程序进行后续
处理。(8)中断处理结束后,CPU返回到被中断的程序继续执行。CPU重新获得总线控制权。3.6.2 S3C2410A的DMA控制
器在系统总线和外围总线之间,S3C2410A有4个DMA控制器。每个DMA控制器可以处理以下4种情况:(1)源和目的都在系统总线上
;(2)源在系统总线上,目的在外围总线上;(3)源在外围总线上,目的在系统总线上;(4)源和目的都在外围总线上。如果DCON寄存器
选择采用硬件(H/W)DMA请求模式,DMA控制器可以从对应通道的DMA请求源中选择一个。如果DCON寄存器选择采用软件(S/W)
DMA请求模式,那么这些DMA请求源将没有任何意义。DMA请求源如表3.6.1所示。表3.6.1 DMA请求源DMA的操作过程可
以用一个3种状态的FSM(Finite State Machine,有限状态机)来描述,具体步骤如下:(1)状态1状态1为初始状态
,DMA等待一个DMA请求。如果出现DMA请求,进入状态2。在这种状态下,DMA ACK和INT REQ为0。(2)状态2在状态2
,DMA ACK变为1,并且从DCON[19:0]寄存器向计数器(CURR TC)加载计数值。注意,此时DMA ACK一直是1,直
到被清零。(3)状态3在状态3,子FSM使DMA的微操作被初始化。子FSM从源地址读取数据,并将其写入目标地址。在这个操作过程中,
需要考虑数据大小(尺寸)和传输大小(尺寸)。这一操作重复执行,直到在整体服务模式下的计数器 (CURR_TC)变为0;这一操作在单
个服务模式下则只执行一次。子FSM每完成一次微操作,主FSM将CURR_TC进行一次向下计数。另外,当CURR_TC变为0时,主F
SM将INT REQ信号置1,并将DCON寄存器的中断设置位[29]置1。除此以外,如果发生以下情况,则对DMA ACK清零。在单
个服务模式下,主FSM的3种状态执行完后就停止,并等待下一个DMA请求。如果又产生了新的DMA请求,则所有3个状态都将被重复。因此
,对于每一个微传送操作,DMA ACK先后置1和清零。相反,在整体服务模式下,主FSM一直在状态3等待直到CURR TC变为0,因
此DMA ACK在整个传送过程中都置1,当TC为时则清零。S3C2410A每个DMA通道有9个控制寄存器,4个通道共有36个寄存器
。每个DMA通道的9个控制寄存器中有6个用于控制DMA传输,另外3个用于监控DMA控制器的状态。要进行DMA操作,首先需要对这些寄
存器进行正确配置。相关寄存器介绍如下:(1)DMA初始化源寄存器(DISRC)如表3.6.2所示,DMA初始化源寄存器(DISRC
)用于存放要传输的源数据的起始地址。表3.6.2 DMA初始化源寄存器表3.6.3 DMA初始化源控制寄存器(2)DMA初始化
源控制寄存器(DISRCC)如表3.6.3所示,DMA初始化源控制寄存器(DISRCC)用于控制源数据在AHB总线还是APB总线上
并控制地址增长方式 3)DMA初始化目标地址寄存器(DIDST),如表3.6.4所示,DMA初始化目标地址寄存器(DIDST)用于
存放传输目标的起始地址。表3.6.4 DMA初始目标地址寄存器(4)DMA初始化目标控制寄存器(DIDSTC)如表3.6.5所示
,DMA初始化目标控制寄存器(DIDSTC)用于控制目标位于AHB总线还是APB总线上,并控制地址增长方式。表3.6.5 DMA
初始化目标控制寄存器(5)DMA控制寄存器(DCON)如表3.6.6所示,有4个DMA控制寄存器(DCON)(DCON0~DCON
3),DMA控制寄存器的位描述如表3.6.7所示。表3.6.6 DMA控制寄存器表3.6.7 DMA控制寄存器的位描述(6)D
MA状态寄存器(DSTAT) 如表3.6.8所列,DMA状态寄存器(DSTAT)保存DMA0~DMA3计数寄存器状态。表3.6.8
DMA状态寄存器(7)DMA当前源寄存器(DCSRC)如表3.6.9所列,DMA当前源寄存器(DCSRC)用于保存DMAn的当
前源地址。 表3.6.9 DMA当前源寄存器(8)DMA当
前目标寄存器(DCDST)如表3.6.10所列,DMA当前目标寄存器(DCDST)用于保存DMAn的当前目标地址。表3.6.10
DMA当前目标寄存器(9)DMA屏蔽触发寄存器(DMASKTRIG)如表3.6.11所列,DMA屏蔽触发寄存器(DMASKTRI
G)控制DMA0~DMA3触发状态。表3.6.11 DMA屏蔽触发寄存器S3C2410A的DMA编程实例本小节给出一个使用DMA
方式实现从存储器发送数据到UART0的实例,以下是程序代码。 #include”config.h” #define S_DATA
((volatile unsigned char )0x30800000) #define S_ADDR ((volati
le unsigned char )0x30800000) //数据起始地址 void UART0_DMA(void)
{ volatile unsigned charp = S_DATA; int i; Init(); Delay(5000);
S_DATA = 0x12; for(I = 0;I <256; i++) { p++ = 0x12 + i; //准备将要发送的数据 } rUCON0 = rUCON0&0xff3|0x8; //UART0设置为DMA形式 //DMA相关寄存器初始化 rDISRC0 = (U32)( S_ADDR); rDISRCC0 = (0<<1)|0; rDIDST0 = (U32)UTXH0; rDIDSTC0(1<<1)|(1<<0); rDCON0 = 0x0; rDCON0 = (1<<29)|(1<<24)|(1<<23)|(1<<22)|(50); rDMASKTRIG0 = (1<<1); //打开DMA通道0 for( ; ; ); }第3章 思考题与习题 1 登录www.samsung.com ,查阅S3C2410A有关资料,分析其内部结构组成与功能。 2 简述S3C2410A存储器控制器的特性。 3 画出S3C2410A复位后的存储器映射图,并分析不同存储器的地址范围。 4 试分析复位电路的工作过程。 5 登录www.impweb.com ,查阅IMP811S有关资料,分析其内部结构、引脚端功能与应用电路。 6 简述S3C2410A时钟电路的特点。 7 S3C2410A的电源管理模块具有哪几种工作模式?各有什么特点?、慢速模式、空闲模式和掉电模式4种有效模式。 8 登录www.analogmicro.com,查阅AME1117有关资料,分析其内部结构、引脚端功能与应用电路。 9 登录www.micrel.com,查阅MIC5207有关资料,分析其内部结构、引脚端功能与应用电路。 10 试按功能分析S3C2410A的端口AI/O口配置情况。 11 S3C2410A与配置I/O口相关的寄存器有哪些?各自具有什么功能? 12 试分析S3C2410A端口控制寄存器A~H的功能。 13 S3C2410A与外部中断有关的控制寄存器有哪些?各自具有什么功能? 14 试分析S3C2410A通用状态寄存器的功能。 15 简述ARM系统中的中断处理过程。 16 S3C2410A与中断控制有关的寄存器有哪些?各自具有什么功能? 17 试按功能对S3C2410A的中断源进行分类。 18 简述S3C2410A中断控制器的特殊寄存器功能。 19 简述采用DMA方式进行数据传输的过程。 20 简述S3C2410A的DMA控制器功能。 21 S3C2410A的DMA通道有几个控制寄存器?各自具有什么功能? 22 S3C2410A的DMA初始化有几个控制寄存器?各自具有什么功能? 23 简述DMA控制寄存器的位功能。 24 简述DMA屏蔽触发寄存器的功能。
献花(0)
+1
(本文系大高老师首藏)