首页 > 代码库 > 实验三——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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。