summaryrefslogtreecommitdiff
authorBo Yang <bo.yang@amlogic.com>2018-09-13 11:10:37 (GMT)
committer Jianxin Pan <jianxin.pan@amlogic.com>2018-09-27 03:14:29 (GMT)
commit765d2c296fbde0e26d8eeffa4b720c4dee554179 (patch)
treebf191a997ebb1ac564189f1b27b0ae7601c00911
parent75e58f586823f15c20b24e48bb471227a116c7dc (diff)
downloadcommon-765d2c296fbde0e26d8eeffa4b720c4dee554179.zip
common-765d2c296fbde0e26d8eeffa4b720c4dee554179.tar.gz
common-765d2c296fbde0e26d8eeffa4b720c4dee554179.tar.bz2
script: amlogic: add script to build 32bit image for meson64
PD#172587: script: add script to build 32bit image for meson64 Use the new options: -c specify defconfig with full name -f specify rootfs -b specify prefix or suffix of dts for the board -p specify prefix of dts for the chip -d make distclean -h print help summary and examples Change-Id: I44effd373f9c2928c7aa2ecb226baa6e4799da7e Signed-off-by: Bo Yang <bo.yang@amlogic.com>
Diffstat
-rwxr-xr-xscripts/amlogic/mkimage_64_a32.sh285
1 files changed, 285 insertions, 0 deletions
diff --git a/scripts/amlogic/mkimage_64_a32.sh b/scripts/amlogic/mkimage_64_a32.sh
new file mode 100755
index 0000000..f56840e
--- a/dev/null
+++ b/scripts/amlogic/mkimage_64_a32.sh
@@ -0,0 +1,285 @@
+#! /bin/bash
+
+#
+# Build kernel and dtb for arm
+# Usage: mkimage.sh [-k def] [-d dts | -p chip] [-c] [-h]
+#
+
+#set -x
+
+if [ "${KBUILD_SRC}" = "" ]; then
+ tree=
+else
+ tree=${srctree}/
+fi
+
+PRGNAME=$(basename "$0")
+
+JLEVEL=12
+
+ARCH=arm
+GCC_PATH=/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin
+export PATH=$GCC_PATH:$PATH
+export CROSS_COMPILE=arm-linux-gnueabihf-
+
+DEFCONFIG=meson64_a32_defconfig
+ROOTFS=""
+
+BUILDKERNEL=false
+BUILDROOTFS=false
+BUILDDTB=false
+DISTCLEAN=false
+ALLDTS=""
+ALLDEF=""
+
+DEFDIR=${tree}arch/${ARCH}/configs
+DTSDIR=${tree}arch/${ARCH}/boot/dts/amlogic
+
+
+
+#
+# list all defconfigs
+#
+list_defconfig()
+{
+ defs=$(find ${DEFDIR} -name meson*_defconfig -type f -print)
+
+ for def in ${defs}; do
+ ALLDEF="${ALLDEF} "$(basename $def)
+ done
+}
+
+#
+# list all dts
+#
+list_devicetree()
+{
+ echo "todo"
+}
+
+
+#
+# find defconfig in
+#
+find_defconfig()
+{
+ cnt=$(find ${DEFDIR} -name ${1} -type f -print | wc -l)
+
+ def=$(find ${DEFDIR} -name ${1} -type f -print)
+
+ if [ ${cnt} -eq 1 ]; then
+ DEFCONFIG=$(basename $def)
+ echo "find defconfig $DEFCONFIG"
+ elif [ ${cnt} -eq 0 ]; then
+ echo "find no defconfig"
+ exit 1
+ elif [ ${cnt} -ge 2 ]; then
+ echo "find multi defconfigs"
+ exit 1
+ fi
+}
+
+#
+# find rootfs
+#
+find_rootfs()
+{
+ if [ -f ${1} ]; then
+ ROOTFS=${1}
+ else
+ echo "find no rootfs ${1}"
+ exit 1
+ fi
+}
+
+#
+# find dts
+#
+find_devicetree()
+{
+ cnt=$(find ${DTSDIR} -type f -name *${1}*.dts -print | wc -l)
+
+ if [ ${cnt} -eq 0 ]; then
+ echo "find no dts"
+ exit 1
+ fi
+
+ dts=$(find ${DTSDIR} -type f -name *${1}*.dts)
+
+ for d in ${dts}; do
+ ALLDTS="${ALLDTS} $(basename $d)"
+ done
+}
+
+
+#
+# make distclean
+#
+make_distclean()
+{
+ make ARCH=${ARCH} distclean > /dev/null 2>&1
+}
+
+
+#
+# make defconfig
+#
+make_defconfig()
+{
+ make ARCH=${ARCH} ${DEFCONFIG}
+}
+
+
+#
+#build kernel
+#
+build_kernel()
+{
+ OPTION=""
+ OPTION=${OPTION}" ARCH=${ARCH}"
+ if [ "${BUILDROOTFS}" = "true" ]; then
+ OPTION=${OPTION}" CONFIG_INITRAMFS_SOURCE=${ROOTFS}"
+ fi
+
+ make ${OPTION} uImage -j${JLEVEL}
+}
+
+
+#
+# build dtb
+#
+build_dtb()
+{
+ for d in ${ALLDTS}; do
+ echo "compile dtb ${d%.dts} ..."
+ make ARCH=${ARCH} ${d%.dts}.dtb
+ if [ $? -ne 0 ]; then exit 1; fi
+ done
+}
+
+
+#
+# examples
+#
+usage_example()
+{
+ echo -e "\nExamples:"
+ echo -e " # build kernel using default ${DEFCONFIG}"
+ echo -e "\033[32;1m $PRGNAME\033[0m\n"
+
+ echo -e " # build kernel using defconfig <meson64_defconfig>\c"
+ echo -e " specified by the option -c"
+ echo -e "\033[32;1m $PRGNAME -c meson64_defconfig\033[0m\n"
+
+ echo -e " # build all dtb for the board with prefix or suffix <p320>\c"
+ echo -e " specified by the option -b"
+ echo -e "\033[32;1m $PRGNAME -b p320\033[0m\n"
+
+ echo -e " # build all dtb for the chip with prefix <txl>\c"
+ echo -e " specified by the option -p"
+ echo -e "\033[32;1m $PRGNAME -p txl\033[0m\n"
+
+ echo -e " # make distclean and build kernel and dtb"
+ echo -e "\033[32;1m $PRGNAME -c meson64_defconfig -b p320 -d\033[0m\n"
+}
+
+
+#
+# usage
+#
+usage()
+{
+ echo -e "Usage: $PRGNAME [-c defconfig] {-f rootfs} [-b dts | -p chip] [-d] [-h]\n"
+ echo -e " -c specify defconfig with full name"
+ echo -e " -f specify rootfs"
+ echo -e " -b specify prefix or suffix of dts for the board"
+ echo -e " -p specify prefix of dts for the chip"
+ echo -e " -d make distclean"
+ echo -e " -h print help summary and examples"
+}
+
+
+while getopts :c:f:b:p:dh opt; do
+ case $opt in
+ c)
+ BUILDKERNEL=true
+ find_defconfig ${OPTARG}
+ ;;
+ f)
+ BUILDKERNEL=true
+ BUILDROOTFS=true
+ find_rootfs ${OPTARG}
+ ;;
+ b)
+ BUILDDTB=true
+ find_devicetree _${OPTARG}
+ ;;
+ p)
+ BUILDDTB=true
+ find_devicetree ${OPTARG}_
+ ;;
+ d)
+ DISTCLEAN=true
+ ;;
+ h)
+ usage
+ usage_example
+ exit 1
+ ;;
+
+ \?)
+ echo "invalid option $OPTARG"
+ usage
+ exit 1
+ ;;
+ :)
+ case $OPTARG in
+ c)
+ echo "missing argument to -c"
+ usage
+ exit 1
+ ;;
+ f)
+ echo "missing argument to -f"
+ usage
+ exit 1
+ ;;
+ b)
+ echo "missing argument to -b"
+ usage
+ exit 1
+ ;;
+ p)
+ echo "missing argument to -p"
+ usage
+ exit 1
+ ;;
+ esac
+ ;;
+ esac
+done
+
+if [ $# -eq 0 ];then
+ BUILDKERNEL=true
+fi
+
+if [ "${DISTCLEAN}" = "true" ]; then
+ make_distclean
+fi
+
+if [ "${BUILDKERNEL}" = "true" ] || [ "${BUILDDTB}" = "true" ];then
+ make_defconfig
+fi
+
+if [ "${BUILDKERNEL}" = "true" ]; then
+ echo "start compile kernel ..."
+ build_kernel
+fi
+
+if [ "${BUILDDTB}" = "true" ]; then
+ echo "start compile dtb ..."
+ build_dtb
+fi
+
+
+exit 1