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

简介: 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    bi...

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指令。
相关文章
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
115 4
|
7月前
|
Spring Boot CMD 运行日志输出中文乱码
Spring Boot CMD 运行日志输出中文乱码
157 0
经验大分享:spring项目在启动的时候执行方法初始化
经验大分享:spring项目在启动的时候执行方法初始化
105 0
Spring Boot启动命令参数详解及源码分析
Spring Boot启动命令参数详解及源码分析
252 1
|
10月前
|
SpringBoot集成swagger后出现: Failed to start bean ‘documentationPluginsBootstrapper‘的解决方法
SpringBoot集成swagger后出现: Failed to start bean ‘documentationPluginsBootstrapper‘的解决方法
249 0
我是如何使用Spring Retry减少1000 行代码
在我的日常工作中,我主要负责开发一个庞大的金融应用程序。当客户发送请求时,我们使用他们的用户 ID 从第三方服务获取他们的帐户信息,保存交易并更新缓存中的详细信息。尽管整个流程看起来足够简单,但这些下游系统中的每一个都是不可靠的。我们必须在每一层上实现重试,并且我们必须以一种可以控制重试次数和每次重试之间的延迟的方式来实现,这样我们就不会超载下游系统。由于我无法共享实际代码,我会创建一个演示系统来做简单表示:
97 0
探讨spring的启动类run方法启动的时候底层会执行什么
Spring是一个开源的Java应用程序框架,它为开发者提供了一种简化企业级应用开发的方式。Spring框架的核心是一个轻量级的容器,它能够管理和协调应用程序中的各个组件。在Spring框架中,Spring Boot是一个用于快速构建独立的、生产级的Spring应用程序的工具。Spring Boot简化了Spring应用程序的配置和部署,使得开发者可以更专注于业务逻辑的实现。
105 0
Spring Boot 2.x 实战--日志打印与输出到文件
日志打印和输出对于线上环境尤为重要,对于日志,首要是使用如 Slf4j 的日志门面,降低具体代码和日志框架的耦合。本文只要实战了 Spring Boot 整合 Log4j2 与 Slf4j 实现日志打印和输出到文件。
3615 0
Spring Boot  2.x 实战--日志打印与输出到文件
自定义springboot-start
自定义springboot-start
118 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等