ARM-linux启动的流程

首先,porting linux的时候要规划内存影像,如小弟的系统有64m SDRAM, 
地址从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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值