最近公司项目,就买了个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