zoukankan      html  css  js  c++  java
  • 阅读uboot

    下面是一个执行make XXX_config后的打印信息:

    pengdl@debian:~/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06$ make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- hi3520d_config
    Generating include/autoconf.mk
    Generating include/autoconf.mk.dep
    # Target  Architecture  CPU  Board [VENDOR] [SOC]
    '$#' = 6
    '$0' = /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06/mkconfig
    '$1' = hi3520d (Target)
    '$2' = arm (Architecture)
    '$3' = hi3520d (CPU)
    '$4' = hi3520d (Board)
    '$5' = NULL (VENDOR)
    '$6' = hi3520d (SOC)
    BOARD_NAME = hi3520d
    /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06
    Configuring for hi3520d board...
    SRCTREE = /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06
    OBJTREE = /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06
    ln -s ../arch/arm/include/asm asm
    /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06/include
    ln -s arch-hi3520d asm/arch
    ln -s proc-armv asm/proc
    ARCH   = arm >  config.mk
    CPU    = hi3520d >>  config.mk
    BOARD  = hi3520d >>  config.mk
    SOC    = hi3520d >> config.mk
    BOARDDIR = hi3520d
    /home/pengdl/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06/include

    下面是mkconfig的代码:

    #!/bin/sh -e
    
    # Script to create header files and links to configure
    # U-Boot for a specific board.
    #
    # Parameters:  Target  Architecture  CPU  Board [VENDOR] [SOC]
    #
    # (C) 2002-2006 DENX Software Engineering, Wolfgang Denk <wd@denx.de>
    #
    
    APPEND=no    # Default: Create new config file
    BOARD_NAME=""    # Name to print in make output
    TARGETS=""
    
    while [ $# -gt 0 ] ; do
        case "$1" in
        --) shift ; break ;;
        -a) shift ; APPEND=yes ;;
        -n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
        -t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
        *)  break ;;
        esac
    done
    
    echo "# Target  Architecture  CPU  Board [VENDOR] [SOC]"
    echo "'$#' = $#"
    echo "'$0' = $0" 
    echo "'$1' = $1 (Target)" 
    echo "'$2' = $2 (Architecture)"
    echo "'$3' = $3 (CPU)"
    echo "'$4' = $4 (Board)"
    echo "'$5' = $5 (VENDOR)"
    echo "'$6' = $6 (SOC)"
    
    [ "${BOARD_NAME}" ] || BOARD_NAME="$1"
    
    [ $# -lt 4 ] && exit 1
    [ $# -gt 6 ] && exit 1
    
    if [ "${ARCH}" -a "${ARCH}" != "$2" ]; then
        echo "Failed: $ARCH=${ARCH}, should be '$2' for ${BOARD_NAME}" 1>&2
        exit 1
    fi
    echo "BOARD_NAME = $BOARD_NAME"
    echo "`pwd`"
    echo "Configuring for ${BOARD_NAME} board..."
    
    #
    # Create link to architecture specific headers
    #
    echo "SRCTREE = $SRCTREE"
    echo "OBJTREE = $OBJTREE"
    if [ "$SRCTREE" != "$OBJTREE" ] ; then
        mkdir -p ${OBJTREE}/include
        mkdir -p ${OBJTREE}/include2
        cd ${OBJTREE}/include2
        rm -f asm
        ln -s ${SRCTREE}/arch/$2/include/asm asm
        LNPREFIX=${SRCTREE}/arch/$2/include/asm/
        cd ../include
        rm -f asm
        ln -s ${SRCTREE}/arch/$2/include/asm asm
    else
        cd ./include
        rm -f asm
        echo  "ln -s ../arch/$2/include/asm asm"
        ln -s ../arch/$2/include/asm asm
    fi
    
    echo "`pwd`"
    rm -f asm/arch
    
    if [ -z "$6" -o "$6" = "NULL" ] ; then
        echo "ln -s ${LNPREFIX}arch-$3 asm/arch"
        ln -s ${LNPREFIX}arch-$3 asm/arch
    else
        echo "ln -s ${LNPREFIX}arch-$6 asm/arch"
        ln -s ${LNPREFIX}arch-$6 asm/arch
    fi
    
    if [ "$2" = "arm" ] ; then
        rm -f asm/proc
        echo "ln -s ${LNPREFIX}proc-armv asm/proc"
        ln -s ${LNPREFIX}proc-armv asm/proc
    fi
    
    #
    # Create include file for Make
    #
    echo "ARCH   = $2 >  config.mk"
    echo "ARCH   = $2" >  config.mk
    
    echo "CPU    = $3 >>  config.mk"
    echo "CPU    = $3" >> config.mk
    
    echo "BOARD  = $4 >>  config.mk"
    echo "BOARD  = $4" >> config.mk
    
    [ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk  && echo "VENDOR = $5 >> config.mk"
    
    [ "$6" ] && [ "$6" != "NULL" ] && echo "SOC    = $6" >> config.mk  && echo "SOC    = $6 >> config.mk"
    
    # Assign board directory to BOARDIR variable
    if [ -z "$5" -o "$5" = "NULL" ] ; then
        BOARDDIR=$4
    else
        BOARDDIR=$5/$4
    fi
    
    echo "BOARDDIR = $BOARDDIR"
    
    #
    # Create board specific header file
    #
    echo "`pwd`"
    if [ "$APPEND" = "yes" ]    # Append to existing config file
    then
        echo >> config.h
    else
        > config.h        # Create new config file
    fi
    echo "/* Automatically generated - do not edit */" >>config.h
    
    for i in ${TARGETS} ; do
        echo "#define CONFIG_MK_${i} 1" >>config.h ;
    done
    
    cat << EOF >> config.h
    #define CONFIG_BOARDDIR board/$BOARDDIR
    #include <config_defaults.h>
    #include <configs/$1.h>
    #include <asm/config.h>
    EOF
    
    exit 0

    • 如何知道自己的板子用的是哪个串口驱动?

    include/configs/Target.h(Target 是传给mkconfig的第一个参数,即$1)中定义了大量的宏,在其中搜索serial,可以找到相关的宏,然后到driver/serial/Makefile中看调用的是哪个C文件,或者直接看driver/serial/下有哪个C文件参见了编译即可。

  • 相关阅读:
    iOS 微信分享提示 未验证应用
    iOS 升级xcode12后原项目模拟器运行报错
    ZK进程监控
    kakafka
    mysql 通过使用联全索引优化Group by查询
    4. php反序列化从入门到放弃(放弃篇)
    微慕小程序专业版V3.5发布-小商店
    C++ Singleton模式
    C语言的clone与mmap调用
    InnoDB MVCC机制
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3554682.html
Copyright © 2011-2022 走看看