首页 > 代码库 > 实验三——SDRAM

实验三——SDRAM

一。运行环境

  开发板:jz2440

  系统:  ubuntu12.04

  编译器:arm-linux-gcc

  关于介绍性 的东西这里不说,以及2440的地址映射图什么的  ,有空再补充。

  先看代码:这里主要有三个head.S  ,led.c ,Makefile,其中led的代码同流水灯一样,直接拷贝过来。

  此外外,代码参考韦东山先生的源码,经过烧写可验证没问题。

二。直接贴代码

先看Makefile:

1 sdram.bin:head.S led.c2     arm-linux-gcc -Wall -O2 -c -g -o head.o head.S3     arm-linux-gcc -Wall -O2 -c -g -o led.o led.c4     arm-linux-ld -Ttext 0x30000000 head.o led.o -o sdram_elf5     arm-linux-objcopy -O binary -S sdram_elf sdram.bin6     arm-linux-objdump -D -m arm sdram_elf>sdram.dis7 8 clean:9     rm -f sdram.bin sdram_elf*.o sdram.dis

再看head.h

 1 .equ MEM_BASE,0x48000000 2 .equ SDRAM_BASE,0x30000000 3  4 .text 5 .global _start 6 _start: 7  8     bl close_watchdog       @关闭看门狗 9     bl mem_set              @设置存储寄存器组10     bl steppingstone_sdram  @复制代码到sdram11 12     ldr pc,=on_sdram13 on_sdram:14     ldr sp,=0x3400000015     bl main16 halt_loop:17     b halt_loop18 19 20 21 close_watchdog:22     mov r1,#0x5300000023     mov r2,#0x024     str r2,[r1]25 26     mov pc,lr   @返回27 28 steppingstone_sdram:    @起始地址0x00000000,目标地址0x3000000029     mov r1,#030     ldr r2,=SDRAM_BASE31     mov r3,#1024*432 33 34 copy_loop:35     ldr r4,[r1],#436     str r4,[r2],#437 38     cmp r1,r339     bne copy_loop40     mov pc,lr        @返回41 42 mem_set:43     mov r1,#MEM_BASE44 45     adrl r2,JCQ46     add r3,r1,#52      @4*1347 48 set_loop:49     ldr r4,[r2],#450     str r4,[r1],#451     cmp r1,r352     bne set_loop53 54     mov pc,lr55 56 57 .align 458 JCQ:59     .long 0x22011110 @BWSCON60     .long 0x00000700 @bankcon061     .long 0x00000700 @bankcon162     .long 0x00000700 @bankcon263     .long 0x00000700 @bankcon364     .long 0x00000700 @bankcon465     .long 0x00000700 @bankcon566     .long 0x00018005 @bankcon667     .long 0x00018005 @bankcon768     .long 0x008c07a3 @refresh69     .long 0x000000b1 @banksize70     .long 0x00000030 @mrsrb671     .long 0x00000030 @mrsrb7

其实没什么改动,换些名字而已,但是自己敲的话,当然会有一些细节上面会出错,不注意的地方。

以上启动文件是以汇编编写的,下面贴出c语言版的。

 

实验三——SDRAM