zoukankan      html  css  js  c++  java
  • uboot的Makefile裁剪(针对飞思卡尔的mx6系列)


    VERSION = 2009
    PATCHLEVEL = 08
    SUBLEVEL =
    EXTRAVERSION =
    ifneq "$(SUBLEVEL)" ""
    U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
    else
    U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
    endif
    TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h
    VERSION_FILE = $(obj)include/version_autogenerated.h

    HOSTARCH := $(shell uname -m |
    sed -e s/i.86/i386/
    -e s/sun4u/sparc64/
    -e s/arm.*/arm/
    -e s/sa110/arm/
    -e s/powerpc/ppc/
    -e s/ppc64/ppc/
    -e s/macppc/ppc/)

    HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' |
    sed -e 's/(cygwin).*/cygwin/')

    # Set shell to bash if possible, otherwise fall back to sh
    SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH;
    else if [ -x /bin/bash ]; then echo /bin/bash;
    else echo sh; fi; fi)

    export HOSTARCH HOSTOS SHELL

    # Deal with colliding definitions from tcsh etc.
    VENDOR=

    #########################################################################
    # Allow for silent builds
    ifeq (,$(findstring s,$(MAKEFLAGS)))
    XECHO = echo
    else
    XECHO = :
    endif

    ifdef O
    ifeq ("$(origin O)", "command line")
    BUILD_DIR := $(O)
    endif
    endif

    ifneq ($(BUILD_DIR),)
    saved-output := $(BUILD_DIR)

    # Attempt to create a output directory.
    $(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})

    # Verify if it was successful.
    BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
    $(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
    endif # ifneq ($(BUILD_DIR),)

    OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)) //如果存在BUILD_DIR则OBJTREE=BUILD_DIR否则等于CURDIR
    SRCTREE := $(CURDIR)
    TOPDIR := $(SRCTREE)
    LNDIR := $(OBJTREE)
    export TOPDIR SRCTREE OBJTREE

    MKCONFIG := $(SRCTREE)/mkconfig //uboot根目录下有个mkconfig文件,里面觉得include/congfig.mk以及board的配置.h文件
    export MKCONFIG

    ifneq ($(OBJTREE),$(SRCTREE))
    REMOTE_BUILD := 1
    export REMOTE_BUILD
    endif

    # $(obj) and (src) are defined in config.mk but here in main Makefile
    # we also need them before config.mk is included which is the case for
    # some targets like unconfig, clean, clobber, distclean, etc.
    ifneq ($(OBJTREE),$(SRCTREE))
    obj := $(OBJTREE)/
    src := $(SRCTREE)/
    else
    obj :=
    src :=
    endif
    export obj src

    # Make sure CDPATH settings don't interfere
    unexport CDPATH

    #########################################################################

    # The "tools" are needed early, so put this first
    # Don't include stuff already done in $(LIBS)
    SUBDIRS = tools
    examples/standalone
    examples/api

    .PHONY : $(SUBDIRS)

    ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))


    all:
    sinclude $(obj)include/autoconf.mk.dep  //用sinclude的作用是用于兼容性
    sinclude $(obj)include/autoconf.mk //对于我来说最重要的地方

    在我的板子里面自己定义的地方

    67 CONFIG_EXTRA_ENV_SETTINGS="netdev=eth0ethprime=FEC0fastboot_dev=mmc3bo otcmd=run hw_${hw_name}; run hw_${hw_name}_${hw_version}; run set_bootargs; booti mmc3bootcmd_android_recovery=run hw_${hw_name}; run hw_${hw_name}_${ hw_version}; run set_bootargs; booti mmc3 recoverysplashimage=0x30000000 splashpos=m,mlvds_num=0screen0=setenv video video=mxcfb0:dev=ldb,LDB-XGA ,if=RGB24,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=m xcfb2:off fbmem=10M,28M vmalloc=512M ldb=dul1

    screen1=setenv video video=mx cfb0:dev=ldb,1024x600M@60,if=RGB666,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@ 60,if=RGB32,bpp=16 video=mxcfb2:off fbmem=10M,28M vmalloc=512M ldb=dul1

    screen2=setenv video video=mxcfb0:dev=ldb,640x768M@60,if=RGB666,bpp=32 video=mx cfb1:dev=hdmi,1920x1080M@60,if=RGB32,bpp=16 video=mxcfb2:off fbmem=14M,28M v malloc=512M ldb=dul1

    screen3=setenv video video=mxcfb0:dev=ldb,LDB-XGA,if=R GB24,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M vmalloc=400M ldb=sin 00

    screen4=setenv video video=mxcfb0:dev=ldb,1440x900M@60,if=RGB24,bpp=32 vi deo=mxcfb1:off video=mxcfb2:off fbmem=28M vmalloc=512M ldb=spl0

    screen5=set env video video=mxcfb0:dev=ldb,LDB-XGA,if=RGB24,bpp=32 video=mxcfb1:dev=hdmi ,1024x768M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M,28M vmalloc=512M ld b=dul1

    screen6=setenv video video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=10 M,28M vmalloc=512M ldb=dul1

    set_bootargs=setenv bootargs console=ttymxc0,115200 androidboot.console=ttymxc0 androidboot.hardware=freescale init=/init $ {video} enable_wait_mode=off calibration hw_name=${hw_name} hw_version=${hw_ version} fec_mac=${fec_mac}

    hw_general=setenv lvds_num; run screen0

    hw_P14 0=setenv lvds_num 0; run screen2

    hw_S10=setenv lvds_num 0; run screen1

    hw_ P10=run hw_S10

    hw_C6=set lvds_num; run screen5

    hw_name=generalhw_version =0"

    # load ARCH, BOARD, and CPU configuration
    include $(obj)include/config.mk  //在这里确定你在命令行输入make   ___config时候用的开发板式哪种
    export ARCH CPU BOARD   VENDOR   SOC

    ####   $2   $3    $4           $5          $6

    ####   $0 = mkconfig  $1=___config(去掉后面的config)

    # set default to nothing for native builds
    ifeq ($(HOSTARCH),$(ARCH))
    CROSS_COMPILE ?=
    endif

    # load other configuration
    include $(TOPDIR)/config.mk   //在这个地方添加顶层目录的config.mk

    #########################################################################
    # U-Boot objects....order is important (i.e. start must be first)

    OBJS = cpu/$(CPU)/start.o //最重要的是这个地方。一定要进去好好分析下

    OBJS := $(addprefix $(obj),$(OBJS))//这里的addprefix 相当于给某个目录添加前缀,例如addprefix /hao ,/include 接果是/hao/include

    LIBS = lib_generic/libgeneric.a
    LIBS += lib_generic/lzma/liblzma.a
    LIBS += lib_generic/lzo/liblzo.a
    LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo
    "board/$(VENDOR)/common/lib$(VENDOR).a"; fi)
    LIBS += cpu/$(CPU)/lib$(CPU).a
    ifdef SOC
    LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
    endif

    LIBS += lib_$(ARCH)/lib$(ARCH).a
    LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a
    fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a
    fs/ubifs/libubifs.a
    LIBS += net/libnet.a
    LIBS += disk/libdisk.a
    LIBS += drivers/bios_emulator/libatibiosemu.a
    LIBS += drivers/block/libblock.a
    LIBS += drivers/dma/libdma.a
    LIBS += drivers/fpga/libfpga.a
    LIBS += drivers/gpio/libgpio.a
    LIBS += drivers/hwmon/libhwmon.a
    LIBS += drivers/i2c/libi2c.a
    LIBS += drivers/input/libinput.a
    LIBS += drivers/misc/libmisc.a
    LIBS += drivers/mmc/libmmc.a
    LIBS += drivers/mtd/libmtd.a
    LIBS += drivers/mtd/nand/libnand.a
    LIBS += drivers/mtd/onenand/libonenand.a
    LIBS += drivers/mtd/ubi/libubi.a
    LIBS += drivers/mtd/spi/libspi_flash.a
    LIBS += drivers/net/libnet.a
    LIBS += drivers/net/phy/libphy.a
    LIBS += drivers/net/sk98lin/libsk98lin.a
    LIBS += drivers/pci/libpci.a
    LIBS += drivers/pcmcia/libpcmcia.a
    LIBS += drivers/power/libpower.a
    LIBS += drivers/spi/libspi.a
    LIBS += drivers/fastboot/libfastboot.a


    LIBS += drivers/rtc/librtc.a
    LIBS += drivers/serial/libserial.a
    LIBS += drivers/twserial/libtws.a
    LIBS += drivers/usb/gadget/libusb_gadget.a
    LIBS += drivers/usb/host/libusb_host.a
    LIBS += drivers/usb/musb/libusb_musb.a
    LIBS += drivers/video/libvideo.a
    LIBS += drivers/watchdog/libwatchdog.a
    LIBS += common/libcommon.a
    LIBS += libfdt/libfdt.a
    LIBS += api/libapi.a
    LIBS += post/libpost.a

    LIBS := $(addprefix $(obj),$(LIBS))
    .PHONY : $(LIBS) $(TIMESTAMP_FILE) $(VERSION_FILE)

    LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
    LIBBOARD := $(addprefix $(obj),$(LIBBOARD))

    # Add GCC lib
    ifdef USE_PRIVATE_LIBGCC
    ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
    PLATFORM_LIBGCC = -L $(OBJTREE)/lib_$(ARCH) -lgcc
    else
    PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
    endif
    else
    PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
    endif
    PLATFORM_LIBS += $(PLATFORM_LIBGCC)
    export PLATFORM_LIBS

    # Special flags for CPP when processing the linker script.
    # Pass the version down so we can handle backwards compatibility
    # on the fly.
    LDPPFLAGS +=
    -include $(TOPDIR)/include/u-boot/u-boot.lds.h
    $(shell $(LD) --version |
    sed -ne 's/GNU ld version ([0-9][0-9]*).([0-9][0-9]*).*/-DLD_MAJOR=1 -DLD_MINOR=2/p')

    ifeq ($(CONFIG_NAND_U_BOOT),y)     //确定充nand启动u_boot
    NAND_SPL = nand_spl
    U_BOOT_NAND = $(obj)u-boot-nand.bin
    endif

    ifeq ($(CONFIG_ONENAND_U_BOOT),y)
    ONENAND_IPL = onenand_ipl
    U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
    endif

    __OBJS := $(subst $(obj),,$(OBJS))
    __LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))

    #########################################################################
    #########################################################################

    # Always append ALL so that arch config.mk's can add custom ones
    ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)

    all: $(ALL)

    #######下面所有的相当于解释每个文件怎么生成的

    目标文件                 源文件

     命令

    $(obj)u-boot.hex: $(obj)u-boot  //目标文件                 源文件
    $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ // 命令

    $(obj)u-boot.srec: $(obj)u-boot
    $(OBJCOPY) -O srec $< $@

    $(obj)u-boot.bin: $(obj)u-boot
    $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@

    $(obj)u-boot.ldr: $(obj)u-boot
    $(obj)tools/envcrc --binary > $(obj)env-ldr.o
    $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)

    $(obj)u-boot.ldr.hex: $(obj)u-boot.ldr
    $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary

    $(obj)u-boot.ldr.srec: $(obj)u-boot.ldr
    $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary

    $(obj)u-boot.img: $(obj)u-boot.bin
    ./tools/mkimage -A $(ARCH) -T firmware -C none
    -a $(TEXT_BASE) -e 0
    -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) |
    sed -e 's/"[ ]*$$/ for $(BOARD) board"/')
    -d $< $@

    $(obj)u-boot.sha1: $(obj)u-boot.bin
    $(obj)tools/ubsha1 $(obj)u-boot.bin

    $(obj)u-boot.dis: $(obj)u-boot
    $(OBJDUMP) -d $< > $@

    GEN_UBOOT =
    UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) |
    sed -n -e 's/.*($(SYM_PREFIX)__u_boot_cmd_.*)/-u1/p'|sort|uniq`;
    cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS)
    --start-group $(__LIBS) --end-group $(PLATFORM_LIBS)
    -Map u-boot.map -o u-boot
    $(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
    $(GEN_UBOOT)
    ifeq ($(CONFIG_KALLSYMS),y)
    smap=`$(call SYSTEM_MAP,u-boot) |
    awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\000"}'` ;
    $(CC) $(CFLAGS) -DSYSTEM_MAP=""$${smap}""
    -c common/system_map.c -o $(obj)common/system_map.o
    $(GEN_UBOOT) $(obj)common/system_map.o
    endif

    $(OBJS): depend  //有了depend
    $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))

    $(LIBS): depend $(SUBDIRS)
    $(MAKE) -C $(dir $(subst $(obj),,$@))

    $(LIBBOARD): depend $(LIBS)
    $(MAKE) -C $(dir $(subst $(obj),,$@))

    $(SUBDIRS): depend
    $(MAKE) -C $@ all

    $(LDSCRIPT): depend
    $(MAKE) -C $(dir $@) $(notdir $@)

    $(obj)u-boot.lds: $(LDSCRIPT)
    $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@

    $(NAND_SPL): $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
    $(MAKE) -C nand_spl/board/$(BOARDDIR) all

    $(U_BOOT_NAND): $(NAND_SPL) $(obj)u-boot.bin
    cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin

    $(ONENAND_IPL): $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
    $(MAKE) -C onenand_ipl/board/$(BOARDDIR) all

    $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin
    cat $(obj)onenand_ipl/onenand-ipl-2k.bin $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
    cat $(obj)onenand_ipl/onenand-ipl-4k.bin $(obj)u-boot.bin > $(obj)u-boot-flexonenand.bin

    $(VERSION_FILE):
    @( printf '#define U_BOOT_VERSION "U-Boot %s%s" ' "$(U_BOOT_VERSION)"
    '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ) > $@.tmp
    @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@

    $(TIMESTAMP_FILE):
    @date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
    @date +'#define U_BOOT_TIME "%T"' >> $@

    gdbtools:
    $(MAKE) -C tools/gdb all || exit 1

    updater:
    $(MAKE) -C tools/updater all || exit 1

    env:
    $(MAKE) -C tools/env all MTD_VERSION=${MTD_VERSION} || exit 1

    depend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
    for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done

    TAG_SUBDIRS += include
    TAG_SUBDIRS += lib_generic board/$(BOARDDIR)
    TAG_SUBDIRS += cpu/$(CPU)
    TAG_SUBDIRS += lib_$(ARCH)
    TAG_SUBDIRS += fs/cramfs
    TAG_SUBDIRS += fs/fat
    TAG_SUBDIRS += fs/fdos
    TAG_SUBDIRS += fs/jffs2
    TAG_SUBDIRS += fs/yaffs2
    TAG_SUBDIRS += net
    TAG_SUBDIRS += disk
    TAG_SUBDIRS += common
    TAG_SUBDIRS += drivers/bios_emulator
    TAG_SUBDIRS += drivers/block
    TAG_SUBDIRS += drivers/gpio
    TAG_SUBDIRS += drivers/hwmon
    TAG_SUBDIRS += drivers/i2c
    TAG_SUBDIRS += drivers/input
    TAG_SUBDIRS += drivers/misc
    TAG_SUBDIRS += drivers/mmc
    TAG_SUBDIRS += drivers/mtd
    TAG_SUBDIRS += drivers/mtd/nand
    TAG_SUBDIRS += drivers/mtd/onenand
    TAG_SUBDIRS += drivers/mtd/spi
    TAG_SUBDIRS += drivers/net
    TAG_SUBDIRS += drivers/net/sk98lin
    TAG_SUBDIRS += drivers/pci
    TAG_SUBDIRS += drivers/pcmcia
    TAG_SUBDIRS += drivers/qe
    TAG_SUBDIRS += drivers/rtc
    TAG_SUBDIRS += drivers/serial
    TAG_SUBDIRS += drivers/spi
    TAG_SUBDIRS += drivers/usb
    TAG_SUBDIRS += drivers/video

    tags ctags:
    ctags -w -o $(obj)ctags `find $(SUBDIRS) $(TAG_SUBDIRS)
    -name '*.[ch]' -print`

    etags:
    etags -a -o $(obj)etags `find $(SUBDIRS) $(TAG_SUBDIRS)
    -name '*.[ch]' -print`
    cscope:
    find $(SUBDIRS) $(TAG_SUBDIRS) -name '*.[ch]' -print
    > cscope.files
    cscope -b -q -k

    SYSTEM_MAP =
    $(NM) $1 |
    grep -v '(compiled)|(.o$$)|( [aUw] )|(..ng$$)|(LASH[RL]DI)' |
    LC_ALL=C sort
    $(obj)System.map: $(obj)u-boot
    @$(call SYSTEM_MAP,$<) > $(obj)System.map

    #
    # Auto-generate the autoconf.mk file (which is included by all makefiles)
    #
    # This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
    # the dep file is only include in this top level makefile to determine when
    # to regenerate the autoconf.mk file.
    $(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h   //这个地方指定了autoconfig.mk的由来
    @$(XECHO) Generating $@ ;
    set -e ;
    : Generate the dependancies ;
    $(CC) -x c -DDO_DEPS_ONLY -M $(HOSTCFLAGS) $(CPPFLAGS)
    -MQ $(obj)include/autoconf.mk include/common.h > $@

    $(obj)include/autoconf.mk: $(obj)include/config.h  //主要由config.h中的头文件包含而来 
    @$(XECHO) Generating $@ ;
    set -e ;
    : Extract the config macros ;
    $(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h |
    sed -n -f tools/scripts/define2mk.sed > $@.tmp &&
    mv $@.tmp $@

    在我的/include/config.h文件的内容是:

    1 /* Automatically generated - do not edit */
    2 #include <configs/mx6q_sabresd_android_2G.h>
    3 #include <asm/config.h>

    顺藤摸瓜,进入mx6q_sabresd_android_1G.h文件,内容如下

    22 #ifndef MX6Q_SABRESD_ANDROID_H
    23 #define MX6Q_SABRESD_ANDROID_H
    24
    25 #define CONFIG_FASTBOOT_PRODUCT_NAME_STR "Cynoware i.mx6dq Device"
    26 #include "mx6q_sabresd.h"  //最重要的文件
    27 #include "mx6_sabresd_android.h"
    28
    29 #endif

    再进入mx6q_sabresd.h文件如下为选取的部分CONFIG_定义

    #define CONFIG_CMD_PING
    #define CONFIG_CMD_DHCP
    #define CONFIG_CMD_MII
    #define CONFIG_CMD_NET
    #define CONFIG_NET_RETRY_COUNT 100
    #define CONFIG_NET_MULTI 1
    #define CONFIG_BOOTP_SUBNETMASK
    #define CONFIG_BOOTP_GATEWAY
    #define CONFIG_BOOTP_DNS

    #define CONFIG_CMD_SPI
    #define CONFIG_CMD_I2C
    #define CONFIG_CMD_IMXOTP

    /* Enable below configure when supporting nand */
    #define CONFIG_CMD_SF
    #define CONFIG_CMD_MMC
    #define CONFIG_CMD_ENV
    #define CONFIG_CMD_REGUL

    #define CONFIG_CMD_CLOCK
    #define CONFIG_REF_CLK_FREQ CONFIG_MX6_HCLK_FREQ

    /* #define CONFIG_CMD_SATA */
    #undef CONFIG_CMD_IMLS

    #define CONFIG_CMD_IMX_DOWNLOAD_MODE

    #define CONFIG_BOOTDELAY 3

    #define CONFIG_PRIME "FEC0"

    #define CONFIG_LOADADDR 0x10800000 /* loadaddr env var */
    #define CONFIG_RD_LOADADDR (0x1300000)

    #define CONFIG_EXTRA_ENV_SETTINGS
    "netdev=eth0"
    "ethprime=FEC0"
    "uboot=u-boot.bin"
    "kernel=uImage"
    "nfsroot=/opt/eldk/arm"
    "bootargs_base=setenv bootargs console=ttymxc0,115200"
    "bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs "
    "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp"
    "bootcmd_net=run bootargs_base bootargs_nfs; "
    "tftpboot ${loadaddr} ${kernel}; bootm"
    "bootargs_mmc=setenv bootargs ${bootargs} ip=dhcp "
    "root=/dev/mmcblk0p1 rootwait"
    "bootcmd_mmc=run bootargs_base bootargs_mmc; "
    "mmc dev 3; "
    "mmc read ${loadaddr} 0x800 0x2000; bootm"
    "bootcmd=run bootcmd_net"

    再进入mx6_sabresd_android.h文件分析

    #ifndef MX6Q_SABRESD_ANDROID_INC_H
    #define MX6Q_SABRESD_ANDROID_INC_H

    #define CONFIG_USB_DEVICE
    #define CONFIG_IMX_UDC 1
    #define CONFIG_FASTBOOT 1
    #define CONFIG_FASTBOOT_STORAGE_EMMC_SATA
    #define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
    #define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
    #define CONFIG_FASTBOOT_BCD_DEVICE 0x311
    #define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
    #define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
    #define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
    #define CONFIG_FASTBOOT_SERIAL_NUM "12345"
    #define CONFIG_FASTBOOT_SATA_NO 0

    /* For system.img growing up more than 256MB, more buffer needs
    * to receive the system.img*/
    #define CONFIG_FASTBOOT_TRANSFER_BUF 0x2c000000
    #define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x14000000 /* 320M byte */

    #define CONFIG_CMD_BOOTI
    #define CONFIG_ANDROID_RECOVERY
    /* which mmc bus is your main storage ? */
    #define CONFIG_ANDROID_MAIN_MMC_BUS 3
    #define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
    #define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
    #define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
    #define CONFIG_ANDROID_CACHE_PARTITION_MMC 6


    #define CONFIG_ANDROID_RECOVERY_BOOTARGS_MMC NULL
    #define CONFIG_ANDROID_RECOVERY_BOOTCMD_MMC
    "booti mmc3 recovery"
    #define CONFIG_ANDROID_RECOVERY_BOOTCMD_SD
    "booti mmc2 recovery"
    #define CONFIG_ANDROID_RECOVERY_CMD_FILE "/recovery/command"
    #define CONFIG_INITRD_TAG

    #undef CONFIG_LOADADDR
    #undef CONFIG_RD_LOADADDR
    #undef CONFIG_EXTRA_ENV_SETTINGS

    #define CONFIG_LOADADDR 0x10800000 /* loadaddr env var */
    #define CONFIG_RD_LOADADDR 0x11000000

    #define CONFIG_INITRD_TAG
    #define CONFIG_EXTRA_ENV_SETTINGS
    "netdev=eth0"
    "ethprime=FEC0"
    "fastboot_dev=mmc3"
    "bootcmd=run hw_${hw_name}; run hw_${hw_name}_${hw_version}; run set_bootargs; booti mmc3"
    "bootcmd_android_recovery=run hw_${hw_name}; run hw_${hw_name}_${hw_version}; run set_bootargs; booti mmc3 recovery"
    "splashimage=0x30000000"
    "splashpos=m,m"
    "lvds_num=0"
    "screen0=setenv video video=mxcfb0:dev=ldb,LDB-XGA,if=RGB24,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M,28M vmalloc=512M ldb=dul1"
    "screen1=setenv video video=mxcfb0:dev=ldb,1024x600M@60,if=RGB666,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M,28M vmalloc=512M ldb=dul1"
    "screen2=setenv video video=mxcfb0:dev=ldb,1366x768M@60,if=RGB666,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=14M,28M vmalloc=512M ldb=dul1"
    "screen3=setenv video video=mxcfb0:dev=ldb,LDB-XGA,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M vmalloc=400M ldb=sin0"
    "screen4=setenv video video=mxcfb0:dev=ldb,1440x900M@60,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=28M vmalloc=512M ldb=spl0"
    "screen5=setenv video video=mxcfb0:dev=ldb,LDB-XGA,if=RGB24,bpp=32 video=mxcfb1:dev=hdmi,1024x768M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M,28M vmalloc=512M ldb=dul1"
    "screen6=setenv video video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M,28M vmalloc=512M ldb=dul1"
    "set_bootargs=setenv bootargs console=ttymxc0,115200 androidboot.console=ttymxc0 androidboot.hardware=freescale init=/init ${video} enable_wait_mode=off calibration hw_name=${hw_name} hw_version=${hw_version} fec_mac=${fec_mac}"
    "hw_general=setenv lvds_num; run screen0"
    "hw_P140=setenv lvds_num 0; run screen2"
    "hw_S10=setenv lvds_num 0; run screen1"
    "hw_P10=run hw_S10"
    "hw_C6=set lvds_num; run screen5"
    "hw_name=general"
    "hw_version=0"
    #endif

    //xh: remove fb0base=... according to https://freescale.hosted.jivesoftware.com/thread/325541

    #########################################################################
    else # !config.mk
    all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin
    $(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot
    $(SUBDIRS) $(TIMESTAMP_FILE) $(VERSION_FILE) gdbtools updater env depend
    dep tags ctags etags cscope $(obj)System.map:
    @echo "System not configured - see README" >&2
    @ exit 1
    endif # config.mk

    .PHONY : CHANGELOG
    CHANGELOG:
    git log --no-merges U-Boot-1_1_5.. |
    unexpand -a | sed -e 's/ss*$$//' > $@

    include/license.h: tools/bin2header COPYING
    cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
    #########################################################################

    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


    mx6dl_arm2_config
    mx6dl_arm2_iram_config
    mx6dl_arm2_mfg_config
    mx6dl_arm2_lpddr2_config
    mx6q_arm2_config
    mx6q_arm2_nand_config
    mx6q_arm2_android_config
    mx6q_arm2_mfg_config
    mx6q_arm2_lpddr2_config
    mx6q_arm2_lpddr2pop_config
    mx6q_arm2_iram_config : unconfig
    @[ -z "$(findstring iram_,$@)" ] ||
    { echo "TEXT_BASE = 0x00907000" >$(obj)board/freescale/mx6q_arm2/config.tmp ;
    echo "... with iram configuration" ;
    }
    @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 mx6q_arm2 freescale mx6


    #########################################################################
    #########################################################################
    #########################################################################

    clean:
    @rm -f $(obj)examples/standalone/82559_eeprom
    $(obj)examples/standalone/eepro100_eeprom
    $(obj)examples/standalone/hello_world
    $(obj)examples/standalone/interrupt
    $(obj)examples/standalone/mem_to_mem_idma2intr
    $(obj)examples/standalone/sched
    $(obj)examples/standalone/smc91111_eeprom
    $(obj)examples/standalone/test_burst
    $(obj)examples/standalone/timer
    @rm -f $(obj)examples/api/demo{,.bin}
    @rm -f $(obj)tools/bmp_logo $(obj)tools/easylogo/easylogo
    $(obj)tools/env/{fw_printenv,fw_setenv}
    $(obj)tools/envcrc
    $(obj)tools/gdb/{astest,gdbcont,gdbsend}
    $(obj)tools/gen_eth_addr $(obj)tools/img2srec
    $(obj)tools/mkimage $(obj)tools/mpc86x_clk
    $(obj)tools/ncb $(obj)tools/ubsha1
    @rm -f $(obj)board/cray/L1/{bootscript.c,bootscript.image}
    $(obj)board/netstar/{eeprom,crcek,crcit,*.srec,*.bin}
    $(obj)board/trab/trab_fkt $(obj)board/voiceblue/eeprom
    $(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds
    $(obj)lib_blackfin/u-boot.lds
    $(obj)u-boot.lds
    $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
    @rm -f $(obj)include/bmp_logo.h
    @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}
    @rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl-2k.bin,ipl-4k.bin,ipl.map}
    @rm -f $(obj)onenand_ipl/u-boot.lds
    @rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
    @find $(OBJTREE) -type f
    ( -name 'core' -o -name '*.bak' -o -name '*~'
    -o -name '*.o' -o -name '*.a' -o -name '*.exe' ) -print
    | xargs rm -f

    clobber: clean
    @find $(OBJTREE) -type f ( -name .depend
    -o -name '*.srec' -o -name '*.bin' -o -name u-boot.img )
    -print0
    | xargs -0 rm -f
    @rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS
    $(obj)cscope.* $(obj)*.*~
    @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL)
    @rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
    @rm -f $(obj)cpu/mpc824x/bedbug_603e.c
    @rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
    @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
    @[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l -print | xargs rm -f

    ifeq ($(OBJTREE),$(SRCTREE))
    mrproper
    distclean: clobber unconfig
    else
    mrproper
    distclean: clobber unconfig
    rm -rf $(obj)*
    endif

    backup:
    F=`basename $(TOPDIR)` ; cd .. ;
    gtar --force-local -zcvf `date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F

    #########################################################################

  • 相关阅读:
    HDOJ1251解题报告【字典树】
    HDOJ1305解题报告【字典树】
    HDOJ1087解题报告【动态规划】
    HDOJ1075解题报告【STL】
    HDOJ1172解题报告【暴力】
    ibatis 中调用存储过程
    后端开挂:3行代码写出8个接口!
    Go模拟浏览器登录操作代码
    Java架构师必须知道的 6 大设计原则
    easyUI时间戳转换(3种解决方法)
  • 原文地址:https://www.cnblogs.com/haoxing990/p/4630264.html
Copyright © 2011-2022 走看看