Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2908311
  • 博文数量: 199
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 4126
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-06 19:06
个人简介

半个PostgreSQL DBA,热衷于数据库相关的技术。我的ppt分享https://pan.baidu.com/s/1eRQsdAa https://github.com/chenhuajun https://chenhuajun.github.io

文章分类

全部博文(199)

文章存档

2020年(5)

2019年(1)

2018年(12)

2017年(23)

2016年(43)

2015年(51)

2014年(27)

2013年(21)

2011年(1)

2010年(4)

2009年(5)

2008年(6)

分类: LINUX

2008-08-23 23:25:33


u-boot-1.3.4的start.S代码分析

代码:u-boot-1.3.4\cpu\arm920t\start.S

本段代码是uboot的stage1,主要作以下处理:
1)设置CPU为SVC32模式同时屏蔽IRQ,FIQ中断
       mrs    r0,cpsr
    bic    r0,r0,#0x1f
    orr    r0,r0,#0xd3
    msr    cpsr,r0

2)点亮红色LED(但是好像什么也没做)
    bl coloured_LED_init
    bl red_LED_on

3)如果是AT91RM9200把异常表拷到地址0x00000000处(其它CPU为什么不需要拷?)

4)如果是CONFIG_S3C2400或S3C2410关看门狗和屏蔽所有中断,以及设置FCLK:HCLK:PCLK的比例关系为1:2:4
        /* turn off the watchdog */
    ldr     r0, =pWTCON
    mov     r1, #0x0
    str     r1, [r0]

    /*
     * mask all IRQs by setting all bits in the INTMR - default
     */
    mov    r1, #0xffffffff
    ldr    r0, =INTMSK
    str    r1, [r0]
# if defined(CONFIG_S3C2410)
    ldr    r1, =0x3ff
    ldr    r0, =INTSUBMSK
    str    r1, [r0]
# endif

    /* FCLK:HCLK:PCLK = 1:2:4 */
    /* default FCLK is 120 MHz ! */
    ldr    r0, =CLKDIVN
    mov    r1, #3
    str    r1, [r0]

5)CPU低级初始化(cache,MMU,RAM timing)
bl    cpu_init_crit

6)如果当前位置为FLASH, 拷贝uboot到RAM

7)设置Stage2的堆栈,清除BSS

8)跳转到Stage2的起始地址_start_armboot
ldr    pc, _start_armboot

其它start.S中有下面这行代码,是以前的1.1.6上是没有的。
    .balignl 16,0xdeadbeef
它的含义是以16字节边界对齐,为了对齐而越过的
地址以字为单位填冲值0xdeadbeef。我猜0xdeadbeef可能NOP指令。
阅读(3566) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~