zoukankan      html  css  js  c++  java
  • u-boot 第一阶段

    u-boot 第一阶段 

     

      代码位置 cpu/arm920t/start.S 

             

      流程分析:

      

                   1.保存一些全局变量,用于启动程序将代码从flash拷贝到RAM或其他使用。有一些变量的值是通过链接脚本得到的,如

     

                          TEXT_BASE 位于board2440config.mk 中  

                        __bss_start、_end  位于board2440u-boot.lds 中  

     

      2.设置CPU保护模式

     

    3.关闭看门狗

     

    4.屏蔽所有中断

     

    5. 执行cpu_init_crit   关闭 I/D Cache 、MMU   

                                  调用lowlevel_init  位置 :board2440lowlevel_init.S 

          功能 :初始化SDRAM   为复制FLASH中代码到RAM做准备,FLASH中运行慢,但掉电不丢失,u-boot 就存储在FLASH中

                         we do sys-critical inits only at reboot, not when booting from ram!  意思说 cpu_init_crit  只在上电时执行,而在仿真调试时,代码是由仿真器写到SDRAM中,说明

    SDRAM已被初始化,则不需要重复执行!

     

    6.  设置栈  为了能调用C函数clock_init 初始化时钟

     

    7. 初始化时钟  clock_init  仿照 board2440smdk2440.c board_init    为了由12M转化为400M 加快运行速度

     

    8.把FLASH中的u-boot代码移到RAM中

     

    9.初始化内存中bss段中数据为0     bss段保存 静态变量、全局变量

     

    10.跳转到 _start_armboot  u-boot 第二阶段初始化烧写FLASH、串口、网卡、USB等设备以方便开发及启动内核。

     
     
  • 相关阅读:
    RR调度(Round-robin scheduling)简单介绍
    iOS 应用内跳转到系统设置
    Python setup.py和MANIFEST.in文件
    HDU 1017 A Mathematical Curiosity (枚举水题)
    安卓获取软硬件信息并上传给server(Socket实现)
    杭电1869六度分离
    【原创】SM4password算法源代码接口具体解释
    MySQL经常使用命令--create命令使用
    移植opencv2.4.9到itop4412开发板
    Esper epl语句实验
  • 原文地址:https://www.cnblogs.com/80scd/p/5872176.html
Copyright © 2011-2022 走看看