zoukankan      html  css  js  c++  java
  • 基于s5pv210的uboot总结

    1、启动过程特征总结
      (1)第一阶段为汇编阶段、第二阶段为C阶段
      (2)第一阶段在SRAM中、第二阶段在DRAM中
      (3)第一阶段注重SoC内部、第二阶段注重SoC外部Board内部

    2、uboot的第一阶段做了哪些工作
      (1)构建异常向量表
      (2)设置CPU为SVC模式
      (3)关看门狗
      (4)开发板供电置锁
      (5)时钟初始化
      (6)DDR初始化
      (7)串口初始化并打印"OK"
      (8)重定位
      (9)建立映射表并开启MMU
      (10)跳转到第二阶段

    3、uboot第二阶段主要是对开发板级别的硬件、软件数据结构进行初始化。

      init_sequence
      cpu_init 空的
      board_init 网卡、机器码、内存传参地址
      dm9000_pre_init 网卡
      gd->bd->bi_arch_number 机器码
      gd->bd->bi_boot_params 内存传参地址
      interrupt_init 定时器
      env_init
      init_baudrate gd数据结构中波特率
      serial_init 空的
      console_init_f 空的
      display_banner 打印启动信息
      print_cpuinfo 打印CPU时钟设置信息
      checkboard 检验开发板名字
      dram_init gd数据结构中DDR信息
      display_dram_config 打印DDR配置信息表
      mem_malloc_init 初始化uboot自己维护的堆管理器的内存
      mmc_initialize inand/SD卡的SoC控制器和卡的初始化
      env_relocate 环境变量重定位
      gd->bd->bi_ip_addr gd数据结构赋值
      gd->bd->bi_enetaddr gd数据结构赋值
      devices_init 空的
      jumptable_init 不用关注的
      console_init_r 真正的控制台初始化
      enable_interrupts 空的
      loadaddr、bootfile 环境变量读出初始化全局变量
      board_late_init 空的
      eth_initialize 空的
      x210_preboot_init LCD初始化和显示logo
      check_menu_update_from_sd 检查自动更新
      main_loop 主循环

        1、在uboot中因为有汇编阶段参与,因此不能直接找main.c。整个程序的入口取决于链接脚本中ENTRY声明的地方。
    ENTRY(_start)因此_start符号所在的文件就是整个程序的起始文件,_start所在处的代码就是整个程序的起始代码。

    _start在start.S文件中

  • 相关阅读:
    【深度强化学习】Curriculum-guided Hindsight Experience Replay读后感
    【深度学习】perceptron(感知机)
    【深度学习】基础--NumPy
    【RMAN】一些参数温故知新
    初识Kotlin之函数
    初识Kotlin之变量
    编程和英语一起学,每日一词
    SpringBoot注册Windows服务和启动报错的原因
    从Docker 到Jenkins 到Ansible的部署经验
    IDEA 常用配置
  • 原文地址:https://www.cnblogs.com/yygsj/p/5427068.html
Copyright © 2011-2022 走看看