zoukankan      html  css  js  c++  java
  • uboot启动源码分析

    开发板smdk2410的uboot为例。
    第一阶段文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S。

    一、第一阶段
    1、设置cpu为svc模式
    2、关看门狗、关中断
    3、cpu初始化
    4、设置栈
    5、时钟初始化
    6、拷贝uboot到ram
    7、清除bss段
    8、set PreLoadedONRAM
    9、执行start_armboot,进入第二阶段入口

    问题:
    1、汇编中标号的实质?
    2、内存控制参数拷贝过程中,源地址的计算问题?

    3、时钟参数的计算问题?

    二、第二阶段
    start_armboot()函数分析:
    1、设置指针gd、gd->bd,存储的是与内核交互的参数。
    2、执行init_sequence数组中的函数。cpu、板子、中断、波特率、串口、控制台、dram等初始化操作。
    3、内存中malloc段初始化。
    4、设置uboot环境变量
    5、设置bd中网卡参数
    6、串口设备初始化
    7、设置gd->jt
    8、初始化控制为一个设备
    9、初始化GPIO
    10、以太网初始化
    11、进入循环main_loop()

    第2步中:
    board_init()://1、IO初始化;2、板子识别码;3、设置bi_boot_params,gd->bd->bi_boot_params = 0x30000100;
    serial_setbrg()://设置串口寄存器参数

    uboot命令实现:
    #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)
    cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}

    其中Struct_Section定义如下:
    #define Struct_Section __attribute__ ((unused,section (".u_boot_cmd"))) //

  • 相关阅读:
    什么是UDDI?
    保存图片
    什么是EIP?
    众多Android开源项目推荐
    Google code android 开源项目 集合
    实现屏幕下方展示的TAB分页
    Android中attr 自定义 属性详解
    J2EE快速开发框架wabacus
    popwindow动画显示消失,activity切换动画
    Android 一些项目的源代码,覆盖Android开发的每个领域
  • 原文地址:https://www.cnblogs.com/mofei004/p/10413861.html
Copyright © 2011-2022 走看看