综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统S3C44b0 ARM7开发板入门[电子图书]正文
 
第五章ARM7开发板_s3c44b0基础实验5.1.3 SDRAM代码样例

5.1.3 SDRAM代码样例

下面是13个存储寄存器的设定范例

    ldr   r0, =SMRDATA

       ldmia      r0, {r1-r13}

       ldr   r0, =0x01c80000   ;     BWSCON Address

       stmia      r0, {r1-r13}         

       SMRDATA     DATA                  

       DCD      0x22221210   ;     BWSCON

       DCD      0x00000600   ;     GCS0

       DCD      0x00000700   ;     GCS1

       DCD      0x00000700   ;     GCS2

       DCD      0x00000700   ;     GCS3

       DCD      0x00000700   ;     GCS4

       DCD      0x00000700   ;     GCS5

       DCD      0x0001002a   ;     GCS6, EDO DRAM(Trcd=3, Tcas=2, Tcp=1, CAN=10bit)

       DCD      0x0001002a   ;     GCS7, EDO DRAM

       DCD      0x00960000 + 953        ;     Refresh(REFEN=1, TREFMD=0, Trp=3, Trc=5, Tchr=3)

       DCD      0x0        ;     Bank Size, 32MB/32MB

       DCD      0x20      ;     MRSR 6(CL=2)

       DCD      0x20      ;     MRSR 7(CL=2)

注:在此我们解释主要的指令

*        

LDR大范围的地址读取伪指令

LDR伪指令将一个32位的常数或者一个地址值读取到寄存器中。

a)         语法格式

LDR{cond} 寄存器,=[expr|label-expr]

其中,    cond为可选的指令执行的条件。

              寄存器为目标寄存器

              Expr 32位常量。编译器将根据expr的取值情况,如下处理LDR为指令:

u       expr表示的地址值没有超过MOVMVN指令中地址的取值范围时,编译器用合适的MOV或者MVN指令代替该LDR为指令。

u       expr表示的地址值超过了MOV或者MVN指令的取值范围时,编译器将该常数放在数据缓冲区中,同时用一条基于PCLDR指令读取该常数。

Label-expr为基于PC的地址表达式或者是外部表达式。当Label-expr为基于PC的地址表达式时,编译器将label-expr表示的数值放在数据缓冲区中,同时用一条PCLDR指令读取该值。当Label-expr为外部表达式,或者非当前段的表达式时,汇编编译器将目标文件中插入连接重定位伪操作,这样连接器将在连接时,生成该地址。

 

 

b)        示例

       1:将0xff0读取到R1

                LDR R1,=0xff0

                汇编后将得到:

                MOV R1,0xff0

       2:将0xfff读取到R1中。

                LDR R1,=0XFFF

                汇编后将得到:

                LDR R1,[pc,OFFSET_TO_LPOOL]

                …

                LPOOL DCD 0xFFF

       3:将外部地址ADDR1读取到R1中。

                LDR R1,=ADDR1

                汇编后将得到:

                LDR R1,[PC,OFFSET_TO_LPOOL]

                …

                LPOOL DCD ADDR1

 

使用汇编语言读写RAM(ARMSDRAM_test_asm/ARMSDRAM.mcp)

;*******************************************************************************

;* 名称: cRWramtest

;* 功能: 使用汇编语言读写已初始化的RAM ***************************************

 

 AREA Block,CODE,READONLY

 

;程序入口标志

       ENTRY  

start

 

       LDR       r2,=0x0C010000                ;字长读

       LDR       r3,=0x55AA55AA

       STR r3,[r2]                        ;字长写

 

       LDR       r2,=0x0C010004 

       LDRH     r3,[r2]                     ;半字读

 

       LDR       r3,=0x55AA

       STRH     r3,[r2],#2                   ;半字写

       STRH     r3,[r2]

 

       LDR       r2,=0x0C010008

       LDRB     r3,=0xAA                     ;字节读

       STRB      r3,[r2],#1                   ;字节写

       LDRB     r3,=0x55

       STRB      r3,[r2],#1

 

       LDRB     r3,=0xAA

       STRB      r3,[r2],#1

       LDRB     r3,=0x55

       STRB      r3,[r2]

 

End


返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

关于我们 ┋ 友情链接


深圳市福田区海滨广场福业大厦12C
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号