嵌入式系统的原理及应用2.7S3C2410ARM微处理器简介Samsung公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。采用272脚FBGA封装,内含一个ARM920T内核。为了降低系统成本,S3C2410A提供了以下丰富的片内外围:★1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示器);★SDRAM控制器;★3个通道的UART;★4个通道的DMA;2.7S3C2410ARM微处理器简介★4个具有PWM功能的计时器和1个内部时钟;★8通道的10位ADC;★触摸屏接口;★I2C总线接口;★1个USB主机接口,1个USB设备接口;★2个SPI接口;★SD接口和MMC卡接口;★117位通用I/O口和24位外部中断源。2.7S3C2410ARM微处理器简介S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了一种叫做AMBA新型总线结构。S3C2410A显著特性是CPU核心。ARM920T实现了MMU,AMBABUS和Harvard高速缓冲体系结构。这一结构具有独立的16kB指令Cache和16kB数据Cache,每个都是由8字长的行(line)构成。通过提供一系列完整的系统外围设备,S3C2410A大大减少了整个系统的成本,消除了为系统配置额外器件的需要。S3C2410X和S3C2410A的区别(1)A/D9位升到10位;(2)MMC的接口频率从10M升到20M。其他功能一样!管脚兼容,封装一样。S3C2410A可以替代S3C2410X。S3C2410X01已经停产。2.7.1内部结构ClockCont.InterruptCont.JTAGPowerManagementARM920TCore200MHzLCDDMALCDCont.4ChannelDMAControllerBusCont.Arbiter/DecoderUSBHostCONT.NandFlashCont.MemoryCont.AHBBridgeUARTSUSBDevicesSDI/MMCWatchdogTimerBUSCont.SPII2CI2SGPIORTCADCS3C2410A的272脚FBGA封装2.7.2S3C2410A的启动S3C2410A支持从NANDFlash启动,NANDFlash具有容量大,比NORFlash价格低等特点。系统采用NANDFlash与SDRAM组合,可以获得非常高的性价比。S3C4120X具有三种启动方式,可通过OM[1:0]管脚(OM0为管脚U14,OM1为管脚U15)进行选择。OM[1:0]=00从NandFlash启动;OM[1:0]=01从16位宽的ROM启动;OM[1:0]=10从32位宽的ROM启动;OM[1:0]=11TEST模式。2.7.3存储器控制器FLASHROM属于真正的单电压芯片,在使用上很类似EPROM,因此,有些书籍上便把FLASHROM作为EPROM的一种。事实上,二者还是有差别的。FLASHROM在擦除时,也要执行专用的刷新程序,但是在删除资料时,并非以Byte为基本单位,而是以Sector(又称Block)为最小单位,Sector的大小随厂商的不同而有所不同;只有在写入时,才以Byte为最小单位写入;FLASHROM芯片的读和写操作都是在单电压下进行,不需跳线,只利用专用程序即可方便地修改其内容。DRAM,动态随机存取存储器,需要不断的刷新(ms级),才能保存数据。而且是行列地址复用的,许多都有页模式。2.7.3存储器控制器SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。需要更大的硅片面积,成本较高。它的存取时间比DRAM要短得多,经常用于Cache。SDRAM,同步的DRAM,即数据读写需要时钟来同步。因而能够工作在较高的时钟频率下。数据从存储元(memorycell)被流水化地取出,最后突发式(burst)输出到总线。DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM。2.7.3存储器控制器(续1)存储器控制是通过相关的寄存器来实施的。寄存器分为控制寄存器和状态寄存器。可以给控制寄存器赋值以得到所需要的状态,而状态寄存器会根据情况自行产生变化。不要试图控制状态寄存器。存储器控制器是由若干寄存器组成。了解这些寄存器,就可以阅读或编写Bootloader程序了。2.7.3存储器控制器(续1)—可通过软件选择大小端—地址空间:每个Bank128Mbytes(总共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存储周期可编程控制。2.7.3存储器控制器(续2)与存储器有关的寄存器主要有:(1)总线宽度和等待控制寄存器BWSCON;(2)组控制寄存器BANKCONn;(3)REFRESH控制寄存器;(4)BANKSIZE控制寄存器;(5)SDRAM模式控制寄存器MRSRB6,MRSRB7。(1)总线宽度和等待控制寄存器BWSCON寄存器地址读/写功能复位后的值BWSCON0x48000000R/W总线宽度和等待控制0x000000bank0的数据总线(nGCS0)必须首先设置成16位或32位的。因为bank0通常作为引导ROM区(映射到地址0x0000-0000),在复位时,系统将检测OM[1:0]上的逻辑电平,并据此来决定bank0的总线宽度。BWSCON寄存器描述了bank1~bank7数据总线宽度和等待控制。总线宽度可以是8位、16位和32位。每个bank_n(n=1~7)用该寄存器的4位来描述,分别是UB/LB(即高8位和低8位)、是否需要总线访问等待周期、数据总线宽度的是多少(占用了2位)。如果对每个bank使能WAIT功能,当对某个bank区进行访问时,nOE的低电平有效时间就会在nWAIT引脚的控制下延长。从tacc-1时刻开始检测nWAIT的状态。在采样到nWAIT为高电平后的下一个时钟,nOE将恢复高电平。nWAIT对nWE信号的作用与对nOE信号相同。(2)组控制寄存器(nGCS0~nGCS7)寄存器地址读/写功能复位后的值BANKCON00x48000004R/WBANK0控制0x0700BANKCON10x48000008R/WBANK1控制0x0700BANKCON20x4800000cR/WBANK2控制0x0700BANKCON30x48000010R/WBANK3控制0x0700BANKCON40x48000014R/WBANK4控制0x0700BANKCON50x48000018R/WBANK5控制0x0700BANKCON60x4800001cR/WBANK6控制0x18008BANKCON70x48000020R/WBANK7控制0x180082.7.4NANDFlash控制器当前,NORflash存储器的价格比较昂贵,而SDRAM和NANDflash存储器的价格相对来说比较合适,这样就激发了一些用户产生希望从NANDflash启动和引导系统,而在SDRAM上执行主程序代码的想法。S3C2410A恰好满足这一要求,它可以实现从NANDflash上执行引导程序。S3C2410A具备一个内部SRAM缓冲器--“Steppingstone”。当系统启动时,NANDflash存储器的前面4KByte字节将被自动载入到Steppingstone中,然后系统自动执行这些载入的引导代码。图2.9NandFlash工作方式Steppingstone(4KBBuffer)特殊功能寄存器NandFlash控制器NandFlash存储器用户程序操作CPU操作(boot代码)NandFlash模式自动启动模式NANDFLASH模式配置通过NFCONF寄存器配置NANDflash;写NANDflash命令到NFCMD寄存器;写NANDflash地址到NFADDR寄存器;在读写数据时,通过NFSTAT寄存器来获得NANDflash的状态信息。应该在读操作前或写入之后检查R/nB信号(准备好/忙信号);通过NFDATA读写数据。NANDFlash与NORFlashNANDFlash与NORFlash是有很大不同的。NORFlash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NANDFlash用复杂的I/O口来串行地存取数据,各个产品或厂商的方法各不相同。8个引脚用来传送控制、地址和数据信息。所有Flash器件都受位交换现象的困扰,此问题更多见于NANDFlash。必须采用错误检测/错误更正(EDC/ECC)算法确保可靠性。2.7.5时钟和电源管理(1)时钟控制S3C2410A能够产生3种时钟信号,分别是:FCLK应用于CPU的时钟,HCLK用于AHBBus各种外围设备,PCLK用于APBBus各种接口设备。其中FCLK应用的就是MPLL的频率,不用设置。(2)USB控制主要对USB的时钟参数进行配置。时钟和电源由3部分组成:时钟控制、USB控制和电源控制。2.7.5时钟和电源管理时钟和电源由3部分组成:时钟控制、USB控制和电源控制。(3)电源控制S3C2410A通过4种电源管理模式有效地控制了功耗:NORMAL模式SLOW模式IDLE模式POWER-OFF模式2.7.6输入/输出口S3C2410A有117多功能I/O口,它们分别是:—PortA(GPA):23-输出口—PortB(GPB):11-输入/输出口—PortC(GPC):16-输入/输出口—PortD(GPD):16-输入/输出口—PortE(GPE):16-输入/输出口—PortF(GPF):8-输入/输出口—PortG(GPG):16-输入/输出口—PortH(GPH):11-输入/输出口2.7.6输入/输出口每个口通过三个寄存器进行配置及读写数据。分别是:GPxCON、GPxDAT、GPyUP,其中x为A~H,y为B~H。(1)输入/输出口配置寄存器(GPACON-GPHCON)在S3C2410A中大多数输入/输出口引脚是复用的,因此需要用输入/输出口控制寄存器来确定每个引脚的功能。如果GPF0–GPF7和GPG0–GPG7为Power-OFF模式下的唤醒信号,那么这些管脚必须被配置成中断模式。2.7.6输入/输出口(2)输入/输出口数据寄存器(GPADAT-GPHDAT)如果管脚被置成输出方式则可以向相应的位写数据;如果管脚被置成输入方式则可以从相应的位读数据。(3)输入/输出口上拉电阻使能寄存器(GPBUP-GPHUP)该寄存器能够使能或禁止每个端口组是否需要上拉电阻。0表示使能,1表示禁止。如果该端口上拉电阻使能,则上拉电阻始终有效,无论是否设置了管脚的功能。2.7.7中断S3C2410A的中断控制器能够接收来自56个中断源的请求。这些中断源由内部的外设提供(如DMA控制器、UART等)。中断的工作过程如图2.10所示。处理器地址解码逻辑中断控制逻辑芯片外设控制器地址总线中断请求中断应答数据总线中断请求2.7.7中断中断异常处理模块总共由以下8个寄存器构成:—SRCPND(中断源悬挂寄存器)—INTMOD(中断模式寄存器)—INTMSK(中断屏蔽寄存器)—PRIORITY(中断优先级寄存器)—INTPND(中断悬挂寄存器)—INTOFFSET(中断偏移寄存器)—SUBSRCPND(子中断源悬挂寄存器)—INTSUBMSK(子中断屏蔽寄存器)2.7.8异步串行口UARTS3