美文网首页
小白视角看uboot makefile

小白视角看uboot makefile

作者: 哥尔赞赞赞 | 来源:发表于2019-03-17 11:29 被阅读0次

    要了解uboot的结构,最好的办法就是看uboot根目录下的Makefile。作为小白,第一次看Makefile时简直如同天书,下面内容是我看了韦东山uboot视频教程,以及makefile规则教程后写下的。

    uboot源码中许多可以直接编译的开发板,型号存在./board中,以smdk2410开发板为例。(后续内容均将uboot根目录定为当前目录)

    生成uboot.bin文件我们需要执行两条命令:

    1. make smdk2410_config
    2. make

    第一条将它称为配置
    第二条则是编译

    先来看第一条 配置

    1. make smdk2410_config

    打开在uboot根目录下的Makefile文件,搜索smdk2410_config,找到如下两行

    smdk2410_config :   unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
    

    预习一下makefile教程后,大概知道这两行所做的事情:

    1. smdk2410_config是一个标签入口,依赖于unconfig目标
    2. 搜索unconfig,找到unconfig做了什么:
    unconfig:
        @rm -f $(obj)include/config.h $(obj)include/config.mk \
            $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
            $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
    

    unconfig 会删除一些文件,这些文件应该是每次make xxx_config都会生成的,清理这些上次生成文件,为当前这次做准备

    1. 回到@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0这一行
      这其实是一句命令,解析之后其实就是:
      mkconfig smdk2410 arm arm920t smdk2410 samsung s3c24x0
      也就是执行mkconfig命令,后面跟着6个参数

    2. mkconfig应该是个可执行文件,在uboot根目录下搜索,果然发现了mkconfig文件,打开查看里面内容
      mkconfig文件中前半部分为一大堆判断语句,大概是用来分析参数是否合法输入。
      重点在后半段:

    #
    # Create include file for Make
    #
    echo "ARCH   = $2" >  config.mk    #ARCH = (传入的第二个参数)  新建config.mk并写入
    echo "CPU    = $3" >> config.mk    #CPU = (传入的第二个参数)  写入到config.mk
    echo "BOARD  = $4" >> config.mk    #BOARD = (传入的第三个参数)  写入到config.mk
    ...
    ...
    
    

    果然涉及到了上面unconfig所删除的文件,确认了make smdk2410_config这句话最终会生成一些文件

    那我们执行一遍make smdk2410_config,验证猜测
    ./include/config.mk

    ARCH   = arm
    CPU    = arm920t
    BOARD  = smdk2410
    VENDOR = samsung
    SOC    = s3c24x0
    

    ./include/config.h

    /* Automatically generated - do not edit */
    #include <configs/smdk2410.h>
    #include <asm/config.h>
    

    结果和mkconfig中所做的一致。


    到这里,make smdk2410_config命令就结束了,解析出来做了两句话:unconfig
    mkconfig smdk2410 arm arm920t smdk2410 samsung s3c24x0
    unconfig会删除一些上次残留的文件,另一句则会根据传入参数自动生成 ./include/config.mk 和 ./include/config.h等文件
    其实就是做了配置工作,选中了下一步编译中用到的 CPU架构、种类、名字等等

    第一条命令分析完了,再来看第二条

    2. make

    根据makefile规则,直接执行make命令,就会在执行Makefile文件中第一个标签的内容
    在行终于找到第一个标签all:

    image.png

    待续...

    相关文章

      网友评论

          本文标题:小白视角看uboot makefile

          本文链接:https://www.haomeiwen.com/subject/zonkpqtx.html