第四章 基本接口实验
4.1 存储器实验
4.1.1 实验目的
? 通过实验熟悉ARM的内部存储空间分配。 ? 熟悉使用寄存器配置存储空间的方法。 ? 掌握对存储区进行访问的方法。
4.1.2 实验设备
? 硬件:Embest Arm EduKit-II实验平台,Embest ARM标准/增强型仿真器套件,PC机。
? 软件:Embest IDE Pro ARM集成开发环境,Windows 98/2000/NT/XP。
4.1.3 实验内容
掌握S3C44B0X处理器对存储空间的配置和读写访问的方法:
? 熟练使用命令脚本文件对ARM存储控制寄存器进行正确配置; ? 使用汇编编程,对RAM按字、半字和字节读写; ? C语言编程,对RAM按字、半字和字节读写。
4.1.4 实验原理
1. 存储控制器
图4-1 S3C44B0X复位后的存储器地址分配
36
S3C44B0X处理器的存储控制器可以为片外存储器访问提供必要的控制信号,它主要包括以下特点:
? 支持大、小端模式(通过外部引脚来选择)
? 地址空间:包含8个地址空间,每个地址空间的大小为32M字节,总共有256M字节的地址空间。
? 所有地址空间都可以通过编程设置为8位、16位或32位对准访问。 ? 8个地址空间中,6个地址空间可以用于ROM、SRAM等存储器,2个用于ROM、SRAM、FP/EDO/SDRAM等存储器。 ? 7个地址空间的起始地址及空间大小是固定的。 ? 1个地址空间的起始地址和空间大小是可变的。 ? 所有存储器空间的访问周期都可以通过编程配置。 ? 提供外部扩展总线的等待周期。 ? 支持DRAM/SDARM自动刷新。 ? 支持地址对称或非地址对称的DRAM。
从图4-1中可以看出,特殊功能寄存器位于0X01C00000到0X02000000的4M空间内。Bank0-Bank5的起始地址和空间大小都是固定的,Bank6的起始地址是固定的,但是空间大小和Bank7一样是可变的,可以配置为2/4/8/16/32M。Bank6和Bank7的详细的地址和空间大小的关系可以参考表4-1
表4-1 Bank6/Bank7地址
大/小ENDIAN模式选择
处理器复位时(nRESET为低),通过ENDIAN引脚选择所使用的ENDIAN模式。ENDIAN引脚通过下拉电阻与Vss连接,定义为Little endian模式;ENDIAN引脚通过上拉电阻和Vdd连接,则定义为Big endian模式。如表4-2所示。
表4-2大/小endian模式
BANK0总线宽度
BANK0(nGCS0)的数据总线宽度可以配置为8位、16位或32位。因为BANK0为启动ROM(映射地址为0X00000000)所在的空间,所以必须在第一次访问ROM前设置BANK0数据宽度,该数据宽度是由复位后OM[1:0]的逻辑电平决定的,表4-3所示。
表4-3数据宽度选择
37
?
存储器控制专用寄存器
总线宽度/等待控制寄存器(BWSCON)
寄存器各位功能:
[ENDIAN]:只读,指示系统选定的大/小端模式,0表示小端模式,1表示大端模式。[DWi]:
i=0~7,其中DW0为只读,因为bank0数据总线宽度在复位后已经由OM[1:0]的电平决定。 DW1~DW7可写,用于配置bank1~bank7的数据总线宽度,00表示8位数据总线宽度,01表示16位数据总线宽度,10表示32位数据总线宽度。 [SWi]:i=1~7,写入0则对应的banki等待状态不使用,写入1则对应的banki等待状态使能。 [STi]: i=1~7,决定SRAM是否使用UB/LB。0表示不使用UB/LB,引脚[14:11]定义
为nWBE[3:0];1表示使用UB/LB,引脚[14:11]定义为nBE[3:0]。
Bank控制寄存器(BANKCONn: nGCS0-nGCS5)
Bank控制寄存器(BANKCONn: nGCS6-nGCS7)
刷新控制寄存器(REFRESH)
BANK大小寄存器(BANKSIZE)
模式设置寄存器(MRSR)
38
以上寄存器的详细定义可以查看S3C44B0X的数据手册。 下面列举了13个存储控制寄存器的配置示例:
ldr r0, =SMRDATA ldmia r0, {r1-r13}
ldr r0, =0x01c80000 ; BWSCON Address stmia r0, {r1-r13} SMRDATA:
.long 0x22221210 ; BWSCON .long 0x00000600 ; GCS0 .long 0x00000700 ; GCS1 .long 0x00000700 ; GCS2 .long 0x00000700 ; GCS3 .long 0x00000700 ; GCS4 .long 0x00000700 ; GCS5
.long 0x00010000 ; GCS6, EDO DRAM (Tacc = 1) .long 0x00018000 ; GCS7, no use
.long 0x00860459 ; Refresh (REFEN=1, TREFMD=0, Trp=0, Trc=5, Tchr=3) .long 0x0 ; Bank Size, 32MB/32MB .long 0x20 ; MRSR 6 (CL=2) .long 0x20 ; MRSR 7 (CL=2)
观察上面寄存器介绍中的寄存器地址可以发现,13个寄存器分布在从0x01c80000开始的连续地址空间,所以上面的程序可以利用指令“stmia r0, {r1-r13}”实现将配置好的寄存器的值依次写入到相应的寄存器中。
存储器(SROM/DRAM/SDRAM)地址线连接如表4-4所示,数据宽度不同,连接方式也不同。
表4-4 存储器地址线连接
?
使用命令脚本文件配置存储空间
在使用仿真器对目标系统进行硬件仿真调试前,需要把代码下载到目标系统的RAM 空间中,所以调试前首先应该配置CPU 的存储控制寄存器,初始化可读写空间。Embest IDE Pro ARM 集成环境下可以使用一系列存储写命令来完成存储控制寄存器的配置,称为命令脚本文件(*.cs,有关命令脚本文件请参考Embest IDE 在线用户手册),通过命令脚本文件(*.cs)还可以配置目标系统的其他CPU控制寄存器,如中断控制寄存器。
39
Embest Arm EduKit-II的调试配置使用的命令脚本文件如下:
reset ; Reset board
memwrite 0x01D30000 0x00000000 ; WTCON (watchdog timer control Register) disable warch
dog
memwrite 0x01E0000C 0x07ffffff ; INTMSK (disable all interrupt) memwrite 0x01E00024 0xffffffff ; Clear all interrupt
memwrite 0x01C80000 0x11110102 ; BWSCON (Bus Width & Wait Status Control Register) memwrite 0x01C80004 0x00000600 ; BANKCON0 memwrite 0x01C80008 0x00007FFC ; BANKCON1 memwrite 0x01C8000C 0x00007FFC ; BANKCON2 memwrite 0x01C80010 0x00007FFC ; BANKCON3 memwrite 0x01C80014 0x00007FFC ; BANKCON4 memwrite 0x01C80018 0x00007FFC ; BANKCON5 memwrite 0x01C8001C 0x00018000 ; BANKCON6 memwrite 0x01C80020 0x00018000 ; BANKCON7 memwrite 0x01C80024 0x00860459 ; REFRESH memwrite 0x01C80028 0x00000010 ; BANKSIZE memwrite 0x01C8002C 0x00000020 ; MRSRB6 memwrite 0x01C80030 0x00000020 ; MRSRB7
?
片选信号设置
Embest Arm EduKit-II实验板的片选信号设置如表4-5所示:
表4-5片选信号设置
片选信号 NGCS0 NGCS6 A22 0 0 0 nGCS1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 A20 0 1 0 1 0 1 0 1 A2选择的接口或器件 FLASH SDRAM USB_CS CAN_CS CF_CS0 CF_CS1 LCD_CD BANKCON1 片选控制寄存器 BANKCON0 BANKCON6 40
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库嵌入式实验指导书(计算机专业适用)08版 - 图文(8)在线全文阅读。
相关推荐: