嵌入式系统的原理及应用.ppt
嵌入式系统的原理及应用,2.7 S3C2410 ARM微处理器简介,Samsung 公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。采用272 脚FBGA 封装,内含一个ARM920T 内核。为了降低系统成本,S3C2410A 提供了以下丰富的片内外围:1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示器);SDRAM控制器;3个通道的UART;4个通道的DMA;,2.7 S3C2410 ARM微处理器简介,4个具有PWM功能的计时器和1个内部时钟;8通道的10位ADC;触摸屏接口;I2C总线接口;1个USB主机接口,1个USB设备接口;2个SPI接口;SD接口和MMC卡接口;117位通用I/O口和24位外部中断源。,2.7 S3C2410 ARM微处理器简介,S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了一种叫做AMBA新型总线结构。S3C2410A显著特性是CPU核心。ARM920T实现了MMU,AMBA BUS和Harvard高速缓冲体系结构。这一结构具有独立的16KB指令Cache和16KB数据Cache,每个都是由8字长的行(line)构成。通过提供一系列完整的系统外围设备,S3C2410A大大减少了整个系统的成本,消除了为系统配置额外器件的需要。,S3C2410X和S3C2410A的区别,A/D 9位升到10位;MMC 的接口频率从10M 升到 20M。其他功能一样!管脚兼容,封装一样。S3C2410A可以替代S3C2410X。S3C2410X01已经停产。,嵌入式系统的软硬件框架,串口、并口、USB、以太网等,LED、LCD、触摸屏、鼠标、键盘等,Linux、uCLinux、uC/OS-II、WINDOWS CE等,嵌入式系统的开发步骤,嵌入式系统的开发步骤,系统需求分析:确定设计任务和目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。,嵌入式系统体系结构设计,体系结构设计:描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。,嵌入式系统的开发步骤,嵌入式系统体系结构设计,硬件/软件协同设计:基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。,系统集成:把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。,系统测试:对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。,JXARM9-2410教学系统的硬件组成,以武汉创维特公司生产的JXARM9-2410教学系统为原型,详细分析系统的硬件设计步骤、实现细节以及调试技巧等。,S3C2410X内部结构图,2.7.1 内部结构,Clock Cont.,Interrupt Cont.,JTAG,PowerManagement,ARM920T Core200MHz,LCD DMA,LCD Cont.,4 Channel DMAController,Bus Cont.Arbiter/Decoder,USB HostCONT.,NandFlash Cont.,Memory Cont.,AHB,Bridge,UARTS,USB Devices,SDI/MMC,Watchdog Timer,BUS Cont.,SPI,I2C,I2S,GPIO,RTC,ADC,S3C2410A的272 脚FBGA 封装,2.7.2 S3C2410A 的启动,S3C2410A支持从NAND Flash启动,NAND Flash具有容量大,比NOR Flash价格低等特点。系统采用NAND Flash与SDRAM组合,可以获得非常高的性价比。S3C4120X具有三种启动方式,可通过OM 1:0管脚(OM0为管脚U14,OM1为管脚U15)进行选择。OM 1:0=00从Nand Flash 启动;OM 1:0=01从16位宽的ROM启动;OM 1:0=10从32位宽的ROM启动;OM 1:0=11TEST模式。,2.7.3 存储器控制器,FLASH ROM属于真正的单电压芯片,在使用上很类似EPROM,因此,有些书籍上便把FLASH ROM作为EPROM的一种。事实上,二者还是有差别的。FLASH ROM在擦除时,也要执行专用的刷新程序,但是在删除资料时,并非以Byte为基本单位,而是以Sector(又称Block)为最小单位,Sector的大小随厂商的不同而有所不同;只有在写入时,才以Byte为最小单位写入;FLASH ROM芯片的读和写操作都是在单电压下进行,不需跳线,只利用专用程序即可方便地修改其内容。DRAM,动态随机存取存储器,需要不断的刷新(ms级),才能保存数据。而且是行列地址复用的,许多都有页模式。,2.7.3 存储器控制器,SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。需要更大的硅片面积,成本较高。它的存取时间比DRAM要短得多,经常用于Cache。SDRAM,同步的DRAM,即数据读写需要时钟来同步。因而能够工作在较高的时钟频率下。数据从存储元(memory cell)被流水化地取出,最后突发式(burst)输出到总线。DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM。,2.7.3 存储器控制器(续1),存储器控制是通过相关的寄存器来实施的。寄存器分为控制寄存器和状态寄存器。可以给控制寄存器赋值以得到所需要的状态,而状态寄存器会根据情况自行产生变化。不要试图控制状态寄存器。存储器控制器是由若干寄存器组成。了解这些寄存器,就可以阅读或编写Bootloader程序了。,2.7.3 存储器控制器(续1),可通过软件选择大小端 地址空间:每个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存储周期可编程控制。,2.7.3 存储器控制器(续2),与存储器有关的寄存器主要有:总线宽度和等待控制寄存器BWSCON;组控制寄存器BANKCONn;REFRESH控制寄存器;BANKSIZE控制寄存器;SDRAM模式控制寄存器MRSRB6,MRSRB7。,(1)总线宽度和等待控制寄存器BWSCON,bank0的数据总线(nGCS0)必须首先设置成16 位或32 位的。因为bank0 通常作为引导ROM 区(映射到地址0 x0000-0000),在复位时,系统将检测OM1:0上的逻辑电平,并据此来决定bank0 的总线宽度。BWSCON寄存器描述了bank1bank7数据总线宽度和等待控制。总线宽度可以是8位、16位和32位。每个bank_n(n=17)用该寄存器的4位来描述,分别是UB/LB(即高8位和低8位)、是否需要总线访问等待周期、数据总线宽度的是多少(占用了2位)。如果对每个bank使能WAIT功能,当对某个bank区进行访问时,nOE的低电平有效时间就会在nWAIT引脚的控制下延长。从tacc-1时刻开始检测nWAIT的状态。在采样到nWAIT为高电平后的下一个时钟,nOE将恢复高电平。nWAIT对nWE信号的作用与对nOE信号相同。,(2)组控制寄存器(nGCS0 nGCS7),BANKCON7,2.7.4 Nand Flash控制器,当前,NOR flash存储器的价格比较昂贵,而SDRAM和NAND flash存储器的价格相对来说比较合适,这样就激发了一些用户产生希望从NAND flash启动和引导系统,而在SDRAM上执行主程序代码的想法。S3C2410A恰好满足这一要求,它可以实现从NAND flash上执行引导程序。S3C2410A具备一个内部SRAM缓冲器-“Steppingstone”。当系统启动时,NAND flash存储器的前面4KByte字节将被自动载入到Steppingstone中,然后系统自动执行这些载入的引导代码。,总线控制信号,S3C2410X的引脚信号描述,SDRAM/SRAM,S3C2410X的引脚信号描述,NAND Flash,S3C2410X的引脚信号描述,NAND FLASH 模式配置,通过NFCONF寄存器配置NAND flash;写NAND flash命令到NFCMD寄存器;写NAND flash地址到NFADDR寄存器;在读写数据时,通过NFSTAT寄存器来获得NAND flash的状态信息。应该在读操作前或写入之后检查R/nB信号(准备好/忙信号);通过NFDATA读写数据。,NAND Flash与Nor Flash,NAND Flash与NOR Flash是有很大不同的。NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NAND Flash用复杂的I/O口来串行地存取数据,各个产品或厂商的方法各不相同。8个引脚用来传送控制、地址和数据信息。所有Flash器件都受位交换现象的困扰,此问题更多见于NAND Flash。必须采用错误检测/错误更正(EDC/ECC)算法确保可靠性。,2.7.5 时钟和电源管理,(1)时钟控制 S3C2410A能够产生3种时钟信号,分别是:FCLK应用于CPU的时钟,HCLK用于AHB Bus各种外围设备,PCLK 用于APB Bus各种接口设备。其中FCLK 应用的就是MPLL的频率,不用设置。(2)USB控制 主要对USB的时钟参数进行配置。,时钟和电源由3部分组成:时钟控制、USB控制和电源控制。,Table 7-1.Clock Source Selection at Boot-Up Figure 7-3.Main Oscillator Circuit Examples core.pdf,FCLK is used by ARM920T.HCLK is used for AHB bus,which is used by the ARM920T,the memory controller,the interrupt controller,the LCD controller,the DMA and the USB host block.PCLK is used for APB bus,which is used by the peripherals such as WDT,IIS,I2C,PWM timer,MMC interface,ADC,UART,GPIO,RTC and SPI.,Figure 7-1.Clock Generator Block Diagram,The S3C2410X supports selection of Dividing Ratio between FCLK,HLCK and PCLK.This ratio is determined by HDIVN and PDIVN of CLKDIVN control register.p231,2.7.5 时钟和电源管理,时钟和电源由3部分组成:时钟控制、USB控制和电源控制。,(3)电源控制Figure 7-7.The Clock Distribution Block Diagram p232 S3C2410A通过4种电源管理模式有效地控制了功耗:NORMAL模式SLOW模式IDLE模式POWER-OFF模式,CLOCK GENERATOR&POWER MANAGEMENT SPECIAL REGISTER,Register Address R/W Description Reset ValueMPLLCON 0 x4C000004 R/W MPLL configuration register 0 x0005C080UPLLCON 0 x4C000008 R/W UPLL configuration register 0 x00028080PLLCON Bit Description Initial StateMDIV 19:12 Main divider control 0 x5C/0 x28PDIV 9:4 Pre-divider control 0 x08/0 x08SDIV 1:0 Post divider control 0 x0/0 x0,CLOCK CONTROL REGISTER(CLKCON)Register Address R/W Description Reset ValueCLKCON 0 x4C00000C R/W Clock generator control register 0 x7FFF0,2.7.6 输入/输出口,S3C2410A 有117多功能I/O口,它们分别是:Port A(GPA):23-输出口 Port B(GPB):11-输入/输出口 Port C(GPC):16-输入/输出口 Port D(GPD):16-输入/输出口 Port E(GPE):16-输入/输出口 Port F(GPF):8-输入/输出口 Port G(GPG):16-输入/输出口 Port H(GPH):11-输入/输出口,2.7.6 输入/输出口,每个口通过三个寄存器进行配置及读写数据。分别是:GPxCON、GPxDAT、GPyUP,其中x为AH,y为BH。(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所示。,中断处理框图,Figure 14-2.Priority Generating Block p357,2.7.7 中断,中断异常处理模块总共由以下8个寄存器构成:SRCPND(中断源悬挂寄存器)INTMOD(中断模式寄存器)INTMSK(中断屏蔽寄存器)PRIORITY(中断优先级寄存器)INTPND(中断悬挂寄存器)INTOFFSET(中断偏移寄存器)SUBSRCPND(子中断源悬挂寄存器)INTSUBMSK(子中断屏蔽寄存器),2.7.8 异步串行口UART,S3C2410A 的UART(Universal Asynchron-ous Receiver and Transmitter)提供了三个独立的异步串行I/O口。每个UART都可工作在中断模式或DMA模式,即产生中断或DMA请求以在CPU和UART之间传送数据。使用系统时钟,UART最高可以支持230.4K bps 的位传输率。如果采用外部时钟,则UART可以实现更高速度的传输;每个UART包括2个16字节的接收/发送FIFO。,2.7.8 异步串行口UART,共有11类UART寄存器其中x=0,1,2;y=0,1。,UFSTATx FIFO状态寄存器 UMSTATy Modem状态寄存器 UTXHx 发送缓冲区寄存器 URXHx 接收缓冲区寄存器 UBRDIVx 波特率约数寄存器,ULCONx 线控制寄存器 UCONx 控制寄存器 UFCONx FIFO控制寄存器 UMCONy Modem控制寄存器 UTRSTATxTX/RX状态寄存器 UERSTATx 错误状态寄存器,2.7.8 异步串行口UART,(1)UART的操作模式数据收发模式红外模式自动流控模式Loopback模式,2.7.8 异步串行口UART,自动流控模式 S3C2410的UART0和UART1都可以通过各自的nRTS和nCTS信号来实现自动流控。在自动流控(AFC)模式下nRTS取决于接收端的状态,而nCTS控制了发送端的操作。具体地说:只有当nCTS有效时(表明接收方的FIFO已经准备就绪来接收数据了),UART才会将FIFO中的数据发送出去。在UART接收数据之前,只要当接收FIFO有至少2-byte空余的时候,nRTS就会被置为有效。图2-11是UART 自动流控模式的连接方式。,LoopBack操作模式,S3C2410 CPU的UART提供了一种测试模式,也就是这里所说的LoopBack模式。在设计系统的具体应用时,为了判断通讯故障是由于外部的数据链路上的问题,还是CPU内驱动程序或CPU本身的问题,这就需要采用LoopBack模式来进行测试。在LoopBack模式中,数据发送端TXD在UART内部就从逻辑上与接收端RXD连在一起,可以来验证数据收发是否正常。,UART控制信号,S3C2410X的引脚信号描述,(2)中断/DMA请求产生,S3C2410的每个UART都有7种状态,分别是:,接收就绪、发送缓冲空闲、发送移位器空闲。,它们在UART状态寄存器 UTRSTATn/UERSTATn 中有相应的标志位。,溢出覆盖(Overrun)错误奇偶校验错误帧出错断线错误,(3)波特率发生器,每个UART控制器都有各自的波特率发生器来产生发送和接收资料所用的序列时钟。波特率发生器的时钟源可以CPU内部的系统时钟,也可以从CPU的 UCLK 管脚由外部取得时钟信号,并且可以通过 UCONn 选择各自的时钟源。波特率产生的具体计算方法如下:当选择CPU内部时钟时:UBRDIVn=(int)(PCLK/(bps*16)1,bps为所需要的波特率值,PCLK为CPU内部外设总线(APB)的工作时钟。当需要得到更精确的波特率时,可以选择由 UCLK 引入的外部时钟来生成。UBRDIVn=(int)(UCLK/(bps*16)1,