Garbage614 发表于 2011-11-13 01:17:20

ARM入门笔记——SDRAM测试

嵌入式硬件平台:TQ2440   
开发软件:gcc + gdb + vim
软件环境:VM + ubuntu + SecureCRT + dnw

nandflash启动,从setppingstone复制代码到sdram,然后跳转到sdram运行。

启动代码:
@*************************************************************************************
@文件:start.s
@描述:关看门狗,设置SDRAM相关寄存器,将程序复制到SDRAM,然后跳转到sdram执行
@时间:20111112
@*************************************************************************************

.equ   MemCfgBase,   0x48000000
.equ   SdramBase,   0x30000000       

.text
.global _start
_start:
   bl      DisWTD                        @关看门狗
   bl      SetupSdram                        @sdram相关13个寄存器设置
   bl      CpSetppingstone2Sdram          @复制代码到sdram
   ldr   pc, =OnSdram                @跳转到sdram
OnSdram:
   ldr        sp,=0x34000000                @设置栈 64m
   bl        main                        @跳转到main               
halt_loop:
   b        halt_loop
               
DisWTD:
   ldr        r0, =0x53000000
   mov        r1, #0x0
   str         r1,
   mov         pc, lr                             @返回
               
SetupSdram:
   ldr        r0, =MemCfgBase                   @存入起始地址
   adr   lr1,MemCfgVal                   @存入寄存器val表地址
   add        r3, r0, #52                @13*4 = 52
loopSetup:
   ldr        r2, ,        #4                @读val,并+4               
   str        r2, ,         #4                @写入寄存器,r0+4
   cmp        r0, r3                           @是否写完
   bne        loopSetup                                       
   mov        pc, lr                        @写完则返回
               
@复制代码到sdram
CpSetppingstone2Sdram:
   ldr        r0, =SdramBase                @存入Sdram起始地址
   mov        r1, #0x0                                 @
   mov        r2, #4*1024                @拷贝4k到sdram
loopCopy:
   ldr        r3, ,        #4
   str        r3, ,        #4
   cmp   r1, r2
   bne        loopCopy
   mov   pc, lr                        @返回

@建立13个寄存器val表
MemCfgVal:
.align 4                                @按照4的倍数对齐
   .long        0x22011112                        @BWSCON
   .long        0x00000700                        @BANKCON0        nor
   .long        0x00000700                        @BANKCON1
   .long        0x00000700                        @BANKCON2
   .long        0x00000700                        @BANKCON3
   .long        0x00000700                        @BANKCON4        dm9000
   .long        0x00000700                        @BANKCON5
   .long        0x00018005                        @BANKCON6        sdram 9bit 3clk
   .long        0x00018005                        @BANKCON7
   .long   0x008C07A3                        @REFRESH   (12mHz) enable CBR 2clk 7clk
   .long   0x000000B1                        @BANKSIZE         64M
   .long        0x00000030                        @MRSRB6        3clk
   .long        0x00000030                        @MRSRB7


修改原因:修改版式

Garbage614 发表于 2011-11-13 01:28:09

makefile:

CFLAG        := -Wall -O2 -g
obj        := start.o memary.o

memary.bin   :        $(obj)
        arm-linux-ld -Ttext 0x30000000 $^ -o memary_elf
        arm-linux-objcopy -O binary -S memary_elf memary.bin
        arm-linux-objdump -D -m arm memary_elf > memary.dis
%.o        :        %.c
        arm-linux-gcc $(CFLAG) -c $< -o $@
%.o        :        %.s
        arm-linux-gcc $(CFLAG) -c $< -o $@
.PHONY        :clean
clean:
        rm -rf *.o memary.bin memary_elf *.bin


memary.c :
使用流水灯的c文件就好
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5191993&bbs_page_no=1&bbs_id=1032

工程文件
点击此处下载 ourdev_694634E5UKDA.zip(文件大小:13K) (原文件名:memary.zip)

Garbage614 发表于 2011-11-13 01:36:03

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_694635TAKQWX.JPG
(原文件名:memary.dis.JPG)

yanghc 发表于 2011-11-13 08:34:43

顶,有时间看看

hysgoogle 发表于 2011-11-13 15:35:16

很好。

Garbage614 发表于 2011-11-13 16:33:13

终于有人顶贴了,前边还有三篇(点灯,按键,linux下建设arm开发环境),方便和我一样入门的同学。

xiongxie007 发表于 2013-5-8 10:03:44

正要学,就来了。
页: [1]
查看完整版本: ARM入门笔记——SDRAM测试