zoukankan      html  css  js  c++  java
  • uboot启动第二阶段start_armboot函数遍历init_sequence做了什么?

    总体来说做了初始化gd结构变量,初始化网卡,timer4,打印一些cpu时钟,uboot版本等信息

      一。  init_sequence[]函数指针数组位于lib_arm/board.c

      二。  cpu_init  位于cpu/s5pc11x/cpu.c  这里什么也没做

      三。  board_init  位于board/samsung/x210/x210.c  这里初始化网卡DM9000,gd->bd->bi_arch_number赋值(机器码),

          gd->bd->bi_boot_params赋值(内核传参内存地址)(0x3000 0100)

      四。  interrupt_init  位于cpu/s5pc11x/interrupts.c  将timer4定时为10ms。

      五。  env_init  位于common/env_auto.c  这里将gd->env_addr赋值为内存中默认的环境变量的首地址,gd->env_valid = 1(表明环境变量可用);

      六。  init_baudrate  位于lib_arm/board.c  将环境变量中的波特率赋值给gd->bd->bi_baudrate = gd->baudrate

      七。  serial_init  位于cpu/s5pc11x/serial.c  这里什么也没做

      八。  console_init_f  位于common/console.c  这里只将gd->have_console = 1;

      九。  display_banner  位于common/board.c  用串口打印版本信息。(printf系列函数中有用到gd变量,所以gd必须赋值若无则可以用serial_puts来输出字符串)

      十。   print_cpuinfo  位于cpu/s5pc11x/s5pc11o/speed.c  用于打印cpu时钟信息。

      十一。  checkboard位于board/samsung/x210/x210.c中用于打印板子版本这里是printf(" Board:   X210 ");

      十二。  dram_init  位于board/samsung/x210/x210.c用于初始化dram(软件层面的其实就是gd->bd->bi_dram[]这个结构体进行赋值)。

      十三。  display_dram_config  位于lib_arm/board.c  用于计算dram的大小并且将其打印出来。

  • 相关阅读:
    path.join()和path.resolve()的区别
    防抖debounce和节流throttle
    Promise原理剖析
    从页面到服务器,node实现文件下载
    从toString()方法到Object.prototype.toString.call()方法
    一个url加载的全过程
    vue2.0中配置文件路径
    vue2.0 #$emit,$on的使用
    跨平台移动应用引擎CrossApp V0.6.0 发布,增加视频控件
    天使汇&9秒闪投手游专场-寻找下一个《刀塔传奇》
  • 原文地址:https://www.cnblogs.com/genshu123/p/11135952.html
Copyright © 2011-2022 走看看