基于S3C44B0X存储控制器的应用开发.doc_第1页
基于S3C44B0X存储控制器的应用开发.doc_第2页
基于S3C44B0X存储控制器的应用开发.doc_第3页
基于S3C44B0X存储控制器的应用开发.doc_第4页
基于S3C44B0X存储控制器的应用开发.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统课程设计说明书 基于S3C44B0X存储控制器的应用开发系 、 部: 计算机与信息科学系 组 成 员: 张 伟、陶青云 李 立、李亚普 指导教师: 秦 辉 职称 讲师 专 业: 计算机科学与技术 班 级: 计本0803班 完成时间: 2011年12月11日 摘 要以计算机为核心的嵌入式技术并不是什么新技术,它伴随着微处理器的诞生而诞生,并伴随着微处理器的发展而发展。随着计算机、微电子、网络和通信技术的高速发展及其向其他行业的告诉渗透,嵌入式技术的应用范围急剧扩大,并不断改变着人们的生活、生产方式。嵌入式技术快速发展的同时,也极大地丰富、延伸了嵌入式的概念。芯片技术给电子系统带来了小型化、低功耗、低成本和高度智能化等技术优势,这正是嵌入式技术永恒的追求。芯片技术发展到SoC阶段,使系统在芯片级更进一步地实现了低功耗、低成本、小型化、智能化,加速了嵌入式系统升级换代的速度和小型化的实现程度,决定了嵌入式系统普及应用的深度以及智能化的程度。芯片技术极大地加速了嵌入式计算机的发展和普及。因此,嵌入式技术的发展主要体现在芯片技术的发展,以及在芯片技术限制下得算法改进和软件的进步上。ARM微处理器因其卓越的低功耗、高性能在32位嵌入式应用中已经居世界第一,是高性能、低功耗嵌入式处理器的代名词,为了顺应当今世界技术革新的潮流,了解、学习和掌握嵌入式技术,就必然要学习和掌握以ARM微处理器为核心的嵌入式开发环境和开发平台,这对研究和开发高性能微处理器、dsp一级开发基于微处理器的SOC芯片设计及应用系统开发是非常必要的。关键字 计算机;S3C44B0X;存储控制器;嵌入式目录1设计要求和目的41.1设计要求41.2设计目的42设计环境42.1硬件环境42.2软件环境43设计原理53.1 S3C44B0X存储控制器概述53.1.1在嵌入式系统中的功能概述53.1.2功能及作用概述53.2 功能及应用概述63.2.1基本功能63.2.2功能实现及控制104程序设计代码115总结与体会29参考文献291设计要求和目的1.1设计要求1.熟悉ARM的内部存储空间分配2.掌握对存储区配置方法3.掌握对存储区进行读写访问的方法 4.学习和掌握S3C44B0X处理器的存储控制器的使用,并编写应用程序,修改参数设置,并使用EMBEST ARM教学系统的串口,在超级终端显示。1.2设计目的嵌入式系统是计算机科学与技术专业必修课程,本次课程设计主要是检验学生是否掌握相关专业知识,加强对ARM体系结构的了解,充分调动学生的积极性和创造性,并重视学生实际动手能力的培养。通过本次课程设计使学生加深理解巩固课堂教学和平时实验的了解,使学生了解S3C44B0X处理器和看门狗定时器控制寄存器WTCON、数据寄存器WTDAT和计数寄存器WTCNT的初始化。掌握通过软件设计使用ARM处理器中存储控制器的方法。2设计环境2.1硬件环境Embest EduKit-III实验平台Embest ARM标准/增强型仿真套件、PC2.2软件环境Embest IDE for ARM 集成开发环境Windows 98/2000/NT/XP/73设计原理3.1 S3C44B0X存储控制器概述3.1.1在嵌入式系统中的功能概述在基于ARM核的嵌入式应用系统中可能包含多钟类型的存储器件,如FLASH、ROM、SRAM和SDRAM等。FLASH存储器又称闪存,它结合了ROM和RAM的长处,具备电子可擦除可编程(EEPROM)的性能,掉电保持数据,同时可以快速读取数据(NVRAM的 优势)。目前FLASH主要分NOR FLASH和NAND FLASH两种。NOR FLASH的读取与常见SDRAM的读取是一样的,用户可以直接运行装载在NOR FLASH里面的代码;NAND FLASH没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,用户不能直接运行NAND FLASH上的代码。ROM(Read Only Memory)和RAM(Random Access Memory)指的都是半导体存储区。ROM在系统停止供电时仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据。RAM有两大类,一类称为静态RAM(SPAM),其数度非常快,是目前读/写最快的存储设备;另一类称为动态RAM(DRAM),其保留数据的时间很短,毒素也比SRAM慢,但它比任何ROM都要快。SDRAM是同步动态随机存取内存,属于基于DRAM技术发展出来的内存,拥有DRAM所有的特点,属于比较成熟的内存技术。由于这些不同类型的存储器件要求不同的速度、数据宽度等,为了实现对这些不同速度、类型、总线宽度的存储器进行管理,存储器管理控制器是必不可少的。3.1.2功能及作用概述在基于S3C44B0X处理器的嵌入式系统开发中,也是通过存储控制器为片外存储器访问提供必要的控制信号管理片外存储部件。图1为S3C44B0X复位后的存储器地址分配图。从图中可以看出:1. 特殊功能寄存器位于0x01C000000x02000000的4MB空间内;2. Bank0Bank5的起始地址和空间大小都是固定的;3. Bank6的起始地址是固定的,空间可以配置为2/4/8/16/32MB;4. Bank7的空间大小和Bank6一样是可变的,也可以配置为2/4/8/16/32MB;Bank6和Bank7的详细地址与空间大小的关系可参考表2图 1表23.2 功能及应用概述3.2.1基本功能S3C44B0X存储控制器支持大小端选择、Bank0总线宽度选择和存储器地址线连接。S3C44B0X存储控制器的访问地址如表3所列。寄存器名访问地址访问方式复位值描述BWSCON0x01C80000R/W0x000000总线宽度/等待控制寄存器BWSCON00x01C80004R/W0x0700Bank0控制寄存器BWSCON10x01C80008R/W0x0700Bank1控制寄存器BWSCON20x01C8000CR/W0x0700Bank2控制寄存器BWSCON30x01C80010R/W0x0700Bank3控制寄存器BWSCON40x01C80014R/W0x0700Bank4控制寄存器BWSCON50x01C80018R/W0x0700Bank5控制寄存器BWSCON60x01C8001CR/W0x18008Bank6控制寄存器BWSCON70x01C80020R/W0x18008Bank7控制寄存器PEFRESH0x01C80024R/W0Xac0000DRAM/SDRAM刷新控制寄存器BANKSIZE0x01C80028R/W0x0Bank大小寄存器MRSRB60x01C8002CR/WxxxBank6模式设置寄存器MRSRB70x01C80030R/WxxxBank7模式设置寄存器 表3下面介绍S3C44B0X存储控制器的特殊功能寄存器。总线宽度/等待控制寄存器总线宽度/等待控制器(BWSCON)如表4所列,它的设置决定了Bank*(Bank*表示Bank0Bank7)上的SRAM是否使用UB/LB(写高/低字节使能),以及Bank7与SRAM存储器的等待状态、Bank7的数据总线宽度、Bank0的数据总线宽度和存储模式。位位名称描述7、11、15、19、23、27、31ST1ST7确定bank*上的SRAM是否使用UB/LB:0=否(PIN14:11作为nWBE3:0);1=是(PIN14:11作为nBE3:0)6、10、14、18、22、26、30WS1WS7确定bank*上的SRAM存储器的等待状态(不支持DRAM或SDRAM):0=等待禁止;1=等待使能5:4、9:8、13:12、17:16、21:20、25:24、29:28DW1DW7确定Bank*的数据总线宽度:00=8位 01=16位 10=32位2:1DW0指示Bank0的数据总线宽度(只读),由OM1:0引脚确定:00=8位 01=16位 10=32位0ENDIAN确定存储模式(只读),由引脚电平确定:0=小端模式 1=大端模式 表4Bank控制寄存器(BANKCONn:nGCS0nGCS5)Bank控制寄存器如表5和表6所列,其各位的设置决定在nGCSn有效之前地址建立时间和在nOE上芯片选择建立时间等。BANKCON0 地址:0x01C80004 访问方式:R/W 初始值:0x0700BANKCON1 地址:0x01C80008 访问方式:R/W 初始值:0x0700BANKCON2 地址:0x01C8000C 访问方式:R/W 初始值:0x0700BANKCON3 地址:0x01C80010 访问方式:R/W 初始值:0x0700BANKCON4 地址:0x01C80014 访问方式:R/W 初始值:0x0700BANKCON5 地址:0x01C80018 访问方式:R/W 初始值:0x0700位位名称描述14:13Tacs在nGCSn有效之前地址建立时间:00=0clock 01=1clock 10=2clocks 11=4clocks12:11Tcos在nOE上芯片选择建立时间:00=0clock 01=1clock 10=2clocks 11=4clocks10:8Tacc存取周期:000=1clock 001=2clock 010=3clocks 011=4clocks 100=6clocks 101=8 clocks 110=10 clocks 111=14 clocks7:6Toch在nOE上芯片选择保持时间:00=0clock 01=1clock 10=2clocks 11=4clocks5:4Tcah在nGCSn有效之前地址保持时间:00=0clock 01=1clock 10=2clocks 11=4clocks3:2Tpac页模式存取周期:00=0clock 01=1clock 10=2clocks 11=4clocks1:0PMC页模式配置:00=正常(1 data) 01=4 data 10=8 data 11=16 data 表5位位名称描述16:15MT这两位确定Bank6和Bank7的存储器类型:00=ROM或SRAM 01=FP DRAM 10=EDO DRAM 11=Sync DRAM存储器类型14:13Tacs在nGCSn有效之前地址建立时间:00=0clock 01=1clock 10=2clocks 11=4clocksROM和SRAM类型12:11Tcos在nOE上芯片选择建立时间:00=0clock 01=1clock 10=2clocks 11=4clocks10:8Tacc存取周期:000=1clock 001=2clock 010=3clocks 011=4clocks 100=6clocks 101=8 clocks 110=10 clocks 111=14 clocks7:6Toch在nOE上芯片选择保持时间:00=0clock 01=1clock 10=2clocks 11=4clocks5:4Tcah在nGCSn有效之前地址保持时间:00=0clock 01=1clock 10=2clocks 11=4clocks3:2Tpac页模式存取周期:00=0clock 01=1clock 10=2clocks 11=4clocks1:0PMC页模式配置:00=正常(1 data) 01=4数据连续存取 10=8 数据连续存取 11=16 数据连续存取5:4TrcdRAS到CAS延时: 00=0clock 01=1clock 10=2clocks 11=4clocksFRSRAM和EDO DRAM类型3TcasCAS脉冲宽度:0=1 clock 1=2clocks2TcpCAS预充电周期:0=1clock 1=2clocks1:0CAN列地址数目:00=8位 01=9位 10=10位 11=11位3:2TrcdRAS到CAS延时:00=2clocks 01=3 clocks 10=4clocksSDRAM类型1:0SCAN列地址数目:00=8位 01=9位 10=10位 11=11位 表6DRAM/SDRAM刷新控制寄存器(REFRESH)DRAM/SDRAM刷新控制寄存器如表7所列,其设置决定DRAM/SDRAM刷新是否允许,以及刷新模式、RAS预充电时间、RAS和CAS最小时间、CAS保持时间和刷新计数值。位位名称描述23PEFENDRAM/SDRAM刷新使能:0=禁止 1=使能22TREFMDDRAM/SDRAM刷新模式0=CBR/Auto刷新 1=自动刷新21:20TrpDRAM/SDRAM RAS预充电时间:DRAM:00=1.5clocks 01=2.5 clocks 10=3.5 clocks 11=4.5 clocks SDRAM:00=2 clocks 01=3 clocks 10=4 clocks 11=不支持19:18TrcSDRAM RC最短时间:00=4 clocks 01=5 clocks 10=6 clocks 11=7 clocks17:16TchrDRAM的CAS保持时间:00=1 clocks 01=2 clocks 10=3 clocks 11=4 clocks15:11Reserved保留未使用10:0Refresh CounterDRAM/SDRAM刷新计数值:刷新周期=(2的11次方+1-刷新计数值)/时钟频率 表7Bank大小寄存器(BANKSIZE)Bank大小寄存器如表8所列,其设置主要决定Bank6和Bank7的存储区大小。位位名称描述4SCLKEN若为1,则SCLK仅在SDRAM存取周期产生,这个特征将使功耗降低,推荐设置1:0=普通 SCLK 1=低功耗 SCLK3Reserved保留2:0BK76MAPBank6/7存储器映射:000=32MB/32MB 100=2MB/2MB 101=4MB/4MB 110=8MB/8MB 111=16MB/16MB 表 8Bank6和Bank7模式设置寄存器(MRSR)Bank6和Bank7模式设置寄存器如表9所列,其设置主要决定Bank6和Bank7的存储模式。MRSRB6 地址:0x01C8002C 访问方式:R/W 初始值:xxxMRSRB7 地址:0x01C80030 访问方式:R/W 初始值:xxx位位名称描述9WBL写突发脉冲长度:0是推荐值8:7TM测试模式:00=测试模式 01、10、11=保留6:4CLCAS突发响应时间:000=1clock 010=2clocks 011=3clocks 其他=保留3BT突发类型:0=连续(推荐) 1=未使用2:0BL突发长度:000=1 其他=未使用 表93.2.2功能实现及控制存储器控制器所完成的功能主要是通过对其特殊功能寄存器的设置来进行的。大/小端模式选择为什么会有大小端模式之分呢?这是因为在计算机系统中是以字节为单位的,每个地址单元都对应一个字节,一个字节为8位。但是在C语言中除了8位的char型之外,还有16位或者32位的int型(要看具体的编译器)。另外,对于位数大小8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在如何安排多个字节的问题。因此,就导致了大端存储模式和小端存储模式。很多ARM、DSP处理器默认为小端模式。有些ARM处理器还可以有硬件来选择是大端模式还是小端模式。所谓大端模式,是指数据的低位(就是权值较小的位)保存在内存的高地址中,而数据的高位保存在内存的低地址中。这样的存储模式有些类似于把数据当作字符串顺序处理,即地址由小向大增大,而数据从高位往地位放。所谓小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。这种存储模式将地址的 高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,这与普通的逻辑思维方法一致。处理器复位时(nRESET为低),通过ENDIAN引脚选择所使用的端(Endian)模式。ENDIAN引脚通过下拉电阻与VSS连接时,定义为小端(Little Endian)模式;ENDIAN引脚通过上拉电阻和VDD连接时,则定义为大端(Big Endian)模式,如表10所列上拉电阻是指将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理。上拉是对器件注入电流,下拉是输出电流;弱强只是上拉电阻的阻值不同,没有什么严格区分。对于非集电极(或漏极)开路输出型电路(如普通门电路),提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。Bank0总线宽度Bank0(nGCS0)的数据总线宽度可以配置为8位、16位或32位。因为Bank0为启动ROM(映射地址为0x00000000)所在的空间,所以必须在第一次访问ROM前设置Bank0的数据宽度。该数据宽度是由复位后OM1:0的逻辑电平决定的,如表10所列。OM1(操作方式1)OM0(操作方式0)ROM数据宽度OM1(操作方式1)OM0(操作方式0)ROM数据宽度008位1032位0116位11测试模式 表10存储器(SROM/DRAM/SDRAM)地址线连接如表11所列,数据宽度不同,连接方式也不用。存储器地址引脚S3C44BOX地址8位数据总线S3C44BOX地址16位数据总线S3C44BOX地址32位数据总线A0A0A1A2A1A1A2A3A2A2A3A4A3A3A4A5. 表114程序设计代码main.c/* File:main.c* Author:embest* Desc:c main entry* History:*/#include rw_ram.hextern void s_ram_test(void);voidmem_test(void);voidMain(void);/* name:main* func:c code entry* para:none* ret:none* modify:* comment:*/void Main(void) sys_init(); /* Initial 44B0Xs Interrupt,Port and UART */ user interface uart_printf(nr Memory Read/Write Access Test Examplen);mem_test();/ test_cache(); while(1); /* name:mem_test* func:using assemble and c language access memory* para:none* ret:none* modify:* comment:*/void mem_test(void) uart_printf( Memory read base Address : 0x%xn,RW_BASE); uart_printf( Memory write base Address : 0x%xn,RW_TARGET); uart_printf(n Memory Read/Write (ASM code,%dBytes) Test. n,RW_NUM); s_ram_test(); uart_printf(n Memory Read/Write (C code,%dBytes) Test. n,RW_NUM); c_ram_test(); uart_printf( Memory Test Success! n); 44binit.s#*# NAME:44binit.s*# Author: Embest*# Desc:C start up codes*# Configure memory, Initialize ISR, stacks*# Initialize C-variables*# Fill zeros into zero-initialized C-variables*# History:C.Liu 2005.02.17*#* .include option.a .include memcfg.a/*-*/* constant define /*-*/# Interrupt Control.equ INTPND,0x01e00004.equ INTMOD,0x01e00008.equ INTMSK,0x01e0000c.equ I_ISPR,0x01e00020.equ I_CMST,0x01e0001# Watchdog timer.equ WTCON,0x01d30000# Clock Controller.equ PLLCON,0x01d80000.equ CLKCON,0x01d80004.equ LOCKTIME,0x01d8000c# Memory Controller.equ REFRESH,0x01c80024# BDMA destination register.equ BDIDES0,0x1f80008.equ BDIDES1,0x1f80028# Pre-defined constants.equ USERMODE,0x10.equ FIQMODE,0x11.equ IRQMODE,0x12.equ SVCMODE,0x13.equ ABORTMODE,0x17.equ UNDEFMODE,0x1b.equMODEMASK,0x1f.equ NOINT,0xc0.equ IRQ_MODE,0x40 /* Enable Interrupt Mode (IRQ) */.equ FIQ_MODE,0x80 /* Enable Fast Interrupt Mode (FIQ) */*-*/* macro define */*-*/.macro HANDLER HandleLabelstmdbsp!, r0-r11, ip, lr/* push r0-r11, ip, lr */ldrr0, =HandleLabelldrr1, r0movlr, pcbxr1/* call interrupt routine */ldmiasp!, r0-r11, ip, lr/* pop r0-r11, ip, lr */subspc, r14, #4/* interrupt ret */.endm.equ DON,(16).equ DOFF,(06).macro LCD_DOFF OPTldrr1, =0x01d2001cldrr2, =0x9aaastrr2, r1ldrr2, =0x0strr2, r1, #8 GPUPDldrr2, r1, #4bic r2,r2,#DON change the GPD6orr r2,r2,#OPTstrr2, r1, #4 GPDATD.endm.equ LED1,(18).equ LED2,(1 subs pc,lr,# 4# b HandlerIRQ - subs pc,lr,# 4VECTOR_BRANCH: ldr pc, =HandlerEINT0 /*mGA H/W interrupt vector table */ ldr pc, =HandlerEINT1 /* */ ldr pc, =HandlerEINT2 /* */ ldr pc, =HandlerEINT3 /* */ ldr pc, =HandlerEINT4567 /* */ ldr pc, =HandlerTICK /*mGA */ b . b . ldr pc, =HandlerZDMA0 /*mGB */ ldr pc, =HandlerZDMA1 /* */ ldr pc, =HandlerBDMA0 /* */ ldr pc, =HandlerBDMA1 /* */ ldr pc, =HandlerWDT /* */ ldr pc, =HandlerUERR01 /*mGB */ b . b . ldr pc, =HandlerTIMER0 /*mGC */ ldr pc, =HandlerTIMER1 /* */ ldr pc, =HandlerTIMER2 /* */ ldr pc, =HandlerTIMER3 /* */ ldr pc, =HandlerTIMER4 /* */ ldr pc, =HandlerTIMER5 /*mGC */ b . b . ldr pc, =HandlerURXD0 /*mGD */ ldr pc, =HandlerURXD1 /* */ ldr pc, =HandlerIIC /* */ ldr pc, =HandlerSIO /* */ ldr pc, =HandlerUTXD0 /* */ ldr pc, =HandlerUTXD1 /*mGD */ b . b . ldr pc, =HandlerRTC /*mGKA */ b . /* */ b . /* */ b . /* */ b . /* */ b . /*mGKA */ b . b . ldr pc,=HandlerADC /*mGKB */ b . /* */ b . /* */ b . /* */ b . /* */ b . /*mGKB */ b . b . ldr pc, =EnterPWDN# the current contents of the literal pool to be dumped into the current section# (which is assumed to be the .text section) at the current location (aligned to a word boundary).alignHandlerFIQ:HANDLER HandleFIQHandlerIRQ:HANDLER HandleIRQHandlerUndef:HANDLER HandleUndefHandlerSWI:HANDLER HandleSWIHandlerDabort:HANDLER HandleDabortHandlerPabort:HANDLER HandlePabortHandlerADC:HANDLER HandleADCHandlerRTC:HANDLER HandleRTCHandlerUTXD1:HANDLER HandleUTXD1HandlerUTXD0:HANDLER HandleUTXD0HandlerSIO:HANDLER HandleSIOHandlerIIC:HANDLER HandleIICHandlerURXD1:HANDLER HandleURXD1HandlerURXD0:HANDLER HandleURXD0HandlerTIMER5:HANDLER HandleTIMER5HandlerTIMER4:HANDLER HandleTIMER4HandlerTIMER3:HANDLER HandleTIMER3HandlerTIMER2:HANDLER HandleTIMER2HandlerTIMER1:HANDLER HandleTIMER1HandlerTIMER0:HANDLER HandleTIM

温馨提示

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

评论

0/150

提交评论