实验一 存储器实验
description
Transcript of 实验一 存储器实验
实验一 存储器实验
1 实验目的2 实验设备3 实验内容4 实验原理5 实验操作步骤
1 实验目的
通过实验熟悉 ARM 的内部存储空间分配。熟悉用寄存器配置存储空间的方法。掌握对存储区进行访问的方法。
硬件: Embest S3CEV40 实验平台,Embest ARM 标准 / 增强型仿真器套件, PC 机。软件: Embest IDE 2004 集成开发环境, Windows 2000/NT/XP 。
2 实验设备
3 实验内容
掌握 S3C44B0X 处理器对存储空间的配置和读写访问的方法。使用汇编和C 语言编程实现对 RAM 的字、半字和字节的读写。
4 实验原理
存储器地址分配图 Bank6/Bank7地址
大 /小 ENDIAN模式选择
Bank6/Bank7 地址
大/小endian模式
数据宽度选择
数据宽度选择
1. 存储控制器
2. 大 / 小 ENDIAN 模式选择 3. BANK0 总线宽度
实验原理
存储器控制专用寄存器总线宽度 / 等待控制寄存器( BWSCON )
Bank 控制寄存器 (BANKCONn: nGCS0-nGCS5)
Bank 控制寄存器 (BANKCONn: nGCS6-nGCS7)
刷新控制寄存器( REFRESH )
BANK 大小寄存器( BANKSIZE )
模式设置寄存器( MRSR )
总线宽度总线宽度
//等待寄存器
等待寄存器(BW S C ON ) 0x 0 1C 80 0 00
(BW S C ON ) 0x 0 1C 80 0 00 初始值初始值
0x 00 00 000x 00 00 00
[ 7] [1 1] [1 5][ 19 ][ 23 ][ 27 ][3 1][ 7] [1 1] [1 5][ 19 ][ 23 ][ 27 ][3 1]
::
S T1 ~ ST 7S T1 ~ ST 7
确定确定
Ba nk 1 ~7Ba nk 1 ~7
上的上的
S RAMS RAM
是否使用是否使用
U B / LBU B / LB
。。
00表示不使 用
表示不使 用U B/ L B
U B/ L B,引脚,引脚
[ 1 4[ 1 4
::
1 1]1 1]
定义 为定义 为
nW B E[3nW B E[3
::
0 ]0 ]
;;
11表示 使用
表示 使用
U B / LBU B / LB
, 引脚, 引脚
[ 14[ 14::
11 ]11 ]定义为
定义为nB E[ 3
nB E[ 3:
:0]
0]。。
[ 6] [1 0] [1 4][ 18 ][ 22 ][ 26 ][3 0][ 6] [1 0] [1 4][ 18 ][ 22 ][ 26 ][3 0]
::
WS 1~W S 7WS 1~W S 7
确定确定
Ba nk 1~ 7Ba nk 1~ 7
上的上的
SR AMSR AM
存储 器的存储 器的
等待状态 (不技持等待状态 (不技持
DR AMDR AM
或或
S D RAMS D RAM
))
00
——
等待禁止等待禁止
11
——
等待使 能等待使 能
[ 5[ 5::
4][ 94][ 9
::
8]8]
……
[ 2 9[ 2 9
::
2 8]2 8]
::
DW 1~ DW 7DW 1~ DW 7
确定确定
Ba nk 1~ B an k7Ba nk 1~ B an k7
的宽 度的宽 度
0 00 0
——
88位位
0 10 1
——
1616位位
1010
——
3232位位
[ 2[ 2::
1]1]:
:DW0
DW0指示
指示B an k 0
B an k 0数据总线宽度(只 读),由数据总线宽度(只 读),由
OM[ 1OM[ 1
::
0 ] 000 ] 00
——
88位位
0 10 1
——
1616位位
1010
——
3232位位
[ 0][ 0]::
E N DI A NE N DI A N
确定存储模式( 只读),由引脚电平 确定确定存储模式( 只读),由引脚电平 确定
00
——
小端模式小端模式
11
——
大端模式大端模式
20101111
3 ~ 07 ~ 41 1 ~81 5 ~1 21 9 ~1 62 3 ~2 02 7 ~2 43 1 ~2 8
实验原理寄存器的配置示例:ldr r0, =SMRDATAldmia r0, {r1-r13}ldr r0, =0x01c80000 ; BWSCON Addres
sstmia r0, {r1-r13}SMRDATA: .long 0x22221210 ; BWSCON.long 0x00000600 ; GCS0.long 0x00000700 ; GCS1.long 0x00000700 ; GCS2.long 0x00000700 ; GCS3
.long 0x00000700 ; GCS4.long 0x00000700 ; GCS4
.long 0x00000700 ; GCS5.long 0x00000700 ; GCS5
.long 0x0001002a ; GCS6, EDO .long 0x0001002a ; GCS6, EDO DRAM(Trcd=3, Tcas=2, DRAM(Trcd=3, Tcas=2, ;Tcp=1, CAN=10bit);Tcp=1, CAN=10bit).long 0x0001002a ; GCS7, EDO .long 0x0001002a ; GCS7, EDO DRAMDRAM.long 0x00960000 + 953 ; Refresh(REF.long 0x00960000 + 953 ; Refresh(REFEN=1, TREFMD=0, EN=1, TREFMD=0, ;Trp=3, Trc=5, Tchr=3);Trp=3, Trc=5, Tchr=3).long 0x0 ; Bank Size, 32.long 0x0 ; Bank Size, 32MB/32MBMB/32MB.long 0x20 ; MRSR 6(CL=.long 0x20 ; MRSR 6(CL=2)2).long 0x20 ; MRSR 7(CL=.long 0x20 ; MRSR 7(CL=2)2)
存储器( SROM/DRAM/SDRAM )地址线连接如下表所示,数据宽度不同,连接方式也不同。
实验原理
实验原理
片选信号 选择的接口或器件
NGCS0 FLASH
NGCS6/NSCS0 SDRAM
NGCS1 A20 A19 A18
0 0 0 CS1 USB0 0 1 CS2 固态硬盘0 1 0 CS3
IDE0 1 1 CS41 0 0 CS51 0 1 CS6 8-SEG1 1 0 CS7 ETHERNET1 1 1 CS8 LCD
片选信号设置
外围器件 片选信号 片选控制寄存器 地址空间
FLASH NGCS0 BANKCON0 0X0000_0000~0X01BF_FFFF
SDRAM NGCS6 BANKCON6 0X0C00_0000~0X0DF_FFFF
USB CS1 BANKCON1 0X0200_0000~0X0203_FFFF
固态硬盘 CS2 BANKCON1 0X0204_0000~0X0207_FFFF
IDE(IOR/W) CS3 BANKCON1 0X0208_0000~0X020B_FFFF
IDE(KEY) CS4 BANKCON1 0X020C_0000~0X020F_FFFF
IDE(PDIAG) CS5 BANKCON1 0X0210_0000~0X0213_FFFF
8-SEG CS6 BANKCON1 0X0214_0000~0X0217_FFFF
ETHERNET CS7 BANKCON1 0X0218_0000~0X021B_FFFF
LCD CS8 BANKCON1 0X021C_0000~0X021F_FFFF
NO USE NGCS2 BANKCON2 0X0400_0000~0X05FF_FFFF
KEYBOARD
NGCS3 BANKCON3 0X0600_0000~0X07FF_FFFF
NO USE NGCS4 BANKCON4 0X0800_0000~0X09FF_FFFF
NO USE NGCS5 BANKCON5 0X0A00_0000~0X0BFF_FFFF
NO USE NGCS7 BANKCON7 0X0E00_0000~0X1FFF_FFFF
实验原理外围地址空间分配:
实验原理
电路设计
Flash 连接电路
SDRAM 连接电路
44B0X SST39VF160FLASH
A(20..1) A(19..0)
DQ(15..0)D(15..0)
nGCS0
nOE
nW E
nCE
nOE
nW E
内存分配
Image_ZI_Base
Image_RW_Base
0x0C000000
Image_RO_Base
0x0
非易失性存储器
存放静态变量 / 常量
存放应用程序代码RO
RW
ZI
RO
CODE
RODATA
5 实验操作步骤
1. 准备实验环境。使用 Embest 仿真器连接目标板,使用 Embest S3CEV40 实验板附带的串口线连接实验板上的 UART0 和 PC 机的串口。
2. 在 PC 机上运行 windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。
3. 使用 EmbestIDE 通过 Embest 仿真器连接实验板,打开实验例程目录下 Memory_test 子目录下的 Memory_Test.ews 例程,编译链接通过后连接目标板,执行下载操作。
实验操作步骤
4. 打开 Memory1 窗口,键入地址 0x0C010000 ; 打开 Memory2 窗口,键入地址 0x0C010200 。
5. 打开 Rwrams.s 文件,在 LDR r2,=0x0C010000; 行设置断点;打开 Rwramc.c 文件,在 cRWramtest 函数 *ptr = 0xAA55AA55; 行设置断点。
6. 运行程序。程序停在 LDR r2,=0x0C010000; 行处,观察 Memory1 窗口数据内容,单步运行程序并注意观察运行前后 Memory1 窗口数据的变化;结合实验介绍,分析掌握汇编语言程序访问 RAM 的方法。
实验操作步骤
7. 当程序执行 Rwramc.c 文件内最后一条语句时,全速运行程序。程序停在 *ptr = 0xAA55AA55; 行处,观察 Memory2 窗口数据内容,单步运行程序并注意观察运行前后 Memory2 窗口数据的变化;结合实验介绍,分析掌握高级语言程序访问RAM 的方法。
8. 理解和掌握实验后,完成实验练习题。
实验题目题目 1. 对内存地址 0XC409000 开始的 255 个字节内
存单元填入 0x01----0xff, 并将这 255 个字节内存单元中的内容拷贝到 0XC009500 开始的内存中。用四种方法实现其拷贝:单字节、双字节、 4 字节、 16 字节。
题目 2. 对开发平台上实际内存 0XC400100 开始的 100 字数据单元填入 0X11111111----0X11111174 ,将数据拷贝到 0XC000400 开始的内存,将 0XC000400 开始的每个字单元进行 64 位累加,结果送入其后容闲内存单元,并通过串口显示起始和目标地址信息。