A20开发之cubie2 编译过程详解(一)

     最近公司项目,就买了个cubiee2玩了玩。好了废话不多说了。

     Reilly的cubie目录下有binaries    linux-sunxi  products  sunxi-tools  tools这几个目录,这是从Git下载过来的,没有的朋友请从《LINUXSDK固件说明》文章中地址下载。

     然后我们打开需要执行的tool/scripts/envsetup.sh 脚本文件。

     下面我们来看脚本中的代码:

cb_get_product()
{
    local array
    local product_array
    local index
    local target
    local product

    array=(`ls products |sort`)                       /*读取products下的目录,并把输入作为sort的输入排序*/
    echo "Products"
    for index in ${!array[*]}                        /*打印选项*/
    do
    printf "%4d - %s\n" $index ${array[$index]}
    done

    read -p "please select a board:" target            /*读取输入值*/

    for index in ${!array[*]}                        /*根据输入的从参数定位文件夹CB_BOARD_NAME目录,如cb2*/
    do
    if [ "${index}" == "${target}" ]; then            
        CB_BOARD_NAME="${array[$target]}"
    fi
    done
                                                    /*获取板子型号*/
    array=(`ls products/${CB_BOARD_NAME}/${CB_BOARD_NAME}-* -d | sort`)
    for index in ${!array[*]}
    do
    product_array[$index]=${array[$index]##*/}        /*打印板子型号*/
    printf "%4d - %s\n" $index ${product_array[$index]}
    done

    read -p "please select a system:" target        /*选择板子型号,如cb2-cubieez*/

    for index in ${!product_array[*]}
    do
    if [ "${index}" == "${target}" ]; then
        CB_SYSTEM_NAME="${product_array[$target]}"  /*系统名字CB_SYSTEM_NAME=cb2-cubieez*/
    fi
    done

    CB_PRODUCT_NAME=${CB_BOARD_NAME}/${CB_SYSTEM_NAME} /*CB_PRODUCT_NAME ./cb2/cb2-cubieez*/*/
}
下面的只是一些相应的跳转代码,并无真正作用:
crelease()
{
    cd $CB_RELEASE_DIR
}

clinux()
{
    cd $CB_KSRC_DIR
}

cout()
{
    cd $CB_OUTPUT_DIR
}

croot()
{
    cd $CB_SDK_ROOTDIR
}

cbuild()
{
    cd $CB_BUILD_DIR
}

ctarget()
{
    cd $CB_TARGET_DIR
}

cpack()
{
    cd $CB_PACKBUILD_DIR
}

ckbuild()
{
    cd $CB_KBUILD_DIR
}

 好了,首先执行的是cb_get_product这个函数,将需要的目录都获取,接着执行下面的函数确认是否获取成功。

while [ -z "$CB_PRODUCT_NAME" ]; do
    cb_get_product
done

然后输出下面的目录:
export CB_BOARD_NAME                                                 /*板子名字*/
export CB_SYSTEM_NAME                                                 /*系统的名字*/
export CB_SDK_ROOTDIR=${PWD}                                         /*SDK包目录*/
export CB_PRODUCT_NAME                                                /*./cb2/cb2-cubieez*/
export CB_OUTPUT_DIR=${CB_SDK_ROOTDIR}/output/${CB_PRODUCT_NAME}    /*./output目录*/
export CB_BUILD_DIR=${CB_SDK_ROOTDIR}/build/${CB_PRODUCT_NAME}        /*./build*/
export CB_TARGET_DIR=${CB_OUTPUT_DIR}/target                        /*./output/target*/
export CB_PRODUCT_DIR=${CB_SDK_ROOTDIR}/products/${CB_PRODUCT_NAME} /*./product/cb2/cb2-cubieez*/
export CB_BOARD_DIR=${CB_SDK_ROOTDIR}/products/${CB_BOARD_NAME}        /*./product/cb2*/
export CB_RELEASE_DIR=${CB_SDK_ROOTDIR}/release/${CB_PRODUCT_NAME}  /*./release*/
export CB_TOOLS_DIR=${CB_SDK_ROOTDIR}/tools                            /*./tools*/
export CB_KSRC_DIR=${CB_SDK_ROOTDIR}/linux-sunxi                    /*./linux-xunxi*/
export CB_KBUILD_DIR=${CB_BUILD_DIR}/linux                            /*./build/linux*/
export CB_PACKBUILD_DIR=${CB_BUILD_DIR}/pack                        /*./build/pack*/
export CB_CROSS_COMPILE=arm-linux-gnueabihf-                        /*arm-linux-gnueabihf-gcc*/
export CB_PACKAGES_DIR=${CB_SDK_ROOTDIR}/binaries                    /*./binaries*/
export CB_CPU_NUM=`cat /proc/cpuinfo | grep processor | wc -l`      /*根据显示的cpuinfo获取CPU的数量 */

接着创造目录:
mkdir -p ${CB_OUTPUT_DIR} ${CB_BUILD_DIR} ${CB_KBUILD_DIR} ${CB_PACKBUILD_DIR} ${CB_TARGET_DIR}

然后执行下面的*.sh文本

source ${CB_PRODUCT_DIR}/envsetup.sh                                /*打开./product/cb2/cb2-cubieez/envsetup.h*/
source ${CB_TOOLS_DIR}/scripts/boardenvsetup.sh                        /**/
source ${CB_TOOLS_DIR}/scripts/recoveryboardenvsetup.sh
source ${CB_TOOLS_DIR}/scripts/helper-sd.sh

最后打印tools/scripts/readme.txt文件信息。


至此,整个执行过程就完成了,还是非常简单的。当然上面的脚本文件还没有进行解析,请继续关注我哦!


***************************欢迎加Reilly的qq:1798280707交流,谢谢!*********************************************


转载请注明出处,谢谢!


Reilly in shenzhen  13/8/2015




   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值