redboot 启动分析 一句话

Redboot 启动过程

1.Reset 入口点:0x0

    传递控制权到ROM的入口处:reset_vector

2.调用宏PLATFORM_SETUP1,完成下面的工作:

  • 关中断

  • 禁能以及清除caches

  • 初始化内存控制器(可能包括检查内存位置)

  • 设置时钟频率

  • 初始化MMU table

    • 设置TTBRDACR为默认值

    • 映射MMU table到内存

      • DRAM at 0x00000000 cacheable/buffered

      • Device registers elsewhere uncacheable/unbuffered usually 1-1

      • DRAM at 0xF0000000 uncacheable/unbuffered (1-1 in aaed2000)

      • remap ROM at 0 elsewhere

  • 使能MMU

  • 为启动ROMRAM重定位镜像到RAM

  • CPU时设置其他CPU

3.跳转到HAL启动

  • 设置中断向量表在 0+ 位置
  • 拷贝数据段(.data section)RAM

     

  • 初始化CPSRSPSR
  • 设置SP 
  • 清除 .bss

     

    调用 hal_hardware_init()
  • 如果包括GDB stubs的话则调用initialize_stub()

  • 调用hal_ctrlc_isr_init()                        //rom版本的Redboot不支持ctrl-c

  • 调用cyg_hal_invoke_constructors()

  • 调用cyg_start()

 

来自:http://blog.chinaunix.net/u1/39236/showart_348210.html

你可能感兴趣的:(工作,vector,table)