基于S3C2410的系统硬件设计(上).ppt_第1页
基于S3C2410的系统硬件设计(上).ppt_第2页
基于S3C2410的系统硬件设计(上).ppt_第3页
基于S3C2410的系统硬件设计(上).ppt_第4页
基于S3C2410的系统硬件设计(上).ppt_第5页
已阅读5页,还剩154页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第五章基于S3C2410的系统硬件设计,(上),2,第五章 基于S3C2410的系统硬件设计,5.1 S3C2410 简介 5.2 最小系统设计 5.3 中断系统设计 5.4 DMA设计 5.5 I/O接口扩展 5.6 AD、DA接口设计 5.7 PWM定时器 5.8 人机接口设计 5.9 通信接口设计,3,5.1 S3C2410简介,S3C2410是Samsung公司推出的16/32位RISC处理器,主要面向手持设备以及高性价比、低功耗的应用。 CPU内核采用的是ARM公司设计的16/32位ARM920T RISC处理器。,S3C2410A提供一组完整的系统外围设备:,2个USB主设备接口,1个USB从设备接口; 4通道PWM定时器和1通道内部定时器; 看门狗定时器; 117位通用I/O口和24通道外部中断源; 电源控制模式包括:正常、慢速、空闲和掉电四种模式; 8通道10位ADC和触摸屏接口; 具有日历功能的RTC; 使用PLL的片上时钟发生器。,1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电; 具有16KB的ICache和16KB的DCache以及MMU; 外部存储器控制器; LCD控制器提供1通道LCD专用DMA; 4通道DMA并有外部请求引脚; 3通道UART和2通道SPI; 1通道多主机IIC总线和1通道IIS总线控制器; SD主接口版本1.0和MMC卡协议2.11兼容版;,4,S3C2410结构框图,5,S3C2410X Pin Assignments (272-FBGA),6,7,272-Pin FBGA Pin Assignments Pin Number Order (Sheet 1 of 3),8,272-Pin FBGA Pin Assignments Pin Number Order (Sheet 2 of 3),9,272-Pin FBGA Pin Assignments Pin Number Order (Sheet 3 of 3),10,S3C2410X Signal Descriptions (Sheet 1 of 5),11,S3C2410X Signal Descriptions (Sheet 2 of 5),12,S3C2410X Signal Descriptions (Sheet 3 of 5),13,S3C2410X Signal Descriptions (Sheet 4 of 5),14,S3C2410X Signal Descriptions (Sheet 5 of 5),15,第五章 基于S3C2410的系统硬件设计,5.1 S3C2410 简介 5.2 最小系统设计 5.3 中断系统设计 5.4 DMA设计 5.5 I/O接口扩展 5.6 AD、DA接口设计 5.7 PWM定时器 5.8 人机接口设计 5.9 通信接口设计,16,5.2 什么是最小系统,嵌入式微处理器芯片自己是不能独立工作的,需要一些必要的外围元器件给它提供基本的工作条件。 一个 ARM 最小系统一般包括: (1) ARM 微处理器芯片 (2) 电源电路、复位电路,晶振电路, (3) 存储器( FLASH 和 SDRAM ), (4) UART(RS232及以太网)接口电路。 (5) JTAG 调试接口。,17,最小系统结构框图,最小系统例板,18,嵌入式最小系统硬件功能如下:,微处理器:S3C2410是系统工作和控制中心; 电源电路:为S3C2410核心部分提供所需的1.80V工作电压,为部分外围芯片提供3.0V的工作电压; 晶振电路:为微处理器及其他电路提供工作时钟,及系统中S3C2410芯片使用32KHz或32.768KHz无源晶振; Flash存储器:存放嵌入式操作系统、用户应用程序或者其他在系统掉电后需要保存的用户数据等;,最小系统结构框图,19,嵌入式最小系统硬件功能如下:,SDRAM:作为系统运行时的主要区域,系统及用户数据、堆栈均位于该存储器中; 串行接口:用于系统与其他应用系统的短距离双向串行通信和构建交叉编译环境; JTAG接口:对芯片内部所有部件进行访问,通过该接口对系统进行调试、编程等; 系统总线扩展:引出地址总线、数据总线和必须的控制总线,便于用户根据自身的特定需求,扩展外围电路。,最小系统结构框图,20,在嵌入式系统中,最小系统虽然简单,但是作为整个系统正常运行的基本条件,因此其稳定可靠的运行是至关重要的。因此,在嵌入式系统中,往往将最小系统制成一个核心板,其他的各种接口和外围扩展设备都制成一个接口板来组成一个系统。,接口板,核心板,21,22,5.2.1 时钟和功率管理,时钟和功率管理模块由三部分组成:时钟控制,USB控制和功率控制。 S3C2410A的时钟控制逻辑能够产生系统所需要的时钟,包括 CPU的FCLK,AHB总线接口的HCLK,和 APB总线接口的PCLK。 S3C2410A有两个PLL(MPLL和UPLL) ,一个MPLL用于FCLK,HCLK,PCLK,另一个UPLL用于USB模块(48MHZ)。时钟控制逻辑能够由软件控制不将 PLL连接到各接口模块以降低处理器时钟频率,从而降低功耗。,23,FCLK用于 ARM920T; HCLK用于 AHB总线(包括 ARM920T,存储控制器,中断控制器,LCD控制器,DMA和 USB主机); PCLK 用于APB总线 (包括外设如WDT,IIS,I2C,PWM, PWM,TIMER, MMC, ADC, UART, GPIO, RTC, SPI)。,24,1、时钟电路结构,时钟架构的方块图如下图所示:主时钟源由一个外部晶振或者外部时钟产生。时钟发生器包括连接到一个外部晶振的振荡器和两个 PLL(MPLL和UPLL)用于产生系统所需的高频时钟。 时钟源选择 下表 描述了模式控制引脚(OM3和OM2)和选择时钟源之间的对应关系。OM3:2的状态由OM3和 OM2引脚的状态在 nRESET的上升沿锁存得到。,( 一 ) 时钟管理,25,26,2、锁相环 PLL,位于时钟信号发生器的内部 MPLL 用于将输出信号和相关输入信号在相位和频率上同步起来。它包括如下图所示的一些基本模块:,27,28,根据 DC 电压产生相应比例关系频率的压控振荡器(VCO),除数 P(对输入频率 Fin 进行 P 分频),除数 M(对VCO 的输出频率进行 M 分频,分频后输入到相位频率探测器 PFD),除数 S(对MPLL 输出频率 Mpll 进行分频),相差探测器,charge pump,loop filter。MPLL的时钟输出 Mpll和输入时钟 Fin的关系如下式所示:,PLL的工作原理:,29,PLL控制寄存器(MPLLCON/UPLLCON),USB时钟控制,USB 主机接口和 USB 设备接口需要 48MHz 的时钟。在 S3C2410 中,是通过UPLL来产生这一时钟的,UCLK只有在 UPLL配置好后才会生效。,0x5C=92,0x28=40,30,PLL选择表,31,注: 1、默认值下MPLL为Fin的10倍频,UPLL为Fin的4倍频 1、尽管可以根据公式设置 PLL,但是推荐仅使用 推荐表里面的值。 2、如果要同时设置 UPLL 和 MPLL,请先设置 UPLL,然后设置 MPLL,且至少要间隔7个时钟周期。,32,上电复位(XTIpll)时钟锁定过程,下图显示了上电复位时的时钟行为。 晶振在几毫秒内开始振荡。当 OSC 时钟稳定后,PLL 根据默认 PLL 设置开始生效,但是通常这个时候是不稳定的,因此在软件重新配置 PLLCON 寄存器之前 FCLK 直接使用 Fin 而不是 MPLL,即使用户不希望改变PLLCON的默认值,用户也应该执行一遍写 PLLCON操作。FCLK在软件配置好 PLLCON之后锁定一段时间后连接到Mpll。,33,正常情况下改变 MPLL设置,正常模式下,用户可以通过写 P/M/S的值来改变 FCLK的频率,此时将会自动插入一段时间延迟,在这段延迟内 FCLK将停止,其时序如下图所示:,34,FCLK,HCLK,PCLK频率确定,S3C2410支持三者之间的比率可选,这个比率是由CLKDIVN寄存器的 HDIVN和 PDIVN决定的。,设置好 PMS 的值后,需要设置 CLKDIVN 寄存器。CLKDIVN 寄存器的值将在PLL锁定时间之后生效,在复位和改变功率模式后也是有效的。,35,36,S3C2410A有各种针对不同任务提供的最佳功率管理策略,功率管理模块能够使系统工作在如下 4种模式:正常模式,低速模式,空闲模式和掉电模式。,( 二 ) 功率管理,在 S3C2410 中,功率管理模块通过软件控制系统时钟来达到降低功耗的目的。这些策略牵涉到 PLL,时钟控制逻辑和唤醒信号。图显示了 S3C2410的时钟分配。,37,38,正常模式 正常模式下,所有的外设和基本的功能模块,包括功率管理模块,CPU 核心,总线控制器,存储控制器,中断控制器,DMA 和外部控制器都可以完全操作。但是除了基本的模块之外,其他模块都可以通过关闭其时钟的方法来降低功耗。,空闲模式 空闲模式下,除了总线控制器、存储控制器、中断控制器、功率管理模块以外的 CPU 时钟都被停止。EINT23:0、RTC 中断或者其他中断都可以将 CPU从空闲模式下唤醒。,39,低速模式 低速模式通过降低 FCLK和关闭 PLL来实现降低功耗。此时 FCLK是外部时钟(XTIpll or EXTCLK)的 n 分频。分频数由 CLKSLOW 寄存器的 SLOW_VAL 和CLKDIVN寄存器决定。 在低速模式下,PLL 是关闭的。当用户需要从低速模式切换到正常模式时,PLL 需要一个时钟稳定时间(PLL 锁定时间)。PLL 稳定时间是由内部逻辑自动插入的,大概需要150us,在这段时间内,FCLK还是使用低速模式下的时钟。,40,低速时钟控制寄存器(CLKSLOW),41,时钟控制寄存器 CLKCON,42,掉电模式 功率管理模块断开内部电源。因此除CPU和唤醒逻辑单元以外的外设都不会产生功耗。要执行掉电模式需要有两个独立的电源,其中一个给唤醒逻辑单元供电,另一个给包括 CPU在内的其他模块供电。在掉电模式下,第二个电源将被关掉。掉电模式可以由外部中断 EINT15:0或 RTC中断唤醒。,43,电源电路设计DC-DC转换芯片,有很多DC-DC转换器可完成到3.3V的转换,如Linear Technology的LT108X系列。常见的型号和对应的电流输出如下: LT1083 7.5A LT1084 5A LT1085 3A LT1086 1.5A,有很多DC-DC转换器可完成到2.5V的转换,常用的如Linear Technology的LT1761。,44,电源电路设计3.3V,需要使用3.3V的直流稳压电源,系统电源电路如下图所示:,DC 7.5V 2A直流电源,整流、定向,拨动开关,DC-DC转换芯片LT1086,滤波电路,45,电源电路设计2.5V,需要使用2.5V的直流稳压电源,系统电源电路如下图所示:,滤波电路,DC3.3V,46,电源电路,47,48,5.2.2 复位,S3C2410的nRESET管脚上,持续4个FCLK以上的低电平,将使其进入复位状态。 S3C2410的复位电路一般由复位芯片来实现。MAX811或IMP811芯片就是常用的复位芯片,它只有4个管脚。利用该芯片可以同时上电复位和手动复位,其复位时间不小于140ms。其引脚分布如下:,49,引脚说明,50,当Vcc信号低于门限电压时,IMP811的复位信号为低电平,而IMP812的复位信号则为高电平。并且在Vcc已经升至该门限之上后,保持这个信号最少140ms。 MR端的逻辑低电平将IMP811的RESET端设为低电平,而IMP812的复位则设为高电平。MR在内部通过一个20k电阻被拉至高电平并可由TTL/CMOS门或集电极/漏极开路输出驱动。MR不用时可为开路。 MR可用一个常开开关连接到地而无需外部去抖动电路。,51,其应用电路如下:,IMP811有六种电压门限以支持3V至5V系统:,52,5.2.3 JTAG,JTAG(Joint Test Action Group,联合测试行动小组1985 年制定的检测PCB 测试的一个标准, 1990 年被修改后成为IEEE 的一个标准, 即IEEE1149.1-1990。IEEE 1149.1 标准就是由JTAG 这个组织最初提出的,最终由IEEE 批准并且标准化的。所以,这个IEEE 1149.1 这个标准一般也俗称JTAG 调试标准。 一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC内置模块的寄存器,像UART,Timers,GPIO等等的寄存器 在理论上,通过JTAG可以访问CPU总线上的所有设备,所以应该可以写FLASH,但是FLASH写入方式和RAM大不相同,需要特殊的命令,而且不同的FLASH擦除,编程命令不同,而且块的大小,数量也不同,很难提供这一项功能。所以一般调试软件像AXD等不提供写Flash功能,或者仅支持少量几种Flash。,53,接口的主要信号接口就是这 5 个。下面,我先分别介绍这个 5 个接口信号及其作用。 Test Clock Input (TCK) TCK 为 TAP 的操作提供了一个独立的、基本的时钟信号,TAP 的所有操作都是通过这个时钟信号来驱动的。TCK在 IEEE 1149.1 标准里是强制要求的。 Test Mode Selection Input (TMS) TMS 信号用来控制 TAP 状态机的转换。通过 TMS 信号,可以控制 TAP 在不同的状态间相互转换。TMS信号在 TCK的上升沿有效。TMS在 IEEE 1149.1 标准里是强制要求的。,54,Test Data Input (TDI) TDI是数据输入的接口。 所有要输入到特定寄存器的数据都是通过 TDI 接口一位一位串行输入的(由 TCK驱动) 。TDI在 IEEE 1149.1 标准里是强制要求的。 Test Data Output (TDO) TDO是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过 TDO接口一位一位串行输出的(由 TCK驱动) 。TDO在 IEEE 1149.1 标准里是强制要求的。 Test Reset Input (TRST) TRST可以用来对TAP Controller进行复位 (初始化) 。 不过这个信号接口在IEEE 1149.1标准里是可选的,并不是强制要求的。因为通过 TMS也可以对 TAP Controller进行复位(初始化) 。,55,56,5.2.4 存储器扩展,S3C2410A的存储器控制器提供访问外部存储器所需要的存储器控制信号。,支持小/大端(通过软件选择) 地址空间:每bank有128M字节(总共有8个banks,共1G字节) 除bank0(只能是16/32位宽)之外,其他bank都具有可编程的访问大小(可以是8/16/32位宽) 总共有8个存储器banks(bank0bank7) 其中6个banks用于ROM,SRAM等 剩下2个banks用于ROM,SRAM,SDRAM等 7个固定的存储器bank(bank0bank6)起始地址 最后一个bank(bank7)的起始地址是可调整的 最后两个bank(bank6bank7)的大小是可编程的 所有存储器bank的访问周期都是可编程的 总线访问周期可以通过插入外部等待来延长 支持SDRAM的自刷新和掉电模式,特性,57,存储器映射,58,Bank0总线宽度 BOOT ROM 在地址上位于ARM 处理器的Bank0 区,它可具有多种数据总线宽度16位或32位,这个宽度是可以通过硬件设定的,即通过OM1:0引脚上的逻辑电平进行设定,如下表所示:,59,nWAIT引脚操作,在S3C2410A的存储器访问期间,nWAIT信号有效(低电平)将使得其访问周期相应(nOE或者new信号有效时间)的延长。,60,nXBREQ/nXBACK,当nXBREQ信号有效(低电平)时,S3C2410A将通过使nXBACK信号有效作出响应。同时,将使地址数据总线和存储器控制信号处于高阻(Hi-Z)状态,直到nXBREQ 信号无效为止。,61,总线宽度和等待控制寄存器BWSCON,62,63,ROM Memory Interface Examples,8-bit ROM,8-bit ROM 2,64,8-bit ROM 4,16-bit ROM,65,SRAM Memory Interface Examples,16-bit SRAM,16-bit SRAM 2,66,SDRAM Memory Interface Examples,16-bit SDRAM(8MB: 1Mb 16 4banks),16-bit SDRAM (16MB: 1Mb 16 4banks 2ea),67,SDRAM 电路图,68,BANK控制寄存器(BANKCONn: nGCS0-nGCS5),69,70,71,72,BANK控制寄存器(BANKCONn: nGCS6-nGCS7),73,5.2.5 NAND Flash和NOR Flash,NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。,NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。,NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。,Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。 执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距。,74,性能比较,NAND Flash和NOR Flash的比较,NOR的读速度比NAND稍快一些。 NAND的写入速度比NOR快很多。 NAND的4ms擦除速度远比NOR的5s快。 大多数写入操作需要先进行擦除操作。 NAND的擦除单元更小,相应的擦除电路更少,接口差别,NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。 NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。 NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。,75,容量和成本,NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。 NOR flash占据了容量为116MB闪存市场的大部分,而NAND flash只是用在8128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。,可用性和耐用性,采用flahs介质时一个需要重点考虑的问题是可用性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可用性。 寿命(耐用性) 在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。,76,位交换 所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。 一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。 当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。 这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可用性。 坏块处理 NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。 NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可用的方法不能进行这项处理,将导致高故障率。,77,软件支持,可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。 在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。 使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件。 驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。,78,Nor Flash 带有SRAM接口,有足够的地址引脚,可以很容易的对存储器内部的存储单元进行直接寻址。在实际的系统中,可以根据需要选择ARM处理器与Nor Flash的连接方式。下图给出了嵌入式最小系统在包含两块Nor Flash的情况下,ARM处理器与Nor Flash两种不同的连接方式。,ARM处理器与NOR Flash的接口,Nor Flash 接口方式,79,(1)双Flash独立片选,该方式是把两个Nor Flash芯片各自作为一个独立的单元进行处理。根据不同的应用需要,可以在一块Flash中存放启动代码,而在另一块Flash中建立文件系统,存放应用代码。该方式操作方便,易于管理。,(2)双Flash统一片选,该方式是把两个Nor Flash芯片合为一个单元进行处理,ARM处理器将它们作为一个并行的处理单元来访问,本例是将两个8bit的Nor Flash芯片SST39VF1601用作一个16bit单元来进行处理。对于N(N2)块Flash的连接方式可以此作为参考。,80,NOR FLASH 电路图,采用 AMD 公司的 nor flash,型号为 AM29LV160DB,容量 2Mbyte,兼容 Intel E28F128J3A/16Mbyte。,81,5.2.6 嵌入式系统的启动架构,嵌入式系统在启动时,引导代码、操作系统的运行和应用程序的加载主要有两种架构,一种是直接从Nor Flash启动的架构,另一种是直接从Nand Flash启动的架构。,(1)从Nor Flash启动,Nor Flash具有芯片内执行(XIP eXecute In Place ) 的特点,在嵌入式系统中常做为存放启动代码的首选。从Nor Flash启动的架构又可细分为只使用Nor Flash的启动架构和Nor Flash与Nand Flash配合使用的启动架构。下图 给出了这两种启动架构的原理框图。,82,启动架构,83,该架构充分利用了Nor Flash芯片内执行的特点,可有效提升系统性能。不足在于随着操作系统和应用代码容量的增加,需要更大容量昂贵的Nor Flash来支撑。,单独使用Nor Flash,在该架构中,引导代码、操作系统和应用代码共存于同一块Nor Flash中。系统上电后,引导代码首先在Nor Flash中执行,然后把操作系统和应用代码加载到速度更高的SDRAM中运行。另一种可行的架构是,在Nor Flash中执行引导代码和操作系统,而只将应用代码加载到SDRAM中执行。,84,Nor Flash和Nand Flash配合使用,Nor Flash的单独使用对于代码量较大的应用程序会增加产品的成本投入,一种的改进的方式是采用Nor Flash 和Nand Flash配合使用的架构。在该架构中附加了一块Nand Flash。Nor Flash(2M或4M)中存放启动代码和操作系统(操作系统可以根据代码量的大小选择存放于Nor Flash或者Nand Flash),而Nand Flash中存放应用代码,根据存放的应用代码量的大小可以对Nand Flash容量做出相应的改变。 系统上电后,引导代码直接在Nor Flash中执行,把Nand Flash中的操作系统和应用代码加载到速度更高的SDRAM中执行。也可以在Nor Flash中执行引导代码和操作系统,而只将Nand Flash中的应用代码加载到SDRAM中执行。该架构是当前嵌入式系统中运用最广泛的启动架构之一。,85,(2)从Nand Flash启动,SamSung公司的ARM920T系列处理器S3C2410支持从Nand Flash启动的模式,它的工作原理是将NandFlash中存储的前4KB代码装入一个称为Steppingstone(BootSRAM)的地址中,然后开始执行该段引导代码,从而完成对操作系统和应用程序的加载。这个过程不需要程序干涉,而是由内部控制器来完成的。 需要注意的是:你需要编写一个长度小于4K的引导程序,作用是将启动代码剩余部分拷贝到SDRAM中运行(NF地址不是线性的,程序不能直接运行,必须拷贝到线性RAM中) ,同时完成完成S3C2410的核心配置。,86,特性,支持读/擦除/编程NAND Flash存储器。 自动启动模式:复位后,启动代码被传送到Stepping stone中。传送完毕后,启动代码在Stepping stone中执行。 NAND Flash启动以后,4KB的内部SRAM缓冲器Stepping stone可以作为其他用途使用。 具备硬件ECC(校验码,Error Correction Code)生成模块(硬件生成校验码,通过软件校验)。 NAND Flash控制器不能通过DMA访问,可以使用LDM/STM指令来代替DMA操作。,5.2.7 S3C2410 NAND Flash控制器,相对于SDRAM 和 NAND flash,NOR flash价格越来越高,许多用户将启动代码放在NAND flash,而主程序代码放在SDRAM中。为了支持 NAND flash bootloader, S3C2410X 装配了NAND flash控制器以及4KB 的内部SRAM 缓冲区,这个缓冲区叫做 “Steppingstone”。当开始启动时, NAND flash 的前 4KB将被装入“Steppingstone” SDRAM ,同时利用硬件ECC 检查这些数据的有效性,装入完成之后,开始执行这些存放于SDRAM中的主程序。,87,NAND Flash控制器的结构框图,88,I/O7:0 : Data/Command/Address In/Out Port (shared with the data bus) CLE : Command Latch Enable (Output) ALE : Address Latch Enable (Output) nCE : NAND Flash Chip Enable (Output) nRE : NAND Flash Read Enable (Output) nWE : NAND Flash Write Enable (Output) R/nB: NAND Flash Ready/nBusy (Input),PIN CONFIGURATION,89,NAND Flash的工作方式,90,91,NAND Flash存储器的时序,92,NAND FLASH MEMORY MAPPING,93,SPECIAL FUNCTION REGISTERS,94,95,96,ARM处理器与Nand Flash接口技术,Nand Flash接口信号比较少,地址,数据和命令总线复用。Nand Flash的接口本质上是一个I/O接口,系统对Nand Flash进行数据访问的时候,需要先向Nand Flash发出相关命令和参数,然后再进行相应的数据操作。ARM处理器与Nand Flash的连接主要有三种方式,如下图所示:,Nand Flash 接口方式,97,(1)运用GPIO方式 运用GPIO管脚方式去控制Nand Flash的各个信号,在速度要求相对较低的时候,能够较充分的发挥NAND设备的性能。它在满足NAND设备时域需求方面将会有很大的便利,使得ARM处理器可以很容易的去控制NAND设备。该方式需要处理器提供充足的GPIO。,(2)运用逻辑运算方式进行连接 在该方式下,处理器的读和写使能信号通过与片选信号CS进行逻辑运算后去驱动NAND设备对应的读和写信号。图中b例为SamSung公司ARM7TDMI系列处理器S3C44B0与Nand Flash K9F2808U0C的连接方式。,98,(3)直接芯片使能 有些ARM处理器如S3C2410内部提供对NAND设备的相应控制寄存器,通过控制寄存器可以实现ARM处理器对NAND设备相应信号的驱动。该方式使得ARM处理器与NAND设备的连接变得简单规范,图中c例给出了ARM处理器S3C2410与Nand Flash K9F2808U0C的连接方式。,99,16Mbyte NAND FLASH,型号为 K9F2808UOB,NAND FLASH 电路图,100,第五章 基于S3C2410的系统硬件设计,5.1 S3C2410 简介 5.2 最小系统设计 5.3 中断系统设计 5.4 DMA设计 5.5 I/O接口扩展 5.6 AD、DA接口设计 5.7 PWM定时器 5.8 人机接口设计 5.9 通信接口设计,101,5.3 中断系统设计,5.3.1 ARM9的异常事件管理 5.3.2 ARM的中断原理 5.3.3 S3C2410A的中断控制器 5.3.4 中断编程实例,102,5.3.1 ARM920T的异常事件管理,ARM920T的异常向量表有两种存放方式,一种是低端存放(从0x00000000处开始存放),另一种是高端存放(从0xfff000000处开始存放)。,ARM920T能处理有8个异常,他们分别是:Reset,Undefined instruction,Software Interrupt,Abort (prefetch),Abort (data),Reserved,IRQ,FIQ ,它们的矢量表是:,Address Instruct 0x00000000: b Handle_Reset 0x00000004: b HandleUndef 0x00000008: b HandleSWI 0x0000000C: b HandlePrefetchAbort 0x00000010: b HandleDataAbort 0x00000014: b HandleNotUsed 0x00000018: b HandleIRQ 0x0000001C: b HandleFIQ,103,异常矢量表的生成一般由一段汇编程序完成:,_start: b Handle_Reset b HandleUndef b HandleSWI b HandlePrefetchAbort b HandleDataAbort b HandleNotUsed b HandleIRQ b HandleFIQ other codes ,这部分片段一般出现在一个名叫“head.s”的汇编文件的里,“b Handle_Reset”这条语句就是系统上电之后运行的第一条语句。,104,我们可以看到每条指令占用了4个字节。 上电后,PC指针会跳转到Handle_Reset处开始运行。以后系统每当有异常出现,则CPU会根据异常号,从内存的0x00000000处开始查表做相应的处理,比如系统触发了一个IRQ异常,IRQ为第6号异常,则CPU将把PC指向0x00000018地址(4*6=24=0x00000018)处运行,该地址的指令是跳转到“中断异常服务例程”(HandleIRQ)处运行。,105,3.3.2 ARM的中断原理,S3C2410共有56个中断源,可以产生32个中断请求,这些中断源来自两部分:一部分来自片内外设(如DMA、UART等),一部分来自于外部引脚。 ARM920T内核共具有2种类型的中断模式:FIQ和IRQ。IRQ和FIQ之间的区别是:对于FIQ必须尽快处理事件并离开这个模式;IRQ可以被FIQ中断,但IRQ不能中断FIQ;为了使FIQ更快,FIQ模式具有更多的私有寄存器。 中断控制器的角色,就是响应来自片内或片外的中断源的中断请求,向ARM920T提出FIQ(快速中断请求)或IRQ(普通中断请求)的中断请求,请求内核对该中断中断进行处理。 多个中断请求发生时,由硬件优先级逻辑确定应该有哪个中断得到服务,同时将仲裁结果写入中断挂起寄存器,以便用户识别中断类型。,106,S3C2410的56个中断源,107,处理中断的步骤如下: (1)保存现场。保存当前的PC值到R14,保存当前的程序运行状态到SPSR。 (2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。 (3)获取中断源。以异常向量表保存在低地址处为例,若是IRQ中断,则PC指针跳到0x18处;若是FIQ中断,则跳到0x1C处。IRQ或FIQ的异常向量地址处一般保存的是中断服务子程序的地址,所以接下来PC指针跳入中断服务子程序处理中断。-这些工作都是由硬件自动完成,108,处理中断的步骤如下: (4)中断处理。为各种中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识别到底哪一个中断发生了。进而调用相应的函数进行中断处理。 (5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR中,R14中保存的被中断程序的地址恢复到PC中,进而继续执行被中断的程序-这些工作必须由用户在中断处理函数中实现。,109,5.3.2 S3C2410A的中断控制器,中断控制器使用的寄存器,110,INTMOD寄存器,有效位为32位,每一位与SRCPND中各位相对应,它的作用是指定该位相应的中断源处理模式(IRQ还是FIQ)。若某位为0,则该位相对应的中断按IRQ模式处理,为1则以FIQ模式进行处理,该寄存器初始化值为0x00000000,即所有中断皆以IRQ模式进行处理。,111,SRCPND/ SUBSRCPND寄存器,这两个寄存器在功能上是相同的,它们是中断源引脚寄存器,在一个中断异常处理流程中,中断信号传进中断异常处理模块后首先遇到的就是SRCPND/ SUBSRCPND,这两个寄存器的作用是用于标示出哪个中断请求被触发。 SRCPND的有效位为32,SUBSRCPND 的有效位为11,它们中的每一位分别代表一个中断源,每个位的初始值皆为0。假设现在系统触发了TIMER0中断,则第10bit将被置1,代表TIMER0中断被触发,该中断请求即将被处理(若该中断没有被屏蔽的话)。 这两个寄存器的各个位的置1是由相应的中断源自动引起的,而在中断服务程序中必须将其清0,否则CPU将认为是又一次中断的到来。 SRCPND(地址为0X4A000000)为主中断源挂起寄存器,SUBSRCPND(地址为0X4A000018)为副(次)中断源挂起寄存器,112,113,SUB SOURCE PENDING (SUBSRCPND) REGISTER,114,INTMSK/ INTSUBMSK 寄存器,中断屏蔽寄存器 ,INTMSK为主中断屏蔽寄存器,INTSUBMSK为副中断屏蔽寄存器。INTMSK有效位为32,INTSUBMSK有效位为11,这两个寄存器各个位与SRCPND和SUBSRCPND分别对应。 它们的作用是决定该位相应的中断请求是否被处理。若某位被设置为1,则该位相对应的中断产生后将被忽略(CPU不处理该中断请求),设置为0则对其进行处理。 这两个寄存器初始化后的值是0xFFFFFFFF和0x7FF,既默认情况下所有的中断都是被屏蔽的。,115,优先级生成模块,CPU某个时刻只能对一个中断源进行中断处理,如果现在有3个中断同时发生了,那CPU要按什么顺序处理这个3个中断呢?这正是引入优先级判断的原因所在,通过优先级判断,CPU可以按某种顺序逐个处理中断请求。3sc2410的优先级判断分为两级。 如下图所示,SRCPND寄存器对应的32个中断源总共被分为6个组,每个组由一个ARBITER(05)寄存器对其进行管理。中断必须先由所属组的ARBITER(05)进行第一次优先级判断(第一级判断)后再发往ARBITER6进行最终的判断(第二级判断)。 我们能够控制的是某个组里面各个中断的优先级顺序。怎么控制?通过PRIORITY寄存器进行控制。,116,117,PRIORITY寄存器,118,PRIORITY寄存器内部各个位被分为两种类型,一种是ARB_MODE,另一种为ARB_SEL, ARB_MODE类型有7组对应ARBITER(06),ARB_SEL类型有7组对应ARBITER(06)。现在我将以ARBITER2为例,讲解中断组与PRIORITY寄存器中ARB_SEL, ARB_MODE之间的相互关系。,119,首先我们看到ARBITER2寄存器管理的该组中断里包括了6个中断,分别是INT_TIMER0,INT_TIMER1,INT_TIMER2,INT_TIMER3,INT_TIMER4,INT_UART2,它们的默认中断请求号分别为REQ0,REQ1,REQ2,REQ3,REQ4,REQ5。 我们先看PRIORITY寄存器中的ARB_SEL2,该参数由两个位组成,初始值为00。从该表可以看出00定义了一个顺序 0-1-2-3-4-5 ,这个顺序就是这组中断组的优先级排列,这个顺序指明了以中断请求号为0(REQ0)的INT_TIMER0具有最高的中断优先级,其次是INT_TIMER1,INT_TIMER2。 假设现在ARB_SEL2的值被我们设置为01。则一个新的优先级次序将被使用,01对应的优先级次序为0-2-3-4-1-5,从中可以看出优先级最高和最低的中断请求和之前没有变化,但本来处于第2优先级的INT_TIMER1中断现在变成了第5优先级。,120,从ARB_SEL2被设置为00,01,10,11各个值所出现的情况我们可以看出,除最高和最低的优先级不变以外,其他各个中断的优先级其实是在做一个旋转排列(rotate)。为了达到对各个中断平等对待这一目标,我们可以让优先级次序在每个中断请求被处理完之后自动进行一次旋转,如何自动让它旋转呢?我们可以通过ARB_MODE2达到这个目的,该参数只有1个 bit,置1代表开启对应中断组的优先级次序旋转,0则为关闭。事实上当该位置为1之后,每处里完某个组的一个中断后,该组的ARB_SEL便递增在1(达到11后恢复为00)。,121,INTPND 寄存器,INTPND 寄存器可能是整个中断处理过程中我们要特别注意的一个寄存器了,他的操作比较特别 。,122,INTPND 寄存器与SRCPND长得一模一样,但他们在中断异常处理中却扮演着不同的角色,如果说SRCPND是中断信号进入中断处理模块后所经过的第一个场所的话,那么INTPND 则是中断信号在中断处理模块里经历的最后一个寄存器。 SRCPND是中断源挂起寄存器,某个位被置1表示相应的中断被触发,但我们知道在同一时刻内系统可以触发若干个中断,只要中断被触发了,SRCPND的相应位便被置1,也就是说SRCPND 在同一时刻可以有若干位同时被置1,然而INTPND则不同,他在某一时刻只能有1个位被置1,INTPND 某个位被置1(该位对应的中断在所有已触发的中断里具有最高优先级且该中断没有被屏蔽),则表示CPU即将或已经在对该位相应的中断进行处理。 总结:SRCPND说明了有什么中断被触发了,INTPND说明了CPU即将或已经在对某一个中断进行处理。,123,特别注意:,每当某一个中断被处理完之后,我们必须手动地把SRCPND/SUBSRCPND , INTPND三个寄存器中与该中断相应的位由1设置为0。 INTPND的操作很特别,它的特别之处就在于对当我们要把该寄存器中某个值为1的位设置为0时,我们不是往该位置0,而是往该位置1。 假设SRCPND=0x00000003,INTPND=0x00000001,该值说明当前0号中断和1号中断被触发,但当前正在被处理的是0号中断,处理完毕后我们应该这样设置INTPND和SRCPND: SRCPND=0x00000002 /位0被置为0 INTPND =0x00000001 /位0被置为0(方法是往该位写入1),124,INTOFFSET寄存器,它的作用只是用于表明哪个中断正在被处理。,若当前INT_TIMER0被触发了,则该寄存器的值为10,以此类推。,125,24个外部中断占用GPF0GPF7(EINT0EINT7)、GPG0GPG15(EINT8EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。 EXTINT0EXTINT2寄存器:设定EINT0EINT23的触发方式。 EINTFLT0EINTFLT3寄存器:控制滤波时钟和滤波宽度。 EINTPEND寄存器:这个是中断挂起寄存器,清除时要写1。当一个外部中断(EINT4EINT23)发生后,那么相应的位会被置1。为什么没有EINT0EINT3,看看SRCPND就知道了. EINTMASK寄存器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论