地址从0x 0800 0000 -0x0bff ffff,32m flash,地址从0x0c00 0000-0x0dff ffff.
规划如下:bootloader, linux kernel, rootdisk放在flash里。
具体从 0x0c00 0000开始的第一个1M放bootloader,
0x0c10 0000开始的2m放linux kernel,从 0x0c30 0000开始都给rootdisk。
启动:
首先,启动后arm920T将地址0x0c00 0000映射到0(可通过跳线设置),
实际上从0x0c00 0000启动,进入我们的bootloader,但由于flash速度慢,
所以bootloader前面有一小段程序把bootloader拷贝到SDRAM 中的0x0AFE0100,
再从0x 0800 0000 运行bootloader,我们叫这段小程序为flashloader,
flashloader必须要首先初始化SDRAM,不然往那放那些东东:
.equ SOURCE, 0x0C000100 bootloader的存放地址
.equ TARGET, 0x0AFE0100 目标地址
.equ SDCTL0, 0x221000 SDRAM控制器寄存器
// size is stored in location 0x0C0000FC
.global _start
_start: //入口点
//;***************************************
//;* Init SDRAM
//;***************************************
// ***************
// * SDRAM
// ***************
LDR r1, =SDCTL0 //
// Set Precharge Command
LDR r3, =0x92120200
//ldr r3,=0x92120251
STR r3, [r1]
// Issue Precharge All Commad
LDR r3, =0x8200000
LDR r2, [r3]
// Set AutoRefresh Command
LDR r3, =0xA2120200
STR r3, [r1]
// Issue AutoRefresh Command
LDR r3, =0x8000000
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
LDR r2, [r3]
// Set Mode Register
LDR r3, =0xB21202