11th.U-boot——代码结构分析(二)

  U-boot的目的是为了启动内核。

  整个工作流程具体如下:

  1. 读出内核
  2. 启动内核
    1. 设置启动参数
    2. 跳到入口地址    

    

     环境变量bootcmd中有两个指令:

   nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0 

     1.

  其中 nand read.jffs2 0x30007FC0 kernel; 一句,就是读出内核

     2.

  此后执行命令 bootm 0x30007FC0 ,即启动内核。

  在do_bootm命令中,会将内核放到正确的加载地址(通过Uimage)。之后再调用do_bootm_linux命令。

  在do_bootm命令中,主要做两个事情。

  一是设置启动参数,二是跳到入口地址。

  启动参数主要有四个:setup_start_tag,setup_memory_tags,setup_commandline_tag,setup_end_tag。当然中间还有其他启动参数。

  至此。U-BOOT完毕。

  

  

  

  

原文地址:https://www.cnblogs.com/asam/p/6398576.html