您的位置:首页 > 其它

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

2015-08-13 21:21 148 查看
最近公司项目,就买了个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: