嵌入式微处理器结构与应用:S3C2410硬件设计_第1页
嵌入式微处理器结构与应用:S3C2410硬件设计_第2页
嵌入式微处理器结构与应用:S3C2410硬件设计_第3页
嵌入式微处理器结构与应用:S3C2410硬件设计_第4页
嵌入式微处理器结构与应用:S3C2410硬件设计_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

5CHAPTERS3C2410硬件系统设计本节提要132546基于ARM的硬件系统体系结构存储器接口设计UART接口I/O接口设计GPIO接口其它接口技术S3C2410ARM920T内核结构S3C2410的内部结构实验平台的体系结构2410核心资源总线隔离驱动168Pin扩展槽网卡设备LCD驱动音频电路串口设备USB设备PCMCIAIDE/CF卡SD卡接口IO扩展电机等其他资源局部总线扩展总线本节提要132546基于ARM的硬件系统体系结构存储器接口设计UART接口I/O接口设计GPIO接口其它接口技术S3C2410寻址原理 ARM920T内核提供了32位的地址总线,可以访问4G的线性地址空间,而S3C2410的内部地址总线是30bit(HADDR[29:0],能够访问的最大外部地址空间是1G:0x00000000~0x3fffffff.S3C2410仅利用了ARM920T的32位地址总线的低30位S3C2410将1G的外部地址空间分成了8个存储器组(bank),每个组的大小为128M,其中6个用于ROM、SRAM等存储器,2个用于ROM、SRAM、SDRAM等存储器基于芯片体积及成本的考虑,S3C2410对外寻址时,采用了部分译码的方式,即低位地址线用于外围存储器的片内寻址,而高位地址线用于外围存储器的片外寻址由于每个存储器组的起始地址及空间大小固定,对于系统要访问的任意外部地址,S3C2410可以方便地利用内部地址总线的高3位HADDR[29:27]来选择该地址属于哪一个bank,从而激活相应的bank选择信号使用外部地址总线A[26:0]来实现相应bank的内部寻址,寻址范围为128M,从而使得其外围地址访问空间为1GB(128MB×8)S3C2410正是通过这种机制来完成外部地址空间的寻址全过程2410的存储器系统—

可通过软件选择大小端—

地址空间:每个Bank128Mbytes(总共

1GB)—除bank0(16/32-bit)外,所有的Bank都可以通过编程选择总线宽度=(8/16/32-bit)—

共8个banks6个Bank用于控制ROM,SRAM,etc.剩余的两个Bank用于控制

ROM,SRAM,SDRAM,etc.—7个Bank固定起始地址;—

最后一个Bank可调整起始地址;—

最后两个Bank大小可编程—所有Bank存储周期可编程控制;S3C2410的存储器配置Bank6/Bank7地址分布Bank0总线宽度配置与2片8位的ROM连接方法与1片16位的ROM连接S3C2410与2片8的FLASH的连接方法与1片16M的SDRAM的连接方法与1片16M的SDRAM的连接方法相关寄存器总线宽度/等待控制寄存器(BWSCON)BANK控制寄存器(BANKCONn)刷新控制寄存器(REFRESH)BANK大小寄存器(BANKSIZE)SDRAM模式设置寄存器(MRSR)(bank6/7)总共13个寄存器,寄存器地址是连续的,基地址为BWSCON的地址0x48000000BWSCON具体设置参见数据手册P203BANKCONn具体设置参见数据手册P205刷新控制寄存器具体设置参见数据手册P207BANK大小寄存器具体设置参见数据手册P208SDRAM模式设置寄存器具体设置参见数据手册P209启动代码中的存储初始化常量定义;MemoryControllerdefinitionsMC_BASEEQU0x48000000;MemoryControllerBaseAddressBANKCON0_ValEQU0x00000700BANKCON1_ValEQU0x00000700BANKCON2_ValEQU0x00000700BANKCON3_ValEQU0x00000700BANKCON4_ValEQU0x00000700BANKCON5_ValEQU0x00000700BANKCON6_ValEQU0x00018005BANKCON7_ValEQU0x00018005BWSCON_ValEQU0x22111120REFRESH_ValEQU0x008E0459BANKSIZE_ValEQU0x000000B2MRSRB6_ValEQU0x00000030MRSRB7_ValEQU0x00000030分配连续的存储空间保存数据MC_CFGDCDBWSCON_ValDCDBANKCON0_ValDCDBANKCON1_ValDCDBANKCON2_ValDCDBANKCON3_ValDCDBANKCON4_ValDCDBANKCON5_ValDCDBANKCON6_ValDCDBANKCON7_ValDCDREFRESH_ValDCDBANKSIZE_ValDCDMRSRB6_ValDCDMRSRB7_Val设置寄存器ADRR13,MC_CFGLDMIAR13,{R0-R12}LDRR13,=MC_BASESTMIAR13,{R0-R12}本节提要132546基于ARM的硬件系统体系结构存储器接口设计UART接口I/O接口设计GPIO接口其它接口技术I/O接口外设一般不能与CPU直接相连,必须经过中间电路再与CPU相连,这些中间电路被称为I/O接口电路,简称I/O接口(I/O控制器)I/O接口基本组成I/O编址方式I/O端口CPU(程序员)能看到的是数据寄存器、状态寄存器和控制寄存器I/O接口电路中能被CPU直接访问的寄存器或某些特定的器件称为I/O端口每一个端口都有一个地址#defineUCON0(*(volatileunsignedlong*)0x01D00004)一个端口地址可能对应几个内部(物理)寄存器与存储器不同#defineURXH0(*(volatileunsignedlong*)0x01D00024)I/O数据传送方式I/O的数据传送方式查询最简单、最可靠的数据传送方式中断嵌入式系统最常用的数据传送方式直接内存访问(DMA)批量数据传送方式I/O接口技术GPIO接口UART接口中断控制器定时/计数器看门狗DMA控制器……本节提要132546基于ARM的硬件系统体系结构存储器接口设计UART接口I/O接口设计GPIO接口其它接口技术GPIO概述通用I/O接口(GPIO,GeneralPurposeI/O)可编程的输入、输出或者双向通信功能嵌入式处理器基本上都包含有GPIO接口,只是GPIO端口的数量不同为了减少引脚数量,降低芯片成本,大多数嵌入式处理器的GPIO端口与其它功能端口复用引脚GPIO接口都包含有控制寄存器,用来配置GPIO端口的功能输入、输出或者其它功能S3C2410的GPIO接口S3C2410有117个具有复合功能的I/O口引脚,分成8个端口端口A(GPA)23位的输出端口端口B(GPB)11位输入/输出端口端口C(GPC)16位输入/输出端口端口D(GPD)16位输入/输出端口端口E(GPE)16位输入/输出端口端口F(GPF)8位输入/输出端口端口G(GPG)16位输入/输出端口端口H(GPG)11位输入/输出端口S3C2410的GPIO接口(续)多功能端口在主程序开始前,必须定义每个I/O口的功能通用I/O功能、特殊功能端口控制寄存器GPACON~GPHCON配置引脚功能:输入、输出和第二功能、第三功能GPADAT~GPHDAT向(输出)引脚写如数值或者从(输入)引脚读出数值上拉配置端口内部上拉电阻配置寄存器(GPBUP~GPHUP)引脚是否内部配置上拉电阻各端口有三类控制寄存器GPXCON设置各引脚功能GPXDAT写或读各引脚数值GPXUP设置上拉与否GPIO端口A的寄存器具体设置参见数据手册P262GPACON寄存器设置GPADAT寄存器设置GPIO端口B的寄存器具体设置参见数据手册P263GPBCON寄存器的设置GPBDATandGPBUPGPIO端口C的寄存器具体设置参见数据手册P264GPCCONGPCDATandGPCUPGPIO端口D的寄存器具体设置参见数据手册P266GPDCONGPDDATandGPDUPGPIO端口E的寄存器具体设置参见数据手册P268GPECONGPEDATandGPEUPGPIO端口F的寄存器具体设置参见数据手册P270GPFCONGPFDATandGPFUPGPIO端口G的寄存器具体设置参见数据手册P271GPGCONGPGDATandGPGUPGPIO端口H的寄存器具体设置参见数据手册P272GPHCONGPHDATandGPHUPGPIO应用实例LED电路设计引脚低电平发光二极管亮,高电平熄灭如何编程控制LED亮和熄灭?GPFCON寄存器的设置设置为输出端口:ldrr0,=0x56000050movr1,#0x00005500;00000000000000000101010100000000strr1,[r0]C语言:#definerGPFCON(*(volatileunsigned*)0x56000050)rGPFCON=0x5500; //PORTF7/6/5/4OUTPUT

GPFDAT设置8个引脚与GPFDAT的各位对应;GPF4-GPF7与第4-7位对应,设1灯灭0亮点亮第一个灯ldrr0,=0x56000054movr1,#0x1lslr1,#4mvnr1,r1strr1,[r0]C语言实现见后C程序——循环点亮和熄灭voidled_on(void){

int

i,nOut;

nOut=0xF0;

rGPFDAT=nOut&0xd0;

for(i=0;i<100000;i++);

rGPFDAT=nOut&0x50;//0x70

for(i=0;i<100000;i++);

rGPFDAT=nOut&0x40;//0x00

for(i=0;i<100000;i++);

rGPFDAT=nOut&0x00;//0x30

for(i=0;i<100000;i++);

rGPFDAT=nOut;}voidled_off(void){

int

i,nOut;

nOut=0;

rGPFDAT=0;

for(i=0;i<100000;i++);

rGPFDAT=nOut|0x20;//0x80;

for(i=0;i<100000;i++);

rGPFDAT|=nOut|0xa0;//0x40;

for(i=0;i<100000;i++);

rGPFDAT|=nOut|0xb0;//0x20;

for(i=0;i<100000;i++);

rGPFDAT|=nOut|0xf0;//0x10;

for(i=0;i<100000;i++);}C语言中GPF寄存器的定义#definerGPFCON(*(volatileunsigned*)0x56000050)//PortFcontrol#definerGPFDAT(*(volatileunsigned*)0x56000054)//PortFdata#definerGPFUP(*(volatileunsigned*)0x56000058)//Pull-upcontrolF练习使用汇编语言实现循环点灯的功能知识拓展——LPC2124的GPIO见作业三本节提要132546基于ARM的硬件系统体系结构存储器接口设计UART接口I/O接口设计GPIO接口其它接口技术S3C2410的UARTS3C2410A的UART(UniversalAsynchronousReceiverandTransmitter)提供了三个独立的异步串行I/O口,每一个都可以工作在中断模式或DMA模式,即UART可以产生中断或DMA请求以在CPU和UART之前传送数据,使用系统时钟,UART最高可以支持230.4Kbps的位传输率。如果采用外部带时钟的UART,则UART可以实现更度速度的传输;每个UART包括2个16Byte的接收/发送FIFO。UART控制框图异步串行通讯简介在一条传输线上完成单向传输。将传输数据的字符一位接一位的传送。接收方对于同一条线上的一连串连续数字信号,首先将其分割成位,再按位组成字符。每个字符需要确定起始位和结束位,字符与字符间还可能有长度不定的空闲时间,因此传输效率较低。字符串行输出格式发送前:线路处于空闲状态,连续发送“1”开始发送:首先,发送一位起始位“0”

然后,发送连续的二进制位,数据位可以为5、6、7、8

随后,紧跟一位奇偶校验位(可选择奇/偶/无校验)

最后,发送停止位“1”,可以有1位、1.5位或2位停止位UART的操作串口初始化发送数据接收数据与UART有关的寄存器UART行控制寄存器ULCONnUART控制寄存器UCONnUART状态寄存器发送寄存器UTXH和接收寄存器URXH波特率分频寄存器UBRDIV还有其它控制及状态寄存器,见数据手册行控制寄存器ULCONnUART控制寄存器UCONnUART控制寄存器UCONnUART控制寄存器UCONnUART状态寄存器发送寄存器UTXH接收寄存器URXH波特率分频寄存器UBRDIV波特率的产生波特率由一个专用的UART波特率分频寄存器(UBRDIVn)控制,计算公式如下:

UBRDIVn=(int)(PCLK/(bpsx16))-1

或者

UBRDIVn=(int)(UEXTCLK/(bpsx16))-1

UBRDIVn的值必须在1到(216-1)之间。例如:在系统时钟为40MHz,当波特率为115200时,

UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)–1=21-1=20开发板UART0电路如何编程实现UART通信?PC端的UART通信控制软件——超级终端与UART0相关的GPIO编程实现STEP1——初始化把使用到的引脚GPH2、GPH3定义为TXD0、RXD0GPHCON|=0xa0GPHUP|=0x0c(上拉)ULCON0设为0x03含义:8个数据位,1个停止位,无校验,正常操作模式UCON0设为0x05除了位[3:0],其他位都使用默认值。位[3:0]=0b0101表示:发送、接收都使用中断或查询方式STEP1——初始化UFCON0设为0x00每个UART内部都有一个16字节的发送FIFO和接收FIFO,这里不使用FIFO,设为默认值0UMCON0设为0x00不使用流控,设为默认值0UBRDIV0设为12PCLK=12MHz,设置波特率为57600,由公式可以计算得UBRDIV0=12UBRDIVn=(int)(PCLK/(bpsx16))–1STEP1——初始化代码voidinit_uart(){//初始化UART GPHCON|=0xa0;//GPH2,GPH3usedasTXD0,RXD0 GPHUP=0x0c;//GPH2,GPH3内部上拉

ULCON0=0x03;//8N1(8个数据位,无校验位,1个停止位)

UCON0=0x05;//查询方式

UFCON0=0x00;//不使用FIFO UMCON0=0x00;//不使用流控

UBRDIV0=12;//波特率为57600}STEP2——发送数据UTRSTAT0位[2]:无数据发送时,自动设为1。当我们要使用串口发送数据时,先读此位以判断是否有数据正在占用发送口。UTRSTAT0位[1]:发送FIFO是否为空,这里未用此位UTXH0:把要发送的数据写入此寄存器。STEP2——发送数据代码#define TXD0READY (1<<2)voidputc(unsignedcharc){ //不断查询,直到可以发送数据

while(!(UTRSTAT0&TXD0READY)); UTXH0=c;//发送数据}STEP3——接收数据UTRSTAT0位[0]:接收缓冲区是否有数据,若有,此位设为1。本实验中,需要不断查询此位一判断是否有数据已经被接收。URXH0接收缓存寄存器:当查询到UTRSTAT0位[0]=1时,读此寄存器获得串口接收到的数据。STEP3——接收数据代码#define RXD0READY (1)unsignedchargetc(){ while(!(rUTRSTAT0&RXD0READY)); returnrURXH0;}运行示例见屏幕录像上机练习在超级终端显示:bootsuccess……UARTTest?(Y/N)>YEnterUserName:>XXXEnterPassword>>******StartTest:Receive:>Sendtodisplay:>如果用户与密码不一致提示重新登录!程序运行结果在超级终端上显示!本节提要132546基于ARM的硬件系统体系结构存储器接口设计UART接口I/O接口设计GPIO接口其它接口技术中断控制器概述中断过程CPU在程序运行中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务子程序服务结束后,又返回原来的断点,继续执行原来程序中断过程实现:中断子系统+中断服务子程序中断控制器计算机中负责CPU外部事件处理的中断子系统中断控制器的基本功能有:中断源的识别、中断源的屏蔽、中断优先级处理等概述(续)S3C2410中断控制器1中断源2中断向量表3中断控制器的寄存器2024/6/16©国防科技大学计算机学院601室102中断源S3C2410中断控制器的中断源有56个中断源有片内外设提供,如UART,IIC,DMA等UARTn中断与EINTn中断是逻辑或的关系,共用中断请求线分成两类:IRQ,FIQ56个中断源外部中断源中断处理过程当S3C2410收到来自片内外设和外部中断请求引脚的多个中断请求时,S3C2410X的中断控制器在中断仲裁过程后向S3C2410X内核请求FIQ或IRQ中断。中断仲裁过程依靠处理器的硬件优先级逻辑,处理器在仲裁过程结束后将仲裁结果记录到INTPND寄存器,以告知用户中断由哪个中断源产生。中断处理过程1SUBSRCPND和SRCPND寄存器表明有哪些中断被触发了,正在等待处理(pending);2SUBMASK(INTSUBMSK寄存器)和MASK(INTMSK寄存器)用于屏蔽某些中断;3Requestsources(withsub-register)表示的是INT_RXD0、INT_TXD0等11个外部中断源;中断向量表采用硬件决定中断优先级的方式在多个中断源同时申请中断时,由硬件优先级逻辑确定哪个中断应该得到响应中断向量表地址位于:0x00000020~0x000000C3处放一条跳转指令,跳到中相应中断源的中断服务程序入口地址处也可采用软件查询方式,但延迟比较大中断源Description入口地址EINT0Externalinterrupt00x00000020EINT1Externalinterrupt10x00000024EINT2Externalinterrupt20x00000028EINT3Externalinterrupt30x0000002CEINT4/5/6/7Externalinterrupt4/5/6/70x00000030TICKRTCTimetickinterrupt0x00000034INT_ZDMA0GeneralDMA0interrupt0x00000040INT_ZDMA1GeneralDMA1interrupt0x00000044INT_BDMA0BridgeDMA0interrupt0x00000048INT_BDMA1BridgeDMA1interrupt0x0000004CINT_WDTWatch-Dogtimerinterrupt0x00000050INT_UERR0/1UART0/1errorInterrupt0x00000054INT_TIMER0Timer0interrupt0x00000060中断源Description入口地址INT_TIMER1Timer1interrupt0x00000064INT_TIMER2Timer2interrupt0x00000068INT_TIMER3Timer3interrupt0x0000006CINT_TIMER4Timer4interrupt0x00000070INT_TIMER5Timer5interrupt0x00000074INT_URXD0UART0receiveinterrupt0x00000080INT_URXD1UART1receiveinterrupt0x00000084INT_IICIICinterrupt0x00000088INT_SIOSIOinterrupt0x0000008CINT_UTXD0UART0transmitinterrupt0x00000090INT_UTXD1UART1transmitinterrupt0x00000094INT_RTCRTCalarminterrupt0x000000A0INT_ADCADCEOCinterrupt0x000000C0ENTRY;以下为ARM的异常向量表bResetHandler

;0x00bHandlerUndef

;0x04bHandlerSWI

;0x08bHandlerPabort ;0x0cbHandlerDabort ;0x10b. ;0x14bHandlerIRQ ;0x18bHandlerFIQ ;0x1c;以下为中断向量表ldrpc,=HandlerEINT0 ;0x20ldrpc,=HandlerEINT1ldrpc,=HandlerEINT2ldrpc,=HandlerEINT3ldrpc,=HandlerEINT4567ldrpc,=HandlerTICK ;0x34中断控制器的寄存器作用通过读取和设置这些寄存器来对中断进行控

温馨提示

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

评论

0/150

提交评论