标签:style blog color ar os sp 文件 div on
一。运行环境
开发板:jz2440
系统: ubuntu12.04
编译器:arm-linux-gcc
关于介绍性 的东西这里不说,以及2440的地址映射图什么的 ,有空再补充。
先看代码:这里主要有三个head.S ,led.c ,Makefile,其中led的代码同流水灯一样,直接拷贝过来。
此外外,代码参考韦东山先生的源码,经过烧写可验证没问题。
二。直接贴代码
先看Makefile:
1 sdram.bin:head.S led.c 2 arm-linux-gcc -Wall -O2 -c -g -o head.o head.S 3 arm-linux-gcc -Wall -O2 -c -g -o led.o led.c 4 arm-linux-ld -Ttext 0x30000000 head.o led.o -o sdram_elf 5 arm-linux-objcopy -O binary -S sdram_elf sdram.bin 6 arm-linux-objdump -D -m arm sdram_elf>sdram.dis 7 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 @复制代码到sdram 11 12 ldr pc,=on_sdram 13 on_sdram: 14 ldr sp,=0x34000000 15 bl main 16 halt_loop: 17 b halt_loop 18 19 20 21 close_watchdog: 22 mov r1,#0x53000000 23 mov r2,#0x0 24 str r2,[r1] 25 26 mov pc,lr @返回 27 28 steppingstone_sdram: @起始地址0x00000000,目标地址0x30000000 29 mov r1,#0 30 ldr r2,=SDRAM_BASE 31 mov r3,#1024*4 32 33 34 copy_loop: 35 ldr r4,[r1],#4 36 str r4,[r2],#4 37 38 cmp r1,r3 39 bne copy_loop 40 mov pc,lr @返回 41 42 mem_set: 43 mov r1,#MEM_BASE 44 45 adrl r2,JCQ 46 add r3,r1,#52 @4*13 47 48 set_loop: 49 ldr r4,[r2],#4 50 str r4,[r1],#4 51 cmp r1,r3 52 bne set_loop 53 54 mov pc,lr 55 56 57 .align 4 58 JCQ: 59 .long 0x22011110 @BWSCON 60 .long 0x00000700 @bankcon0 61 .long 0x00000700 @bankcon1 62 .long 0x00000700 @bankcon2 63 .long 0x00000700 @bankcon3 64 .long 0x00000700 @bankcon4 65 .long 0x00000700 @bankcon5 66 .long 0x00018005 @bankcon6 67 .long 0x00018005 @bankcon7 68 .long 0x008c07a3 @refresh 69 .long 0x000000b1 @banksize 70 .long 0x00000030 @mrsrb6 71 .long 0x00000030 @mrsrb7
其实没什么改动,换些名字而已,但是自己敲的话,当然会有一些细节上面会出错,不注意的地方。
以上启动文件是以汇编编写的,下面贴出c语言版的。
标签:style blog color ar os sp 文件 div on
原文地址:http://www.cnblogs.com/hulig7/p/4083511.html