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"))) //

  • 相关阅读:
    数组、向量、矩阵的区别
    vue-cli3没有config.js文件的解决方法
    通用JS六
    通用JS五
    通用JS四
    通用JS三
    vue中sort排序与revers数据反序
    通用JS二
    VueX存储与本地存储以及会话存储的区别
    通用JS(一)
  • 原文地址:https://www.cnblogs.com/mofei004/p/10413861.html
Copyright © 2011-2022 走看看