20160711_jeffrey - silenceuncrio/diary GitHub Wiki

Index

  • 0950 - mail proposal ariel
  • 1030 - M300 meeting 延到明天十點
  • 1035 - trace bitbake u-boot-imx -c compile -vf 流程
  • 1115 - do_compile ()
  • 1305 - do_compile ()...
  • 1340 - do_compile () - 修改 來 trace UBOOT_CONFIGlocal.conf 有無 定義 nand 的 影響
  • 1350 - do_compile () - 修改
  • 1425 - oe_runmake oe_runmake_call
  • 1505 - imx6ulevk.conf - 修改
  • 1555 - do_compile () - 修改
  • 1700 - mx6ul_14x14_evk_defconfig
  • 1805 - Freescale Yocto Project User's Guide - 5.5 U-Boot configuration - U-Boot type = NAND

0950

待會 1030 M300 要 meeting, 先 mail 上禮拜完成的 proposal mail 給 ariel

不過感覺 How-To use NAND boot on i.MX6UL EVK board 少了 rootfs 的部分

1030

禮拜一的會議室幾乎都沒空
M300 meeting 延到明天十點

1035

繼續上禮拜四的 trace

上禮拜四已經確認 bitbake u-boot-imx -c compile -vf 的流程

會到達 /fsl-release-bsp/sources/poky/meta/recipes-bsp/u-boot/u-boot.inc

do_compile () {
    echo "Hello World"
}

繼續研究原本的 do_compile ()

1115

原始的 do_compile ()

do_compile () {
	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}" = "ld-is-gold" ] ; then
		sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' config.mk
	fi

	unset LDFLAGS
	unset CFLAGS
	unset CPPFLAGS

	if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
	then
		echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
		echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
	fi
    
    if [ "x${UBOOT_CONFIG}" != "x" ]
    then
        for config in ${UBOOT_MACHINE}; do
            i=`expr $i + 1`;
            for type  in ${UBOOT_CONFIG}; do
                j=`expr $j + 1`;
                if [ $j -eq $i ]
                then
                    oe_runmake O=${config} ${config}
                    oe_runmake O=${config} ${UBOOT_MAKE_TARGET}
                    cp  ${S}/${config}/${UBOOT_BINARY}  ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
                fi
            done
            unset  j
        done
        unset  i
    else
        oe_runmake ${UBOOT_MACHINE}
        oe_runmake ${UBOOT_MAKE_TARGET}
    fi

}

先看

    if [ "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}" = "ld-is-gold" ] ; then
        sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' config.mk
    fi

參考 3.4.1. Shell Functions

do_compile () 應該是個 shell functions, 所以用 shell script 來寫

可以參考 If / Else Statements (Shell Scripting)

來看 "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}"

參考 3.1.11. Inline Python Variable Expansion

"${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}" 是個 Inline Python Variable Expansion

參考 3.4.2. BitBake Style Python Functions

bb.utils.contains() 是個 Python Function, 定義在 M300\fsl-release-bsp\sources\poky\bitbake\lib\bb\utils.py

參考 28.2. Distro Features

bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d) 應該就是去看 DISTRO_FEATURES 這個 YOCTCO variable 有沒有 contain ld-is-gold, 有就回傳 ld-is-gold

如果 DISTRO_FEATURES 這個 YOCTCO variable 有 contain ld-is-gold 就去做

sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' config.mk

/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/ 是個 regular expression

    unset LDFLAGS
    unset CFLAGS
    unset CPPFLAGS

unset 是 bash built-in commands

    if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]
    then
        echo ${UBOOT_LOCALVERSION} > ${B}/.scmversion
        echo ${UBOOT_LOCALVERSION} > ${S}/.scmversion
    fi

先跳過

1305

    if [ "x${UBOOT_CONFIG}" != "x" ]
    then
        for config in ${UBOOT_MACHINE}; do
            i=`expr $i + 1`;
            for type  in ${UBOOT_CONFIG}; do
                j=`expr $j + 1`;
                if [ $j -eq $i ]
                then
                    oe_runmake O=${config} ${config}
                    oe_runmake O=${config} ${UBOOT_MAKE_TARGET}
                    cp  ${S}/${config}/${UBOOT_BINARY}  ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
                fi
            done
            unset  j
        done
        unset  i
    else
        oe_runmake ${UBOOT_MACHINE}
        oe_runmake ${UBOOT_MAKE_TARGET}
    fi

從外層邏輯看起

    if [ "x${UBOOT_CONFIG}" != "x" ]
    then
        # ...
    else
        # ...
    fi

UBOOT_CONFIG 的定義來自於

M300\fsl-release-bsp\sources\meta-fsl-arm\conf\machine\imx6ulevk.conf

...
UBOOT_CONFIG ??= "sd"
UBOOT_CONFIG[sd] = "mx6ul_14x14_evk_config,sdcard"
UBOOT_CONFIG[qspi1] = "mx6ul_14x14_evk_qspi1_config"
UBOOT_CONFIG[mfgtool] = "mx6ul_14x14_evk_config"

參考 3.1.4. Setting a weak default value

UBOOT_CONFIG ??= "sd" 作下面解釋

If UBOOT_CONFIG is set before the above statements are parsed, UBOOT_CONFIG retains its value.
If UBOOT_CONFIG is not set, the variable is set to "sd".

依照 Freescale Yocto Project User's Guide - 5.5 U-Boot configuration 的說明

我們可以將 UBOOT_CONFIG 定義在 M300\fsl-release-bsp\build_small\conf\local.conf 裡面

目前因為 UBOOT_CONFIG 沒有被定義
所以採用 M300\fsl-release-bsp\sources\meta-fsl-arm\conf\machine\imx6ulevk.conf 的定義
UBOOT_CONFIG ??= "sd"

那這句我就不了解了 [ "x${UBOOT_CONFIG}" != "x" ]
${UBOOT_CONFIG} 指的是 UBOOT_CONFIG 的值
那就是 "sd"

所以 "x${UBOOT_CONFIG}" = "xsd"

那麼不管我們是否將 UBOOT_CONFIG 定義在 M300\fsl-release-bsp\build_small\conf\local.conf 裡面

    if [ "x${UBOOT_CONFIG}" != "x" ]
    then
        # ...
    else
        # ...
    fi

都不會執行到 else ... fi 的部分

那就直接看 then ... else 的部分

        for config in ${UBOOT_MACHINE}; do
            i=`expr $i + 1`;
            for type  in ${UBOOT_CONFIG}; do
                j=`expr $j + 1`;
                if [ $j -eq $i ].
                then
                    oe_runmake O=${config} ${config}
                    oe_runmake O=${config} ${UBOOT_MAKE_TARGET}
                    cp  ${S}/${config}/${UBOOT_BINARY}  ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
                fi
            done
            unset  j
        done
        unset  i

直接修改以方便 trace

do_compile () {
    echo "Hello World"

    for config in ${UBOOT_MACHINE}; do
        echo ${config}
    done

    echo "Hello World return..."
}
jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/build_small$ bitbake u-boot-imx -c compile -vf
...
+ echo Hello World
Hello World
+ echo mx6ul_14x14_evk_config
mx6ul_14x14_evk_config
+ echo Hello World return...
Hello World return...
...

可以肯定 ${UBOOT_MACHINE} 的值為 mx6ul_14x14_evk_config

1340

修改 do_compile () 來 trace UBOOT_CONFIGM300\fsl-release-bsp\build_small\conf\local.conf 裡有無被定義成 nand 的影響

do_compile () {
    echo "Hello World"

    if [ "x${UBOOT_CONFIG}" != "x" ]
    then

    	echo "UBOOT_CONFIG - ${UBOOT_CONFIG}"
    	echo "UBOOT_MACHINE - ${UBOOT_MACHINE}"

        for config in ${UBOOT_MACHINE}; do
            i=`expr $i + 1`;

            echo "i - ${i}"

            echo "UBOOT_CONFIG - ${UBOOT_CONFIG}"
            
            for type  in ${UBOOT_CONFIG}; do
                j=`expr $j + 1`;

                echo "j - ${j}"

                if [ $j -eq $i ]
                then
                    echo "do something about oe_runmake..."
                fi
            done
            unset  j
        done
        unset  i
    else
        echo "else part..."
    fi

    echo "Hello World return..."
}

UBOOT_CONFIG 沒有被定義

jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/build_small$ bitbake u-boot-imx -c compile -vf
...
+ echo Hello World
Hello World
+ [ xsd != x ]
+ echo UBOOT_CONFIG - sd
UBOOT_CONFIG - sd
+ echo UBOOT_MACHINE -  mx6ul_14x14_evk_config
UBOOT_MACHINE -  mx6ul_14x14_evk_config

+ 
expr
 +
 1


+ i=1
+ echo i - 1
i - 1
+ echo UBOOT_CONFIG - sd
UBOOT_CONFIG - sd

+ 
expr
 +
 1


+ j=1
+ echo j - 1
j - 1
+ [ 1 -eq 1 ]
+ echo do something about oe_runmake...
do something about oe_runmake...
+ unset j
+ unset i
+ echo Hello World return...
Hello World return...
+ ret=0
+ trap  0
+ exit 0
...

定義成 nand

jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/build_small$ bitbake u-boot-imx -c compile -vf
...
+ echo Hello World
Hello World
+ [ xnand != x ]
+ echo UBOOT_CONFIG - nand
UBOOT_CONFIG - nand
+ echo UBOOT_MACHINE - 
UBOOT_MACHINE - 
+ unset i
+ echo Hello World return...
Hello World return...
+ ret=0
+ trap  0
+ exit 0
...

是因為 UBOOT_MACHINE 沒有被定義所以才沒有後續的動作

1350

修改 do_compile ()

do_compile () {
    echo "Hello World"

    if [ "x${UBOOT_CONFIG}" != "x" ]
    then
        for config in ${UBOOT_MACHINE}; do
            i=`expr $i + 1`;
            for type  in ${UBOOT_CONFIG}; do
                j=`expr $j + 1`;
                if [ $j -eq $i ]
                then
                    echo "oe_runmake O=${config} ${config}"
                    echo "oe_runmake O=${config} ${UBOOT_MAKE_TARGET}"
                    echo "cp  ${S}/${config}/${UBOOT_BINARY}  ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}"
                fi
            done
            unset  j
        done
        unset  i
    else
        oe_runmake ${UBOOT_MACHINE}
        oe_runmake ${UBOOT_MAKE_TARGET}
    fi

    echo "Hello World return..."
}

沒有被定義成 nand 的時候

jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/build_small$ bitbake u-boot-imx -c compile -vf
...
+ echo Hello World
Hello World
+ [ xsd != x ]

+ 
expr
 +
 1


+ i=1

+ 
expr
 +
 1


+ j=1
+ [ 1 -eq 1 ]
+ echo oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ echo oe_runmake O=mx6ul_14x14_evk_config u-boot.imx
oe_runmake O=mx6ul_14x14_evk_config u-boot.imx
+ echo cp  /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config/u-boot.imx  /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config/u-boot-sd.imx
cp  /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config/u-boot.imx  /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config/u-boot-sd.imx
+ unset j
+ unset i
+ echo Hello World return...
Hello World return...
+ ret=0
+ trap  0
+ exit 0
...

看一下

  • echo "oe_runmake O=${config} ${config}"
  • echo "oe_runmake O=${config} ${UBOOT_MAKE_TARGET}"
  • echo "cp ${S}/${config}/${UBOOT_BINARY} ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}"

分別是

  • oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
  • oe_runmake O=mx6ul_14x14_evk_config u-boot.imx
  • cp /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config/u-boot.imx /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config/u-boot-sd.imx

直接看 oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config 在幹嘛

do_compile () {
    echo "Hello World"
    oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
}
jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/build_small$ bitbake u-boot-imx -c compile -vf
...
+ echo Hello World
Hello World
+ oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ oe_runmake_call O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ bbnote make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ echo NOTE: make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
NOTE: make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config

make -C /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config KBUILD_SRC=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git \
-f /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/Makefile mx6ul_14x14_evk_config

make[1]: Entering directory '/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config'

make -f ../scripts/Makefile.build obj=scripts/basic

ln -fsn .. source

rm -f .tmp_quiet_recordmcount

/bin/bash ../scripts/mkmakefile \
    .. . 2015 04

  GEN     ./Makefile

make -f ../scripts/Makefile.build obj=scripts/kconfig mx6ul_14x14_evk_config

make[2]: '../mx6ul_14x14_evk_config' is up to date.

make[1]: Leaving directory '/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config'
+ ret=0
+ trap  0
+ exit 0
...

oe_runmake O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config 這件事會引發
oe_runmake_call O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config ???

感覺這邊撐過去就可以有另一番天地了

1425

Methods: Inbuilt methods to make your life easier 裡提到

oe_runmake
This function is used to run make.
However unlike calling make yourself this will pass the EXTRA_OEMAKE settings to make, will display a note about the make command and will check for any errors generated via the call to make.
You should never have any reason to call make directly and should also use oe_runmake when you need to run make.

不過 oe_runmake_call 就不好找線索了

參考 22.8.5. Shell Message Function Changes

bbnote - The shell versions of the BitBake message functions

+ bbnote make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ echo NOTE: make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
NOTE: make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config
+ make -j 4 CROSS_COMPILE=arm-poky-linux-gnueabi- CC=arm-poky-linux-gnueabi-gcc  --sysroot=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/sysroots/imx6ulevk V=1 O=mx6ul_14x14_evk_config mx6ul_14x14_evk_config

重點應該是

make -C /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config KBUILD_SRC=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git \
-f /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/Makefile mx6ul_14x14_evk_config

參考 make(1) - Linux man page 試著說故事

  • Name
    • make - GNU make utility to maintain groups of programs
  • Synopsis
    • make [ -f makefile ] [ options ] ... [ targets ] ...
  • Options
    • -C dir, --directory=dir
      Change to directory dir before reading the makefiles or doing anything else.
      If multiple -C options are specified, each is interpreted relative to the previous one: -C / -C etc is equivalent to -C /etc.
      This is typically used with recursive invocations of make.
    • +-f file, --file=file, --makefile=FILE
      Use file as a makefile.

故事是說我們會先切換到 dir 去, 在讀取 makefile 之前, make 的 targemx6ul_14x14_evk_config

  • dir - Change to directory dir before reading the makefiles or doing anything else.
    • /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/mx6ul_14x14_evk_config
  • makefile - Use file as a makefile.
    • /home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/Makefile
  • KBUILD_SRC - 還不知道要幹麻
    • KBUILD_SRC=/home/jeffrey/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git

1505

為了更完整的資訊 - 將 U-Boot 的 source code 移除 - bitbake u-boot-imx -c clean

修改 M300\fsl-release-bsp\sources\meta-fsl-arm\conf\machine\imx6ulevk.conf

新增 UBOOT_CONFIG[nand] = "mx6ul_14x14_evk_nand_config,ubifs"

...
UBOOT_CONFIG ??= "sd"
UBOOT_CONFIG[sd] = "mx6ul_14x14_evk_config,sdcard"
UBOOT_CONFIG[nand] = "mx6ul_14x14_evk_nand_config,ubifs"
UBOOT_CONFIG[qspi1] = "mx6ul_14x14_evk_qspi1_config"
UBOOT_CONFIG[mfgtool] = "mx6ul_14x14_evk_config"

1555

修改 do_compile ()

do_compile () {
    echo "Hello World"
    ...
    oe_runmake O=${config} ${config}
#   oe_runmake O=${config} ${UBOOT_MAKE_TARGET}
#   cp  ${S}/${config}/${UBOOT_BINARY}  ${S}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
    ...
}

UBOOT_CONFIG 沒被定義時

...
  cc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  

scripts/kconfig/conf --defconfig=arch/../configs/mx6ul_14x14_evk_defconfig Kconfig

#
# configuration written to .config
#
...

UBOOT_CONFIG 定義成 "nand" 時

  cc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  

scripts/kconfig/conf --defconfig=arch/../configs/mx6ul_14x14_evk_nand_defconfig Kconfig

***
*** Can't find default configuration "arch/../configs/mx6ul_14x14_evk_nand_defconfig"!
***

../scripts/kconfig/Makefile:111: recipe for target 'mx6ul_14x14_evk_nand_defconfig' failed
make[2]: *** [mx6ul_14x14_evk_nand_defconfig] Error 1
...

簡單結論

  • UBOOT_CONFIG 沒被定義
    • 需要 configs/mx6ul_14x14_evk_defconfig
  • UBOOT_CONFIG 定義成 "nand"
    • 需要 configs/mx6ul_14x14_evk_nand_defconfig

結果就是 mx6ul_14x14_evk_nand_defconfig 找不到

原本 configs 下已經有一些 mx6ul_xxx_defconfig

jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/build_small/tmp/work/imx6ulevk-poky-linux-gnueabi/u-boot-imx/2015.04-r0/git/configs$ ls -al mx6ul*
-rw-r--r-- 1 jeffrey jeffrey 230  7月 11 16:10 mx6ul_14x14_ddr3_arm2_defconfig
-rw-r--r-- 1 jeffrey jeffrey 246  7月 11 16:10 mx6ul_14x14_ddr3_arm2_eimnor_defconfig
-rw-r--r-- 1 jeffrey jeffrey 258  7月 11 16:10 mx6ul_14x14_ddr3_arm2_emmc_defconfig
-rw-r--r-- 1 jeffrey jeffrey 244  7月 11 16:10 mx6ul_14x14_ddr3_arm2_nand_defconfig
-rw-r--r-- 1 jeffrey jeffrey 244  7月 11 16:10 mx6ul_14x14_ddr3_arm2_qspi1_defconfig
-rw-r--r-- 1 jeffrey jeffrey 246  7月 11 16:10 mx6ul_14x14_ddr3_arm2_spinor_defconfig
-rw-r--r-- 1 jeffrey jeffrey 182  7月 11 16:10 mx6ul_14x14_evk_android_defconfig
-rw-r--r-- 1 jeffrey jeffrey 166  7月 11 16:10 mx6ul_14x14_evk_defconfig
-rw-r--r-- 1 jeffrey jeffrey 180  7月 11 16:10 mx6ul_14x14_evk_qspi1_defconfig
-rw-r--r-- 1 jeffrey jeffrey 234  7月 11 16:10 mx6ul_14x14_lpddr2_arm2_defconfig
-rw-r--r-- 1 jeffrey jeffrey 250  7月 11 16:10 mx6ul_14x14_lpddr2_arm2_eimnor_defconfig
-rw-r--r-- 1 jeffrey jeffrey 190  7月 11 16:10 mx6ul_9x9_evk_defconfig
-rw-r--r-- 1 jeffrey jeffrey 204  7月 11 16:10 mx6ul_9x9_evk_qspi1_defconfig

1700

mx6ul_14x14_evk_defconfig 內容如下

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ul_14x14_evk/imximage.cfg,MX6UL"
CONFIG_ARM=y
CONFIG_TARGET_MX6UL_14X14_EVK=y
CONFIG_DM=y
CONFIG_DM_THERMAL=y

1805

理論上我們可以依照 Freescale Yocto Project User's Guide - 5.5 U-Boot configuration 的說明

U-Boot type = NANDMACHINE=imx6ulevk 時一樣能 build image

剛剛找 ariel 討論我會想這麼作
希望在這個禮拜做出來

ariel 聽到我能在這禮拜完成覺得夠快了

我要趁著個機會將 YOCTO 弄熟一點