2440的Nand启动

来源:互联网 发布:淘宝无线店铺网址 编辑:程序博客网 时间:2024/05/23 10:13

2440的Nand启动的简略图是这样的

4K的SRAM的启动地址是0x0000000


启动时硬件强制执行

1.强制将Nand Flash前4K的内容拷贝到SRAM中(0地址)

2.CPU从0地址开始执行

所以说 制定代码块从0开始启动


Nand启动软件初始化

1.设置栈

sp指向某块内存,通常情况下指向SRAM(所以通常不用初始化),如果指向SDRAM需要初始化

2.设置main函数的返回地址

3.调用main函数

4.清理工作


Nand启动硬件初始化

1. 关闭看门狗

2.初始化始终(如果速度不强求,可以不设置)

3.初始化SDRAM(没有用到则不需要初始化)



eg:

@******************************************************************************
@ File:crt0.S
@ 功能:通过它转入C程序
@******************************************************************************       


.text
.global _start
_start:
       
   硬件初始化 关闭看门狗  

  ldr     r0, =0x53000000     @ WATCHDOG寄存器地址
           
//将0x53000000的值放在r0中

    mov     r1, #0x0     //将0x0这个值放入r1中                 
            str     r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启

//将r1中的值放到r0中存放的地址当中

   软件初始化  设置栈

            ldr     sp, =1024*4 //因为会强制将Nand的前4K放到SRAM中,不过程序占用不了4K的大小,所以将将栈的地址放到SRAM的4K之后        
                                       
            bl      main                @ 调用C程序中的main函数
halt_loop:
            b       halt_loop



0 0