#!/bin/bash
CURRENT_PATH=${PWD}
UBOOT_SRC="./uboot"
KERNEL_SRC="./linux"
ROOTFS_SRC="./rootfs"
SDTOOL_PATH="./sdtool"
DRIVER_PATH="./source/drivers"
APP_PATH="./source/app"
# echo ${UBOOT_SRC}
# echo ${KERNEL_SRC}
# echo ${ROOTFS_SRC}
#. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
makeUbootFunc(){
cd ${UBOOT_SRC}
make distclean
make mx6q-c-sabresd_defconfig
make -j5
cp u-boot.imx uboot-6q.tran
mv uboot-6q.tran u-boot-6q.imx
echo "====================================="
echo "u-boot compile finished!"
echo "====================================="
cd ${CURRENT_PATH}
}
makeKernelFunc(){
cd ${KERNEL_SRC}
make distclean
make imx_v7_defconfig
make zImage -j8
make dtbs -j8
make modules -j8
echo "====================================="
echo "Linux kernel compile finished!"
echo "====================================="
cd ${CURRENT_PATH}
}
makeDriverFunc(){
cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/PowerCtrl && make all && cd ${CURRENT_PATH}
cp -f ${DRIVER_PATH}/PowerCtrl/usource/powerctrl ${ROOTFS_SRC}/usr/bin
echo "====================================="
echo "Compile powerctrl finished!"
echo "====================================="
cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/SerialParPortDev && make all
cd ${CURRENT_PATH}
cp -f ${DRIVER_PATH}/SerialParPortDev/ksource/SerialParPortDev.ko ${ROOTFS_SRC}/opt/printer/driver
echo "====================================="
echo "Compile SerialParPortDev.ko finished!"
echo "====================================="
cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/printer && make && cd ${CURRENT_PATH}
cp -f ${DRIVER_PATH}/printer/usource/getusblpstatus ${ROOTFS_SRC}/usr/bin
echo "====================================="
echo "Compile getusblpstatus finished!"
echo "====================================="
cd ${CURRENT_PATH}
}
makeAppFunc(){
cd ${CURRENT_PATH} && cd ${APP_PATH} && ./compile.sh make qmlvideo && cd ${CURRENT_PATH}
echo "====================================="
echo "app compile finished!"
echo "====================================="
}
makeRootfsFunc(){
cd ${ROOTFS_SRC}
if [ -f ./rootfs.tar.bz2 ]; then
rm rootfs.tar.bz2
fi
fakeroot tar -jcvf rootfs.tar.bz2 *
echo "====================================="
echo "Generating rootfs OK!"
echo "====================================="
cd ${CURRENT_PATH}
}
makeVersionFunc(){
cd ${CURRENT_PATH}
mkdir -p ./sdtool/target
cp -f ${UBOOT_SRC}/u-boot-6q.imx ./sdtool/target
cp -f ${KERNEL_SRC}/arch/arm/boot/zImage ./sdtool/target
cp -f ${KERNEL_SRC}/arch/arm/boot/dts/imx6q-c-sabresd.dtb ./sdtool/target
cp -f ${ROOTFS_SRC}/rootfs.tar.bz2 ./sdtool/target
echo "====================================="
echo "Version copy finished!"
echo "====================================="
}
makeSdVersionFunc(){
cd ${SDTOOL_PATH}
tar -cjf ./update.tar.bz2 ./sdrun ./target
echo "====================================="
echo "D38 sd linux version is compiled finished!"
echo "====================================="
cd ${CURRENT_PATH}
}
cleanUbootFunc(){
cd ${UBOOT_SRC} && make distclean && cd ${CURRENT_PATH}
echo "====================================="
echo "Clean uboot finished!"
echo "====================================="
}
cleanKernelFunc(){
cd ${KERNEL_SRC} && make distclean && cd ${CURRENT_PATH}
echo "====================================="
echo "Clean Kernel finished!"
echo "====================================="
}
cleanDriverFunc(){
cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/PowerCtrl/ && make clean
echo "====================================="
echo "Clean powerctrl finished!"
echo "====================================="
cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/SerialParPortDev/ && make clean
echo "====================================="
echo "Clean SerialParPortDev finished!"
echo "====================================="
cd ${CURRENT_PATH} && cd ${DRIVER_PATH}/printer/ && make clean
echo "====================================="
echo "Clean getusblpstatus finished!"
echo "====================================="
cd ${CURRENT_PATH}
}
cleanAppFunc(){
cd ${CURRENT_PATH} && cd ${APP_PATH} && ./compile.sh clean qmlvideo && cd ${CURRENT_PATH}
echo "====================================="
echo "Clean app finished!"
echo "====================================="
}
cleanRootfsFunc(){
cd ${ROOTFS_SRC} && rm -rf rootfs.tar.bz2 && cd ${CURRENT_PATH}
}
cleanSdVersionFunc(){
cd ${SDTOOL_PATH}
rm -rf ./target/imx6q-c-sabresd.dtb
rm -rf ./target/rootfs.tar.bz2
rm -rf ./target/u-boot-6q.imx
rm -rf ./target/zImage
rm -rf ./update.tar.bz2
echo "====================================="
echo "Old Version clean Finished!"
echo "====================================="
cd ${CURRENT_PATH}
}
cat << EOF
----------------------------------------------------------------------------------------------------------------
Firstly,you need configure the cross-compile environment handly before make or clean.
. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
----------------------------------------------------------------------------------------------------------------
./tenv make uboot --- Compile Uboot.
./tenv make kernel --- Compile Linux Kernel,include source/drivers
./tenv make app --- Compile App
./tenv make rootfs --- Package the D38 Rootfs.
./tenv make version --- Copy uboot、kernel、rootfs... to sdtool/target.
./tenv make sdversion --- tar sdtool/target to update.tar.bz2.
./tenv make all --- do make uboot/make kernel/make rootfs/make version/make sdversion simultaneously.
./tenv clean uboot --- Clean UBoot.
./tenv clean kernel --- Clean Linux Kernel,include source/drivers.
./tenv clean app --- Clean app
./tenv clean rootfs --- delete rootfs.tar.bz2.
./tenv clean sdversion --- delete sdtool/target/* and delete update.tar.bz2.
./tenv clean all --- do clean uboot/clean kernel/clean rootfs/clean sdversion.
----------------------------------------------------------------------------------------------------------------
EOF
case "$1" in
"make")
case "$2" in
"uboot")
makeUbootFunc
;;
"kernel")
makeKernelFunc
makeDriverFunc
;;
"app")
echo "make app"
makeAppFunc
;;
"rootfs")
makeRootfsFunc
;;
"version")
makeVersionFunc
;;
"sdversion")
makeSdVersionFunc
;;
"all")
makeUbootFunc
makeKernelFunc
makeAppFunc
makeDriverFunc
makeRootfsFunc
makeVersionFunc
makeSdVersionFunc
;;
*)
echo "./tenv make Default, make nothing!"
;;
esac
;;
"clean")
case "$2" in
"uboot")
cleanUbootFunc
;;
"kernel")
cleanDriverFunc
cleanKernelFunc
;;
"app")
cleanAppFunc
;;
"rootfs")
cleanRootfsFunc
;;
"version")
echo "Do nothing!"
;;
"sdversion")
cleanSdVersionFunc
;;
"all")
cleanUbootFunc
cleanDriverFunc
cleanAppFunc
cleanKernelFunc
cleanRootfsFunc
cleanSdVersionFunc
;;
*)
echo "./tenv clean Default, clean nothing!"
;;
esac
;;
*)
echo "./tenv Default, do nothing!"
;;
esac
网友评论