|
嵌入式硬件平台: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, [r0]
mov pc, lr @返回
SetupSdram:
ldr r0, =MemCfgBase @存入起始地址
adr lr1,MemCfgVal @存入寄存器val表地址
add r3, r0, #52 @13*4 = 52
loopSetup:
ldr r2, [r1], #4 @读val,并+4
str r2, [r0], #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, [r1], #4
str r3, [r0], #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
修改原因:修改版式 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|