Commit 310baf574d4a85f50a3e0e92b4cb046ed9e1ba07
1 parent
20611c25ca
Exists in
debian_buster_mx8m
Make changes to hardware revision 00F0: Replace Ethernet PHY by RTL8211FD-CG
Showing 2 changed files with 3 additions and 2 deletions Inline Diff
embedian/smarcimx8mq/smarcimx8mq.sh
1 | readonly ARCH_CPU="64BIT" | 1 | readonly ARCH_CPU="64BIT" |
2 | 2 | ||
3 | # U-Boot | 3 | # U-Boot |
4 | readonly G_UBOOT_SRC_DIR="${DEF_SRC_DIR}/uboot" | 4 | readonly G_UBOOT_SRC_DIR="${DEF_SRC_DIR}/uboot" |
5 | readonly G_UBOOT_GIT="git@git.embedian.com:developer/smarc-t335x-uboot.git" | 5 | readonly G_UBOOT_GIT="git@git.embedian.com:developer/smarc-t335x-uboot.git" |
6 | readonly G_UBOOT_BRANCH="smarc_8m-imx_v2019.04_4.19.35_1.1.0" | 6 | readonly G_UBOOT_BRANCH="smarc_8m-imx_v2019.04_4.19.35_1.1.0" |
7 | readonly G_UBOOT_REV="98ddf5324018cd67bc8c65e706b1c9ba23b53533" | 7 | readonly G_UBOOT_REV="437727199bf07f2c77d8b6bbca7eabe7621994d7" |
8 | if [ "${MACHINE}" = "smarcimx8m2g" ]; then | 8 | if [ "${MACHINE}" = "smarcimx8m2g" ]; then |
9 | G_UBOOT_DEF_CONFIG_MMC="smarcimx8mq_2g_ser3_defconfig" | 9 | G_UBOOT_DEF_CONFIG_MMC="smarcimx8mq_2g_ser3_defconfig" |
10 | elif [ "${MACHINE}" = "smarcimx8m4g" ]; then | 10 | elif [ "${MACHINE}" = "smarcimx8m4g" ]; then |
11 | G_UBOOT_DEF_CONFIG_MMC="smarcimx8mq_4g_ser3_defconfig" | 11 | G_UBOOT_DEF_CONFIG_MMC="smarcimx8mq_4g_ser3_defconfig" |
12 | fi | 12 | fi |
13 | readonly G_UBOOT_NAME_FOR_EMMC='imx-boot-sd.bin' | 13 | readonly G_UBOOT_NAME_FOR_EMMC='imx-boot-sd.bin' |
14 | readonly G_UBOOT_NAME_FOR_EMMC_DP='imx-boot-sd-dp.bin' | 14 | readonly G_UBOOT_NAME_FOR_EMMC_DP='imx-boot-sd-dp.bin' |
15 | 15 | ||
16 | # Linux kernel | 16 | # Linux kernel |
17 | readonly G_LINUX_KERNEL_SRC_DIR="${DEF_SRC_DIR}/kernel" | 17 | readonly G_LINUX_KERNEL_SRC_DIR="${DEF_SRC_DIR}/kernel" |
18 | readonly G_LINUX_KERNEL_GIT="git@git.embedian.com:developer/smarc-fsl-linux-kernel.git" | 18 | readonly G_LINUX_KERNEL_GIT="git@git.embedian.com:developer/smarc-fsl-linux-kernel.git" |
19 | readonly G_LINUX_KERNEL_BRANCH="smarc_8m_imx_4.19.35_1.1.0" | 19 | readonly G_LINUX_KERNEL_BRANCH="smarc_8m_imx_4.19.35_1.1.0" |
20 | readonly G_LINUX_KERNEL_REV="314102822fd9da8a7b29e20f801b258727cb3249" | 20 | readonly G_LINUX_KERNEL_REV="a24d6757302c3b6a254a5bc408f91f1d2110c7a4" |
21 | readonly G_LINUX_KERNEL_DEF_CONFIG='smarcimx8m_defconfig' | 21 | readonly G_LINUX_KERNEL_DEF_CONFIG='smarcimx8m_defconfig' |
22 | G_LINUX_DTB="embedian/fsl-smarcimx8mq.dtb | 22 | G_LINUX_DTB="embedian/fsl-smarcimx8mq.dtb |
23 | embedian/fsl-smarcimx8mq-dcss-lvds.dtb | 23 | embedian/fsl-smarcimx8mq-dcss-lvds.dtb |
24 | embedian/fsl-smarcimx8mq-hdmi.dtb | 24 | embedian/fsl-smarcimx8mq-hdmi.dtb |
25 | embedian/fsl-smarcimx8mq-lcdif-lvds.dtb | 25 | embedian/fsl-smarcimx8mq-lcdif-lvds.dtb |
26 | embedian/fsl-smarcimx8mq-dual-display.dtb | 26 | embedian/fsl-smarcimx8mq-dual-display.dtb |
27 | embedian/fsl-smarcimx8mq-dp.dtb | 27 | embedian/fsl-smarcimx8mq-dp.dtb |
28 | embedian/fsl-smarcimx8mq-edp.dtb" | 28 | embedian/fsl-smarcimx8mq-edp.dtb" |
29 | 29 | ||
30 | readonly G_GPU_IMX_VIV_PACKAGE_DIR="imx-gpu-viv-6.4.0.p1.0" | 30 | readonly G_GPU_IMX_VIV_PACKAGE_DIR="imx-gpu-viv-6.4.0.p1.0" |
31 | readonly G_GPU_IMX_VIV_SDK_PACKAGE_DIR="imx-gpu-sdk-6.2.4.p4.0" | 31 | readonly G_GPU_IMX_VIV_SDK_PACKAGE_DIR="imx-gpu-sdk-6.2.4.p4.0" |
32 | readonly GST_MM_VERSION="MM_04.05.01_1909_L4.19.35" | 32 | readonly GST_MM_VERSION="MM_04.05.01_1909_L4.19.35" |
33 | readonly IMX_FIRMWARE_VERSION="8.5" | 33 | readonly IMX_FIRMWARE_VERSION="8.5" |
34 | readonly WESTON_PACKAGE_DIR="imx8mq-vivante" | 34 | readonly WESTON_PACKAGE_DIR="imx8mq-vivante" |
35 | 35 | ||
36 | readonly G_IMX_CODEC_DIR="imxcodec-4.5.1" | 36 | readonly G_IMX_CODEC_DIR="imxcodec-4.5.1" |
37 | readonly G_IMX_PARSER_DIR="imxparser-4.5.1" | 37 | readonly G_IMX_PARSER_DIR="imxparser-4.5.1" |
38 | readonly G_IMX_VPU_HANTRO_DIR="imxvpuhantro-1.15.0" | 38 | readonly G_IMX_VPU_HANTRO_DIR="imxvpuhantro-1.15.0" |
39 | readonly G_IMX_VPU_WRAPPER_DIR="imxvpuwrap-4.5.1" | 39 | readonly G_IMX_VPU_WRAPPER_DIR="imxvpuwrap-4.5.1" |
40 | 40 | ||
41 | #Have custom OpenCV build | 41 | #Have custom OpenCV build |
42 | readonly G_OPENCV_DIR="opencv" | 42 | readonly G_OPENCV_DIR="opencv" |
43 | 43 | ||
44 | IMXGSTPLG="imx-gst1.0-plugin-mx8mq" | 44 | IMXGSTPLG="imx-gst1.0-plugin-mx8mq" |
45 | 45 | ||
46 | # Flashing variables | 46 | # Flashing variables |
47 | BOOTLOADER_OFFSET=33 | 47 | BOOTLOADER_OFFSET=33 |
48 | 48 | ||
49 | BOOT_DTB="fsl-smarcimx8mq.dtb" | 49 | BOOT_DTB="fsl-smarcimx8mq.dtb" |
50 | DEFAULT_BOOT_DTB="fsl-smarcimx8mq.dtb" | 50 | DEFAULT_BOOT_DTB="fsl-smarcimx8mq.dtb" |
51 | 51 | ||
52 | readonly G_IMXBOOT_SRC_DIR="${DEF_SRC_DIR}/imx-mkimage" | 52 | readonly G_IMXBOOT_SRC_DIR="${DEF_SRC_DIR}/imx-mkimage" |
53 | readonly G_IMXBOOT_GIT="git://source.codeaurora.org/external/imx/imx-mkimage.git" | 53 | readonly G_IMXBOOT_GIT="git://source.codeaurora.org/external/imx/imx-mkimage.git" |
54 | readonly G_IMXBOOT_BRACH="imx_4.19.35_1.1.0" | 54 | readonly G_IMXBOOT_BRACH="imx_4.19.35_1.1.0" |
55 | readonly G_IMXBOOT_REV="1c2277b95ce59f5d0265f26fec522e2ac2581e59" | 55 | readonly G_IMXBOOT_REV="1c2277b95ce59f5d0265f26fec522e2ac2581e59" |
56 | 56 | ||
57 | #imx-atf | 57 | #imx-atf |
58 | readonly G_IMX_ATF_SRC_DIR="${DEF_SRC_DIR}/imx-atf" | 58 | readonly G_IMX_ATF_SRC_DIR="${DEF_SRC_DIR}/imx-atf" |
59 | readonly G_IMX_ATF_GIT="https://source.codeaurora.org/external/imx/imx-atf" | 59 | readonly G_IMX_ATF_GIT="https://source.codeaurora.org/external/imx/imx-atf" |
60 | readonly G_IMX_ATF_BRANCH="imx_4.19.35_1.1.0" | 60 | readonly G_IMX_ATF_BRANCH="imx_4.19.35_1.1.0" |
61 | readonly G_IMX_ATF_REV="70fa7bcc1a2035ab8402550911b3ae29eff55371" | 61 | readonly G_IMX_ATF_REV="70fa7bcc1a2035ab8402550911b3ae29eff55371" |
62 | 62 | ||
63 | HDMI=yes | 63 | HDMI=yes |
64 | SPL_LOAD_ADDR=0x7E1000 | 64 | SPL_LOAD_ADDR=0x7E1000 |
65 | TEE_LOAD_ADDR=0xfe000000 | 65 | TEE_LOAD_ADDR=0xfe000000 |
66 | ATF_LOAD_ADDR=0x00910000 | 66 | ATF_LOAD_ADDR=0x00910000 |
67 | UBOOT_DTB="fsl-smarcimx8mq.dtb" | 67 | UBOOT_DTB="fsl-smarcimx8mq.dtb" |
68 | IMX_BOOT_TOOL_BL_BIN="bl31-imx8mq.bin" | 68 | IMX_BOOT_TOOL_BL_BIN="bl31-imx8mq.bin" |
69 | 69 |
smarc_make_debian.sh
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | # It is designed to build Debian Linux for Variscite iMX modules | 2 | # It is designed to build Debian Linux for Variscite iMX modules |
3 | # prepare host OS system: | 3 | # prepare host OS system: |
4 | # sudo apt-get install binfmt-support qemu qemu-user-static debootstrap kpartx | 4 | # sudo apt-get install binfmt-support qemu qemu-user-static debootstrap kpartx |
5 | # sudo apt-get install lvm2 dosfstools gpart binutils git lib32ncurses5-dev python-m2crypto | 5 | # sudo apt-get install lvm2 dosfstools gpart binutils git lib32ncurses5-dev python-m2crypto |
6 | # sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev | 6 | # sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev |
7 | # sudo apt-get install autoconf libtool libglib2.0-dev libarchive-dev | 7 | # sudo apt-get install autoconf libtool libglib2.0-dev libarchive-dev |
8 | # sudo apt-get install python-git xterm sed cvs subversion coreutils texi2html | 8 | # sudo apt-get install python-git xterm sed cvs subversion coreutils texi2html |
9 | # sudo apt-get install docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev | 9 | # sudo apt-get install docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev |
10 | # sudo apt-get install libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools mtd-utils | 10 | # sudo apt-get install libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools mtd-utils |
11 | # | 11 | # |
12 | 12 | ||
13 | # -e Exit immediately if a command exits with a non-zero status. | 13 | # -e Exit immediately if a command exits with a non-zero status. |
14 | set -e | 14 | set -e |
15 | 15 | ||
16 | SCRIPT_NAME=${0##*/} | 16 | SCRIPT_NAME=${0##*/} |
17 | 17 | ||
18 | #### Exports Variables #### | 18 | #### Exports Variables #### |
19 | #### global variables #### | 19 | #### global variables #### |
20 | readonly ABSOLUTE_FILENAME=`readlink -e "$0"` | 20 | readonly ABSOLUTE_FILENAME=`readlink -e "$0"` |
21 | readonly ABSOLUTE_DIRECTORY=`dirname ${ABSOLUTE_FILENAME}` | 21 | readonly ABSOLUTE_DIRECTORY=`dirname ${ABSOLUTE_FILENAME}` |
22 | readonly SCRIPT_POINT=${ABSOLUTE_DIRECTORY} | 22 | readonly SCRIPT_POINT=${ABSOLUTE_DIRECTORY} |
23 | readonly SCRIPT_START_DATE=`date +%Y%m%d` | 23 | readonly SCRIPT_START_DATE=`date +%Y%m%d` |
24 | readonly LOOP_MAJOR=7 | 24 | readonly LOOP_MAJOR=7 |
25 | 25 | ||
26 | # default mirror | 26 | # default mirror |
27 | readonly DEF_DEBIAN_MIRROR="https://snapshot.debian.org/archive/debian/20201130T213631Z/" | 27 | readonly DEF_DEBIAN_MIRROR="https://snapshot.debian.org/archive/debian/20201130T213631Z/" |
28 | readonly DEB_RELEASE="buster" | 28 | readonly DEB_RELEASE="buster" |
29 | readonly DEF_ROOTFS_TARBALL_NAME="rootfs.tar.gz" | 29 | readonly DEF_ROOTFS_TARBALL_NAME="rootfs.tar.gz" |
30 | 30 | ||
31 | ## display | 31 | ## display |
32 | readonly DISPLAY="-lcdif-lvds" | 32 | readonly DISPLAY="-lcdif-lvds" |
33 | 33 | ||
34 | # base paths | 34 | # base paths |
35 | readonly DEF_BUILDENV="${ABSOLUTE_DIRECTORY}" | 35 | readonly DEF_BUILDENV="${ABSOLUTE_DIRECTORY}" |
36 | readonly DEF_SRC_DIR="${DEF_BUILDENV}/src" | 36 | readonly DEF_SRC_DIR="${DEF_BUILDENV}/src" |
37 | readonly G_ROOTFS_DIR="${DEF_BUILDENV}/rootfs" | 37 | readonly G_ROOTFS_DIR="${DEF_BUILDENV}/rootfs" |
38 | readonly G_TMP_DIR="${DEF_BUILDENV}/tmp" | 38 | readonly G_TMP_DIR="${DEF_BUILDENV}/tmp" |
39 | readonly G_TOOLS_PATH="${DEF_BUILDENV}/toolchain" | 39 | readonly G_TOOLS_PATH="${DEF_BUILDENV}/toolchain" |
40 | readonly G_EMBEDIAN_PATH="${DEF_BUILDENV}/embedian" | 40 | readonly G_EMBEDIAN_PATH="${DEF_BUILDENV}/embedian" |
41 | 41 | ||
42 | #64 bit CROSS_COMPILER config and paths | 42 | #64 bit CROSS_COMPILER config and paths |
43 | readonly G_CROSS_COMPILER_64BIT_NAME="gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu" | 43 | readonly G_CROSS_COMPILER_64BIT_NAME="gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu" |
44 | readonly G_CROSS_COMPILER_ARCHIVE_64BIT="${G_CROSS_COMPILER_64BIT_NAME}.tar.xz" | 44 | readonly G_CROSS_COMPILER_ARCHIVE_64BIT="${G_CROSS_COMPILER_64BIT_NAME}.tar.xz" |
45 | readonly G_EXT_CROSS_64BIT_COMPILER_LINK="https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/${G_CROSS_COMPILER_ARCHIVE_64BIT}" | 45 | readonly G_EXT_CROSS_64BIT_COMPILER_LINK="https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/${G_CROSS_COMPILER_ARCHIVE_64BIT}" |
46 | readonly G_CROSS_COMPILER_64BIT_PREFIX="aarch64-linux-gnu-" | 46 | readonly G_CROSS_COMPILER_64BIT_PREFIX="aarch64-linux-gnu-" |
47 | 47 | ||
48 | #### user rootfs packages #### | 48 | #### user rootfs packages #### |
49 | readonly G_USER_PACKAGES="" | 49 | readonly G_USER_PACKAGES="" |
50 | 50 | ||
51 | export LC_ALL=C | 51 | export LC_ALL=C |
52 | 52 | ||
53 | #### Input params #### | 53 | #### Input params #### |
54 | PARAM_DEB_LOCAL_MIRROR="${DEF_DEBIAN_MIRROR}" | 54 | PARAM_DEB_LOCAL_MIRROR="${DEF_DEBIAN_MIRROR}" |
55 | PARAM_OUTPUT_DIR="${DEF_BUILDENV}/output" | 55 | PARAM_OUTPUT_DIR="${DEF_BUILDENV}/output" |
56 | PARAM_DEBUG="0" | 56 | PARAM_DEBUG="0" |
57 | PARAM_CMD="all" | 57 | PARAM_CMD="all" |
58 | PARAM_BLOCK_DEVICE="na" | 58 | PARAM_BLOCK_DEVICE="na" |
59 | 59 | ||
60 | ### usage ### | 60 | ### usage ### |
61 | function usage() | 61 | function usage() |
62 | { | 62 | { |
63 | echo "Make Debian ${DEB_RELEASE} image and create a bootabled SD card" | 63 | echo "Make Debian ${DEB_RELEASE} image and create a bootabled SD card" |
64 | echo | 64 | echo |
65 | echo "Usage:" | 65 | echo "Usage:" |
66 | echo " MACHINE=<smarcimx8m2g|smarcimx8m4g> ./${SCRIPT_NAME} options" | 66 | echo " MACHINE=<smarcimx8m2g|smarcimx8m4g> ./${SCRIPT_NAME} options" |
67 | echo | 67 | echo |
68 | echo "Options:" | 68 | echo "Options:" |
69 | echo " -h|--help -- print this help" | 69 | echo " -h|--help -- print this help" |
70 | echo " -c|--cmd <command>" | 70 | echo " -c|--cmd <command>" |
71 | echo " Supported commands:" | 71 | echo " Supported commands:" |
72 | echo " deploy -- prepare environment for all commands" | 72 | echo " deploy -- prepare environment for all commands" |
73 | echo " all -- build or rebuild kernel/bootloader/rootfs" | 73 | echo " all -- build or rebuild kernel/bootloader/rootfs" |
74 | echo " bootloader -- build or rebuild U-Boot" | 74 | echo " bootloader -- build or rebuild U-Boot" |
75 | echo " kernel -- build or rebuild the Linux kernel" | 75 | echo " kernel -- build or rebuild the Linux kernel" |
76 | echo " kernelheaders -- build or rebuild Linux kernel headers" | 76 | echo " kernelheaders -- build or rebuild Linux kernel headers" |
77 | echo " modules -- build or rebuild the Linux kernel modules & headers and install them in the rootfs dir" | 77 | echo " modules -- build or rebuild the Linux kernel modules & headers and install them in the rootfs dir" |
78 | echo " rootfs -- build or rebuild the Debian root filesystem and create rootfs.tar.gz" | 78 | echo " rootfs -- build or rebuild the Debian root filesystem and create rootfs.tar.gz" |
79 | echo " (including: make & install Debian packages, firmware and kernel modules & headers)" | 79 | echo " (including: make & install Debian packages, firmware and kernel modules & headers)" |
80 | echo " rtar -- generate or regenerate rootfs.tar.gz image from the rootfs folder" | 80 | echo " rtar -- generate or regenerate rootfs.tar.gz image from the rootfs folder" |
81 | echo " clean -- clean all build artifacts (without deleting sources code or resulted images)" | 81 | echo " clean -- clean all build artifacts (without deleting sources code or resulted images)" |
82 | echo " sdcard -- create a bootable SD card" | 82 | echo " sdcard -- create a bootable SD card" |
83 | echo " -o|--output -- custom select output directory (default: \"${PARAM_OUTPUT_DIR}\")" | 83 | echo " -o|--output -- custom select output directory (default: \"${PARAM_OUTPUT_DIR}\")" |
84 | echo " -d|--dev -- specify SD card device (exmple: -d /dev/sde)" | 84 | echo " -d|--dev -- specify SD card device (exmple: -d /dev/sde)" |
85 | echo " --debug -- enable debug mode for this script" | 85 | echo " --debug -- enable debug mode for this script" |
86 | echo "Examples of use:" | 86 | echo "Examples of use:" |
87 | echo " deploy and build: ./${SCRIPT_NAME} --cmd deploy && sudo ./${SCRIPT_NAME} --cmd all" | 87 | echo " deploy and build: ./${SCRIPT_NAME} --cmd deploy && sudo ./${SCRIPT_NAME} --cmd all" |
88 | echo " make the Linux kernel only: sudo ./${SCRIPT_NAME} --cmd kernel" | 88 | echo " make the Linux kernel only: sudo ./${SCRIPT_NAME} --cmd kernel" |
89 | echo " make rootfs only: sudo ./${SCRIPT_NAME} --cmd rootfs" | 89 | echo " make rootfs only: sudo ./${SCRIPT_NAME} --cmd rootfs" |
90 | echo " create SD card: sudo ./${SCRIPT_NAME} --cmd sdcard --dev /dev/sdX" | 90 | echo " create SD card: sudo ./${SCRIPT_NAME} --cmd sdcard --dev /dev/sdX" |
91 | echo | 91 | echo |
92 | } | 92 | } |
93 | if [ "${MACHINE}" = "smarcimx8m2g" ] || | 93 | if [ "${MACHINE}" = "smarcimx8m2g" ] || |
94 | [ "${MACHINE}" = "smarcimx8m4g" ]; then | 94 | [ "${MACHINE}" = "smarcimx8m4g" ]; then |
95 | if [ ! -e ${G_EMBEDIAN_PATH}/smarcimx8mq/smarcimx8mq.sh ]; then | 95 | if [ ! -e ${G_EMBEDIAN_PATH}/smarcimx8mq/smarcimx8mq.sh ]; then |
96 | echo "Illegal MACHINE: ${MACHINE}" | 96 | echo "Illegal MACHINE: ${MACHINE}" |
97 | echo | 97 | echo |
98 | usage | 98 | usage |
99 | exit 1 | 99 | exit 1 |
100 | fi | 100 | fi |
101 | 101 | ||
102 | source ${G_EMBEDIAN_PATH}/smarcimx8mq/smarcimx8mq.sh | 102 | source ${G_EMBEDIAN_PATH}/smarcimx8mq/smarcimx8mq.sh |
103 | fi | 103 | fi |
104 | 104 | ||
105 | # Setup cross compiler path, name, kernel dtb path, kernel image type, helper scripts | 105 | # Setup cross compiler path, name, kernel dtb path, kernel image type, helper scripts |
106 | if [ "${ARCH_CPU}" = "64BIT" ]; then | 106 | if [ "${ARCH_CPU}" = "64BIT" ]; then |
107 | G_CROSS_COMPILER_NAME=${G_CROSS_COMPILER_64BIT_NAME} | 107 | G_CROSS_COMPILER_NAME=${G_CROSS_COMPILER_64BIT_NAME} |
108 | G_EXT_CROSS_COMPILER_LINK=${G_EXT_CROSS_64BIT_COMPILER_LINK} | 108 | G_EXT_CROSS_COMPILER_LINK=${G_EXT_CROSS_64BIT_COMPILER_LINK} |
109 | G_CROSS_COMPILER_ARCHIVE=${G_CROSS_COMPILER_ARCHIVE_64BIT} | 109 | G_CROSS_COMPILER_ARCHIVE=${G_CROSS_COMPILER_ARCHIVE_64BIT} |
110 | G_CROSS_COMPILER_PREFIX=${G_CROSS_COMPILER_64BIT_PREFIX} | 110 | G_CROSS_COMPILER_PREFIX=${G_CROSS_COMPILER_64BIT_PREFIX} |
111 | ARCH_ARGS="arm64" | 111 | ARCH_ARGS="arm64" |
112 | BUILD_IMAGE_TYPE="Image" | 112 | BUILD_IMAGE_TYPE="Image" |
113 | KERNEL_BOOT_IMAGE_SRC="arch/arm64/boot/" | 113 | KERNEL_BOOT_IMAGE_SRC="arch/arm64/boot/" |
114 | KERNEL_DTB_IMAGE_PATH="arch/arm64/boot/dts/embedian/" | 114 | KERNEL_DTB_IMAGE_PATH="arch/arm64/boot/dts/embedian/" |
115 | # Include weston backend rootfs helper | 115 | # Include weston backend rootfs helper |
116 | source ${G_EMBEDIAN_PATH}/weston_rootfs.sh | 116 | source ${G_EMBEDIAN_PATH}/weston_rootfs.sh |
117 | source ${G_EMBEDIAN_PATH}/linux-headers_debian_src/create_kernel_tree.sh | 117 | source ${G_EMBEDIAN_PATH}/linux-headers_debian_src/create_kernel_tree.sh |
118 | else | 118 | else |
119 | echo " Error unknown CPU type" | 119 | echo " Error unknown CPU type" |
120 | exit 1 | 120 | exit 1 |
121 | fi | 121 | fi |
122 | 122 | ||
123 | G_CROSS_COMPILER_PATH="${G_TOOLS_PATH}/${G_CROSS_COMPILER_NAME}/bin" | 123 | G_CROSS_COMPILER_PATH="${G_TOOLS_PATH}/${G_CROSS_COMPILER_NAME}/bin" |
124 | 124 | ||
125 | ## parse input arguments ## | 125 | ## parse input arguments ## |
126 | readonly SHORTOPTS="c:o:d:h" | 126 | readonly SHORTOPTS="c:o:d:h" |
127 | readonly LONGOPTS="cmd:,output:,dev:,help,debug" | 127 | readonly LONGOPTS="cmd:,output:,dev:,help,debug" |
128 | 128 | ||
129 | ARGS=$(getopt -s bash --options ${SHORTOPTS} \ | 129 | ARGS=$(getopt -s bash --options ${SHORTOPTS} \ |
130 | --longoptions ${LONGOPTS} --name ${SCRIPT_NAME} -- "$@" ) | 130 | --longoptions ${LONGOPTS} --name ${SCRIPT_NAME} -- "$@" ) |
131 | 131 | ||
132 | eval set -- "$ARGS" | 132 | eval set -- "$ARGS" |
133 | 133 | ||
134 | while true; do | 134 | while true; do |
135 | case $1 in | 135 | case $1 in |
136 | -c|--cmd ) # script command | 136 | -c|--cmd ) # script command |
137 | shift | 137 | shift |
138 | PARAM_CMD="$1"; | 138 | PARAM_CMD="$1"; |
139 | ;; | 139 | ;; |
140 | -o|--output ) # select output dir | 140 | -o|--output ) # select output dir |
141 | shift | 141 | shift |
142 | PARAM_OUTPUT_DIR="$1"; | 142 | PARAM_OUTPUT_DIR="$1"; |
143 | ;; | 143 | ;; |
144 | -d|--dev ) # SD card block device | 144 | -d|--dev ) # SD card block device |
145 | shift | 145 | shift |
146 | [ -e ${1} ] && { | 146 | [ -e ${1} ] && { |
147 | PARAM_BLOCK_DEVICE=${1}; | 147 | PARAM_BLOCK_DEVICE=${1}; |
148 | }; | 148 | }; |
149 | ;; | 149 | ;; |
150 | --debug ) # enable debug | 150 | --debug ) # enable debug |
151 | PARAM_DEBUG=1; | 151 | PARAM_DEBUG=1; |
152 | ;; | 152 | ;; |
153 | -h|--help ) # get help | 153 | -h|--help ) # get help |
154 | usage | 154 | usage |
155 | exit 0; | 155 | exit 0; |
156 | ;; | 156 | ;; |
157 | -- ) | 157 | -- ) |
158 | shift | 158 | shift |
159 | break | 159 | break |
160 | ;; | 160 | ;; |
161 | * ) | 161 | * ) |
162 | shift | 162 | shift |
163 | break | 163 | break |
164 | ;; | 164 | ;; |
165 | esac | 165 | esac |
166 | shift | 166 | shift |
167 | done | 167 | done |
168 | 168 | ||
169 | # enable trace option in debug mode | 169 | # enable trace option in debug mode |
170 | [ "${PARAM_DEBUG}" = "1" ] && { | 170 | [ "${PARAM_DEBUG}" = "1" ] && { |
171 | echo "Debug mode enabled!" | 171 | echo "Debug mode enabled!" |
172 | set -x | 172 | set -x |
173 | }; | 173 | }; |
174 | 174 | ||
175 | echo "=============== Build summary ===============" | 175 | echo "=============== Build summary ===============" |
176 | echo "Building Debian ${DEB_RELEASE} for ${MACHINE}" | 176 | echo "Building Debian ${DEB_RELEASE} for ${MACHINE}" |
177 | echo "U-Boot config: ${G_UBOOT_DEF_CONFIG_MMC}" | 177 | echo "U-Boot config: ${G_UBOOT_DEF_CONFIG_MMC}" |
178 | echo "Kernel config: ${G_LINUX_KERNEL_DEF_CONFIG}" | 178 | echo "Kernel config: ${G_LINUX_KERNEL_DEF_CONFIG}" |
179 | echo "Default kernel dtb: ${DEFAULT_BOOT_DTB}" | 179 | echo "Default kernel dtb: ${DEFAULT_BOOT_DTB}" |
180 | echo "kernel dtbs: ${G_LINUX_DTB}" | 180 | echo "kernel dtbs: ${G_LINUX_DTB}" |
181 | echo "=============================================" | 181 | echo "=============================================" |
182 | echo | 182 | echo |
183 | 183 | ||
184 | ## declarate dynamic variables ## | 184 | ## declarate dynamic variables ## |
185 | readonly G_ROOTFS_TARBALL_PATH="${PARAM_OUTPUT_DIR}/${DEF_ROOTFS_TARBALL_NAME}" | 185 | readonly G_ROOTFS_TARBALL_PATH="${PARAM_OUTPUT_DIR}/${DEF_ROOTFS_TARBALL_NAME}" |
186 | 186 | ||
187 | ###### local functions ###### | 187 | ###### local functions ###### |
188 | 188 | ||
189 | ### printing functions ### | 189 | ### printing functions ### |
190 | 190 | ||
191 | # print error message | 191 | # print error message |
192 | # $1 - printing string | 192 | # $1 - printing string |
193 | function pr_error() | 193 | function pr_error() |
194 | { | 194 | { |
195 | echo "E: $1" | 195 | echo "E: $1" |
196 | } | 196 | } |
197 | 197 | ||
198 | # print warning message | 198 | # print warning message |
199 | # $1 - printing string | 199 | # $1 - printing string |
200 | function pr_warning() | 200 | function pr_warning() |
201 | { | 201 | { |
202 | echo "W: $1" | 202 | echo "W: $1" |
203 | } | 203 | } |
204 | 204 | ||
205 | # print info message | 205 | # print info message |
206 | # $1 - printing string | 206 | # $1 - printing string |
207 | function pr_info() | 207 | function pr_info() |
208 | { | 208 | { |
209 | echo "I: $1" | 209 | echo "I: $1" |
210 | } | 210 | } |
211 | 211 | ||
212 | # print debug message | 212 | # print debug message |
213 | # $1 - printing string | 213 | # $1 - printing string |
214 | function pr_debug() { | 214 | function pr_debug() { |
215 | echo "D: $1" | 215 | echo "D: $1" |
216 | } | 216 | } |
217 | 217 | ||
218 | ### work functions ### | 218 | ### work functions ### |
219 | 219 | ||
220 | # get sources from git repository | 220 | # get sources from git repository |
221 | # $1 - git repository | 221 | # $1 - git repository |
222 | # $2 - branch name | 222 | # $2 - branch name |
223 | # $3 - output dir | 223 | # $3 - output dir |
224 | # $4 - commit id | 224 | # $4 - commit id |
225 | function get_git_src() | 225 | function get_git_src() |
226 | { | 226 | { |
227 | # clone src code | 227 | # clone src code |
228 | git clone ${1} -b ${2} ${3} | 228 | git clone ${1} -b ${2} ${3} |
229 | cd ${3} | 229 | cd ${3} |
230 | git reset --hard ${4} | 230 | git reset --hard ${4} |
231 | cd - | 231 | cd - |
232 | } | 232 | } |
233 | 233 | ||
234 | # get remote file | 234 | # get remote file |
235 | # $1 - remote file | 235 | # $1 - remote file |
236 | # $2 - local file | 236 | # $2 - local file |
237 | function get_remote_file() | 237 | function get_remote_file() |
238 | { | 238 | { |
239 | # download remote file | 239 | # download remote file |
240 | wget -c ${1} -O ${2} | 240 | wget -c ${1} -O ${2} |
241 | } | 241 | } |
242 | 242 | ||
243 | function make_prepare() | 243 | function make_prepare() |
244 | { | 244 | { |
245 | # create src dir | 245 | # create src dir |
246 | mkdir -p ${DEF_SRC_DIR} | 246 | mkdir -p ${DEF_SRC_DIR} |
247 | 247 | ||
248 | # create toolchain dir | 248 | # create toolchain dir |
249 | mkdir -p ${G_TOOLS_PATH} | 249 | mkdir -p ${G_TOOLS_PATH} |
250 | 250 | ||
251 | # create rootfs dir | 251 | # create rootfs dir |
252 | mkdir -p ${G_ROOTFS_DIR} | 252 | mkdir -p ${G_ROOTFS_DIR} |
253 | 253 | ||
254 | # create out dir | 254 | # create out dir |
255 | mkdir -p ${PARAM_OUTPUT_DIR} | 255 | mkdir -p ${PARAM_OUTPUT_DIR} |
256 | 256 | ||
257 | # create tmp dir | 257 | # create tmp dir |
258 | mkdir -p ${G_TMP_DIR} | 258 | mkdir -p ${G_TMP_DIR} |
259 | } | 259 | } |
260 | 260 | ||
261 | 261 | ||
262 | # make tarball from footfs | 262 | # make tarball from footfs |
263 | # $1 -- packet folder | 263 | # $1 -- packet folder |
264 | # $2 -- output tarball file (full name) | 264 | # $2 -- output tarball file (full name) |
265 | function make_tarball() | 265 | function make_tarball() |
266 | { | 266 | { |
267 | cd $1 | 267 | cd $1 |
268 | 268 | ||
269 | chown root:root . | 269 | chown root:root . |
270 | pr_info "make tarball from folder ${1}" | 270 | pr_info "make tarball from folder ${1}" |
271 | pr_info "Remove old tarball $2" | 271 | pr_info "Remove old tarball $2" |
272 | rm -f $2 | 272 | rm -f $2 |
273 | 273 | ||
274 | pr_info "Create $2" | 274 | pr_info "Create $2" |
275 | 275 | ||
276 | RETVAL=0 | 276 | RETVAL=0 |
277 | tar czf $2 . || { | 277 | tar czf $2 . || { |
278 | RETVAL=1 | 278 | RETVAL=1 |
279 | rm -f $2 | 279 | rm -f $2 |
280 | }; | 280 | }; |
281 | 281 | ||
282 | cd - | 282 | cd - |
283 | return $RETVAL | 283 | return $RETVAL |
284 | } | 284 | } |
285 | 285 | ||
286 | # make Linux kernel image & dtbs | 286 | # make Linux kernel image & dtbs |
287 | # $1 -- cross compiler prefix | 287 | # $1 -- cross compiler prefix |
288 | # $2 -- Linux defconfig file | 288 | # $2 -- Linux defconfig file |
289 | # $3 -- Linux dtb files | 289 | # $3 -- Linux dtb files |
290 | # $4 -- Linux dirname | 290 | # $4 -- Linux dirname |
291 | # $5 -- out path | 291 | # $5 -- out path |
292 | function make_kernel() | 292 | function make_kernel() |
293 | { | 293 | { |
294 | pr_info "make kernel .config" | 294 | pr_info "make kernel .config" |
295 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${4}/ ${2} | 295 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${4}/ ${2} |
296 | 296 | ||
297 | pr_info "make kernel" | 297 | pr_info "make kernel" |
298 | if [ ! -z "${UIMAGE_LOADADDR}" ]; then | 298 | if [ ! -z "${UIMAGE_LOADADDR}" ]; then |
299 | IMAGE_EXTRA_ARGS="LOADADDR=${UIMAGE_LOADADDR}" | 299 | IMAGE_EXTRA_ARGS="LOADADDR=${UIMAGE_LOADADDR}" |
300 | fi | 300 | fi |
301 | make CROSS_COMPILE=${1} ARCH=${ARCH_ARGS} ${G_CROSS_COMPILER_JOPTION} ${IMAGE_EXTRA_ARGS}\ | 301 | make CROSS_COMPILE=${1} ARCH=${ARCH_ARGS} ${G_CROSS_COMPILER_JOPTION} ${IMAGE_EXTRA_ARGS}\ |
302 | -C ${4}/ ${BUILD_IMAGE_TYPE} | 302 | -C ${4}/ ${BUILD_IMAGE_TYPE} |
303 | 303 | ||
304 | pr_info "make ${3}" | 304 | pr_info "make ${3}" |
305 | make CROSS_COMPILE=${1} ARCH=${ARCH_ARGS} ${G_CROSS_COMPILER_JOPTION} -C ${4} ${3} | 305 | make CROSS_COMPILE=${1} ARCH=${ARCH_ARGS} ${G_CROSS_COMPILER_JOPTION} -C ${4} ${3} |
306 | 306 | ||
307 | pr_info "Copy kernel and dtb files to output dir: ${5}" | 307 | pr_info "Copy kernel and dtb files to output dir: ${5}" |
308 | cp ${4}/${KERNEL_BOOT_IMAGE_SRC}/${BUILD_IMAGE_TYPE} ${5}/; | 308 | cp ${4}/${KERNEL_BOOT_IMAGE_SRC}/${BUILD_IMAGE_TYPE} ${5}/; |
309 | cp ${4}/${KERNEL_DTB_IMAGE_PATH}*.dtb ${5}/; | 309 | cp ${4}/${KERNEL_DTB_IMAGE_PATH}*.dtb ${5}/; |
310 | } | 310 | } |
311 | 311 | ||
312 | # clean kernel | 312 | # clean kernel |
313 | # $1 -- Linux dir path | 313 | # $1 -- Linux dir path |
314 | function clean_kernel() | 314 | function clean_kernel() |
315 | { | 315 | { |
316 | pr_info "Clean the Linux kernel" | 316 | pr_info "Clean the Linux kernel" |
317 | 317 | ||
318 | make ARCH=${ARCH_ARGS} -C ${1}/ mrproper | 318 | make ARCH=${ARCH_ARGS} -C ${1}/ mrproper |
319 | } | 319 | } |
320 | 320 | ||
321 | # make Linux kernel modules | 321 | # make Linux kernel modules |
322 | # $1 -- cross compiler prefix | 322 | # $1 -- cross compiler prefix |
323 | # $2 -- Linux defconfig file | 323 | # $2 -- Linux defconfig file |
324 | # $3 -- Linux dirname | 324 | # $3 -- Linux dirname |
325 | # $4 -- out modules path | 325 | # $4 -- out modules path |
326 | function make_kernel_modules() | 326 | function make_kernel_modules() |
327 | { | 327 | { |
328 | pr_info "make kernel defconfig" | 328 | pr_info "make kernel defconfig" |
329 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} ${2} | 329 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} ${2} |
330 | 330 | ||
331 | pr_info "Compiling kernel modules" | 331 | pr_info "Compiling kernel modules" |
332 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} modules | 332 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} modules |
333 | } | 333 | } |
334 | 334 | ||
335 | # make Linux kernel headers package | 335 | # make Linux kernel headers package |
336 | # $1 -- cross compiler prefix | 336 | # $1 -- cross compiler prefix |
337 | # $2 -- Linux defconfig file | 337 | # $2 -- Linux defconfig file |
338 | # $3 -- Linux dirname | 338 | # $3 -- Linux dirname |
339 | # $4 -- out modules path | 339 | # $4 -- out modules path |
340 | function make_kernel_headers_package() | 340 | function make_kernel_headers_package() |
341 | { | 341 | { |
342 | pr_info "make kernel defconfig" | 342 | pr_info "make kernel defconfig" |
343 | create_debian_kernel_headers_package ${3} \ | 343 | create_debian_kernel_headers_package ${3} \ |
344 | ${PARAM_OUTPUT_DIR}/kernel-headers ${G_EMBEDIAN_PATH} | 344 | ${PARAM_OUTPUT_DIR}/kernel-headers ${G_EMBEDIAN_PATH} |
345 | pr_info "Installing kernel modules to ${4}" | 345 | pr_info "Installing kernel modules to ${4}" |
346 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} \ | 346 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} \ |
347 | ${G_CROSS_COMPILER_JOPTION} -C ${3} \ | 347 | ${G_CROSS_COMPILER_JOPTION} -C ${3} \ |
348 | INSTALL_MOD_PATH=${4} modules_install | 348 | INSTALL_MOD_PATH=${4} modules_install |
349 | } | 349 | } |
350 | # install the Linux kernel modules | 350 | # install the Linux kernel modules |
351 | # $1 -- cross compiler prefix | 351 | # $1 -- cross compiler prefix |
352 | # $2 -- Linux defconfig file | 352 | # $2 -- Linux defconfig file |
353 | # $3 -- Linux dirname | 353 | # $3 -- Linux dirname |
354 | # $4 -- out modules path | 354 | # $4 -- out modules path |
355 | function install_kernel_modules() | 355 | function install_kernel_modules() |
356 | { | 356 | { |
357 | pr_info "Installing kernel headers to ${4}" | 357 | pr_info "Installing kernel headers to ${4}" |
358 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} \ | 358 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} \ |
359 | INSTALL_HDR_PATH=${4}/usr/local headers_install | 359 | INSTALL_HDR_PATH=${4}/usr/local headers_install |
360 | 360 | ||
361 | pr_info "Installing kernel modules to ${4}" | 361 | pr_info "Installing kernel modules to ${4}" |
362 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} \ | 362 | make ARCH=${ARCH_ARGS} CROSS_COMPILE=${1} ${G_CROSS_COMPILER_JOPTION} -C ${3} \ |
363 | INSTALL_MOD_PATH=${4} modules_install | 363 | INSTALL_MOD_PATH=${4} modules_install |
364 | } | 364 | } |
365 | 365 | ||
366 | # make U-Boot | 366 | # make U-Boot |
367 | # $1 U-Boot path | 367 | # $1 U-Boot path |
368 | # $2 Output dir | 368 | # $2 Output dir |
369 | function make_uboot() | 369 | function make_uboot() |
370 | { | 370 | { |
371 | pr_info "Make U-Boot: ${G_UBOOT_DEF_CONFIG_MMC}" | 371 | pr_info "Make U-Boot: ${G_UBOOT_DEF_CONFIG_MMC}" |
372 | 372 | ||
373 | # clean work directory | 373 | # clean work directory |
374 | make ARCH=${ARCH_ARGS} -C ${1} \ | 374 | make ARCH=${ARCH_ARGS} -C ${1} \ |
375 | CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 375 | CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
376 | ${G_CROSS_COMPILER_JOPTION} mrproper | 376 | ${G_CROSS_COMPILER_JOPTION} mrproper |
377 | 377 | ||
378 | # make U-Boot mmc defconfig | 378 | # make U-Boot mmc defconfig |
379 | make ARCH=${ARCH_ARGS} -C ${1} \ | 379 | make ARCH=${ARCH_ARGS} -C ${1} \ |
380 | CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 380 | CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
381 | ${G_CROSS_COMPILER_JOPTION} ${G_UBOOT_DEF_CONFIG_MMC} | 381 | ${G_CROSS_COMPILER_JOPTION} ${G_UBOOT_DEF_CONFIG_MMC} |
382 | 382 | ||
383 | # make U-Boot | 383 | # make U-Boot |
384 | make -C ${1} \ | 384 | make -C ${1} \ |
385 | CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 385 | CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
386 | ${G_CROSS_COMPILER_JOPTION} | 386 | ${G_CROSS_COMPILER_JOPTION} |
387 | 387 | ||
388 | if [ "${MACHINE}" = "smarcimx8m2g" ] || | 388 | if [ "${MACHINE}" = "smarcimx8m2g" ] || |
389 | [ "${MACHINE}" = "smarcimx8m4g" ]; then | 389 | [ "${MACHINE}" = "smarcimx8m4g" ]; then |
390 | cd ${DEF_SRC_DIR}/imx-atf | 390 | cd ${DEF_SRC_DIR}/imx-atf |
391 | LDFLAGS="" make CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 391 | LDFLAGS="" make CROSS_COMPILE=${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
392 | PLAT=imx8mq bl31 | 392 | PLAT=imx8mq bl31 |
393 | cd - | 393 | cd - |
394 | cp ${DEF_SRC_DIR}/imx-atf/build/imx8mq/release/bl31.bin \ | 394 | cp ${DEF_SRC_DIR}/imx-atf/build/imx8mq/release/bl31.bin \ |
395 | ${DEF_SRC_DIR}/imx-mkimage/iMX8M/bl31.bin | 395 | ${DEF_SRC_DIR}/imx-mkimage/iMX8M/bl31.bin |
396 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/signed_hdmi_imx8m.bin \ | 396 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/signed_hdmi_imx8m.bin \ |
397 | src/imx-mkimage/iMX8M/signed_hdmi_imx8m.bin | 397 | src/imx-mkimage/iMX8M/signed_hdmi_imx8m.bin |
398 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/signed_dp_imx8m.bin \ | 398 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/signed_dp_imx8m.bin \ |
399 | src/imx-mkimage/iMX8M/signed_dp_imx8m.bin | 399 | src/imx-mkimage/iMX8M/signed_dp_imx8m.bin |
400 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_1d_imem.bin \ | 400 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_1d_imem.bin \ |
401 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_1d_imem.bin | 401 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_1d_imem.bin |
402 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_1d_dmem.bin \ | 402 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_1d_dmem.bin \ |
403 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_1d_dmem.bin | 403 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_1d_dmem.bin |
404 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_2d_imem.bin \ | 404 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_2d_imem.bin \ |
405 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_2d_imem.bin | 405 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_2d_imem.bin |
406 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_2d_dmem.bin \ | 406 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/lpddr4_pmu_train_2d_dmem.bin \ |
407 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_2d_dmem.bin | 407 | src/imx-mkimage/iMX8M/lpddr4_pmu_train_2d_dmem.bin |
408 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/soc.mak \ | 408 | cp ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/soc.mak \ |
409 | src/imx-mkimage/iMX8M/ | 409 | src/imx-mkimage/iMX8M/ |
410 | cp ${1}/u-boot.bin ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ | 410 | cp ${1}/u-boot.bin ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ |
411 | cp ${1}/u-boot-nodtb.bin ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ | 411 | cp ${1}/u-boot-nodtb.bin ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ |
412 | cp ${1}/spl/u-boot-spl.bin ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ | 412 | cp ${1}/spl/u-boot-spl.bin ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ |
413 | cp ${1}/arch/arm/dts/${UBOOT_DTB} ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ | 413 | cp ${1}/arch/arm/dts/${UBOOT_DTB} ${DEF_SRC_DIR}/imx-mkimage/iMX8M/ |
414 | cp ${1}/tools/mkimage ${DEF_SRC_DIR}/imx-mkimage/iMX8M/mkimage_uboot | 414 | cp ${1}/tools/mkimage ${DEF_SRC_DIR}/imx-mkimage/iMX8M/mkimage_uboot |
415 | chown -R $USER:$USER ${DEF_SRC_DIR}/imx-mkimage | ||
415 | cd ${DEF_SRC_DIR}/imx-mkimage | 416 | cd ${DEF_SRC_DIR}/imx-mkimage |
416 | make SOC=iMX8M flash_evk | 417 | make SOC=iMX8M flash_evk |
417 | cp ${DEF_SRC_DIR}/imx-mkimage/iMX8M/flash.bin \ | 418 | cp ${DEF_SRC_DIR}/imx-mkimage/iMX8M/flash.bin \ |
418 | ${DEF_SRC_DIR}/imx-mkimage/${G_UBOOT_NAME_FOR_EMMC} | 419 | ${DEF_SRC_DIR}/imx-mkimage/${G_UBOOT_NAME_FOR_EMMC} |
419 | cp ${G_UBOOT_NAME_FOR_EMMC} ${2}/${G_UBOOT_NAME_FOR_EMMC} | 420 | cp ${G_UBOOT_NAME_FOR_EMMC} ${2}/${G_UBOOT_NAME_FOR_EMMC} |
420 | make SOC=iMX8M clean | 421 | make SOC=iMX8M clean |
421 | make SOC=iMX8M flash_dp_evk | 422 | make SOC=iMX8M flash_dp_evk |
422 | cp ${DEF_SRC_DIR}/imx-mkimage/iMX8M/flash.bin \ | 423 | cp ${DEF_SRC_DIR}/imx-mkimage/iMX8M/flash.bin \ |
423 | ${DEF_SRC_DIR}/imx-mkimage/${G_UBOOT_NAME_FOR_EMMC_DP} | 424 | ${DEF_SRC_DIR}/imx-mkimage/${G_UBOOT_NAME_FOR_EMMC_DP} |
424 | cp ${G_UBOOT_NAME_FOR_EMMC_DP} ${2}/${G_UBOOT_NAME_FOR_EMMC_DP} | 425 | cp ${G_UBOOT_NAME_FOR_EMMC_DP} ${2}/${G_UBOOT_NAME_FOR_EMMC_DP} |
425 | fi | 426 | fi |
426 | } | 427 | } |
427 | 428 | ||
428 | # clean U-Boot | 429 | # clean U-Boot |
429 | # $1 -- U-Boot dir path | 430 | # $1 -- U-Boot dir path |
430 | function clean_uboot() | 431 | function clean_uboot() |
431 | { | 432 | { |
432 | pr_info "Clean U-Boot" | 433 | pr_info "Clean U-Boot" |
433 | make ARCH=${ARCH_ARGS} -C ${1}/ mrproper | 434 | make ARCH=${ARCH_ARGS} -C ${1}/ mrproper |
434 | } | 435 | } |
435 | 436 | ||
436 | # verify the SD card | 437 | # verify the SD card |
437 | # $1 -- block device | 438 | # $1 -- block device |
438 | function check_sdcard() | 439 | function check_sdcard() |
439 | { | 440 | { |
440 | # Check that parameter is a valid block device | 441 | # Check that parameter is a valid block device |
441 | if [ ! -b "$1" ]; then | 442 | if [ ! -b "$1" ]; then |
442 | pr_error "$1 is not a valid block device, exiting" | 443 | pr_error "$1 is not a valid block device, exiting" |
443 | return 1 | 444 | return 1 |
444 | fi | 445 | fi |
445 | 446 | ||
446 | local dev=$(basename $1) | 447 | local dev=$(basename $1) |
447 | 448 | ||
448 | # Check that /sys/block/$dev exists | 449 | # Check that /sys/block/$dev exists |
449 | if [ ! -d /sys/block/$dev ]; then | 450 | if [ ! -d /sys/block/$dev ]; then |
450 | pr_error "Directory /sys/block/${dev} missing, exiting" | 451 | pr_error "Directory /sys/block/${dev} missing, exiting" |
451 | return 1 | 452 | return 1 |
452 | fi | 453 | fi |
453 | 454 | ||
454 | # Get device parameters | 455 | # Get device parameters |
455 | local removable=$(cat /sys/block/${dev}/removable) | 456 | local removable=$(cat /sys/block/${dev}/removable) |
456 | local block_size=$(cat /sys/class/block/${dev}/queue/physical_block_size) | 457 | local block_size=$(cat /sys/class/block/${dev}/queue/physical_block_size) |
457 | local size_bytes=$((${block_size}*$(cat /sys/class/block/${dev}/size))) | 458 | local size_bytes=$((${block_size}*$(cat /sys/class/block/${dev}/size))) |
458 | local size_gib=$(bc <<< "scale=1; ${size_bytes}/(1024*1024*1024)") | 459 | local size_gib=$(bc <<< "scale=1; ${size_bytes}/(1024*1024*1024)") |
459 | 460 | ||
460 | # Non removable SD card readers require additional check | 461 | # Non removable SD card readers require additional check |
461 | if [ "${removable}" != "1" ]; then | 462 | if [ "${removable}" != "1" ]; then |
462 | local drive=$(udisksctl info -b /dev/${dev}|grep "Drive:"|cut -d"'" -f 2) | 463 | local drive=$(udisksctl info -b /dev/${dev}|grep "Drive:"|cut -d"'" -f 2) |
463 | local mediaremovable=$(gdbus call --system --dest org.freedesktop.UDisks2 --object-path ${drive} \ | 464 | local mediaremovable=$(gdbus call --system --dest org.freedesktop.UDisks2 --object-path ${drive} \ |
464 | --method org.freedesktop.DBus.Properties.Get org.freedesktop.UDisks2.Drive MediaRemovable) | 465 | --method org.freedesktop.DBus.Properties.Get org.freedesktop.UDisks2.Drive MediaRemovable) |
465 | if [[ "${mediaremovable}" = *"true"* ]]; then | 466 | if [[ "${mediaremovable}" = *"true"* ]]; then |
466 | removable=1 | 467 | removable=1 |
467 | fi | 468 | fi |
468 | fi | 469 | fi |
469 | 470 | ||
470 | # Check that device is either removable or loop | 471 | # Check that device is either removable or loop |
471 | if [ "$removable" != "1" -a $(stat -c '%t' /dev/$dev) != ${LOOP_MAJOR} ]; then | 472 | if [ "$removable" != "1" -a $(stat -c '%t' /dev/$dev) != ${LOOP_MAJOR} ]; then |
472 | pr_error "$1 is not a removable device, exiting" | 473 | pr_error "$1 is not a removable device, exiting" |
473 | return 1 | 474 | return 1 |
474 | fi | 475 | fi |
475 | 476 | ||
476 | # Check that device is attached | 477 | # Check that device is attached |
477 | if [ ${size_bytes} -eq 0 ]; then | 478 | if [ ${size_bytes} -eq 0 ]; then |
478 | pr_error "$1 is not attached, exiting" | 479 | pr_error "$1 is not attached, exiting" |
479 | return 1 | 480 | return 1 |
480 | fi | 481 | fi |
481 | 482 | ||
482 | pr_info "Device: ${LPARAM_BLOCK_DEVICE}, ${size_gib}GiB" | 483 | pr_info "Device: ${LPARAM_BLOCK_DEVICE}, ${size_gib}GiB" |
483 | echo "=============================================" | 484 | echo "=============================================" |
484 | read -p "Press Enter to continue" | 485 | read -p "Press Enter to continue" |
485 | 486 | ||
486 | return 0 | 487 | return 0 |
487 | } | 488 | } |
488 | 489 | ||
489 | # make imx sdma firmware | 490 | # make imx sdma firmware |
490 | # $1 -- linux-firmware directory | 491 | # $1 -- linux-firmware directory |
491 | # $2 -- rootfs output dir | 492 | # $2 -- rootfs output dir |
492 | function make_imx_sdma_fw() { | 493 | function make_imx_sdma_fw() { |
493 | pr_info "Install imx sdma firmware" | 494 | pr_info "Install imx sdma firmware" |
494 | install -d ${2}/lib/firmware/imx/sdma | 495 | install -d ${2}/lib/firmware/imx/sdma |
495 | install -m 0644 ${1}/LICENSE.sdma_firmware ${2}/lib/firmware/ | 496 | install -m 0644 ${1}/LICENSE.sdma_firmware ${2}/lib/firmware/ |
496 | } | 497 | } |
497 | 498 | ||
498 | ################ commands ################ | 499 | ################ commands ################ |
499 | 500 | ||
500 | function cmd_make_deploy() | 501 | function cmd_make_deploy() |
501 | { | 502 | { |
502 | # get linaro toolchain | 503 | # get linaro toolchain |
503 | (( `ls ${G_CROSS_COMPILER_PATH} 2>/dev/null | wc -l` == 0 )) && { | 504 | (( `ls ${G_CROSS_COMPILER_PATH} 2>/dev/null | wc -l` == 0 )) && { |
504 | pr_info "Get and unpack cross compiler"; | 505 | pr_info "Get and unpack cross compiler"; |
505 | get_remote_file ${G_EXT_CROSS_COMPILER_LINK} \ | 506 | get_remote_file ${G_EXT_CROSS_COMPILER_LINK} \ |
506 | ${DEF_SRC_DIR}/${G_CROSS_COMPILER_ARCHIVE} | 507 | ${DEF_SRC_DIR}/${G_CROSS_COMPILER_ARCHIVE} |
507 | tar -xJf ${DEF_SRC_DIR}/${G_CROSS_COMPILER_ARCHIVE} \ | 508 | tar -xJf ${DEF_SRC_DIR}/${G_CROSS_COMPILER_ARCHIVE} \ |
508 | -C ${G_TOOLS_PATH}/ | 509 | -C ${G_TOOLS_PATH}/ |
509 | }; | 510 | }; |
510 | 511 | ||
511 | # get U-Boot repository | 512 | # get U-Boot repository |
512 | (( `ls ${G_UBOOT_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { | 513 | (( `ls ${G_UBOOT_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { |
513 | pr_info "Get U-Boot repository"; | 514 | pr_info "Get U-Boot repository"; |
514 | get_git_src ${G_UBOOT_GIT} ${G_UBOOT_BRANCH} \ | 515 | get_git_src ${G_UBOOT_GIT} ${G_UBOOT_BRANCH} \ |
515 | ${G_UBOOT_SRC_DIR} ${G_UBOOT_REV} | 516 | ${G_UBOOT_SRC_DIR} ${G_UBOOT_REV} |
516 | }; | 517 | }; |
517 | 518 | ||
518 | # get kernel repository | 519 | # get kernel repository |
519 | (( `ls ${G_LINUX_KERNEL_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { | 520 | (( `ls ${G_LINUX_KERNEL_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { |
520 | pr_info "Get kernel repository"; | 521 | pr_info "Get kernel repository"; |
521 | get_git_src ${G_LINUX_KERNEL_GIT} ${G_LINUX_KERNEL_BRANCH} \ | 522 | get_git_src ${G_LINUX_KERNEL_GIT} ${G_LINUX_KERNEL_BRANCH} \ |
522 | ${G_LINUX_KERNEL_SRC_DIR} ${G_LINUX_KERNEL_REV} | 523 | ${G_LINUX_KERNEL_SRC_DIR} ${G_LINUX_KERNEL_REV} |
523 | # patch kernel for SDMA module build | 524 | # patch kernel for SDMA module build |
524 | if [ "${MACHINE}" = "smarcimx8m2g" ] || | 525 | if [ "${MACHINE}" = "smarcimx8m2g" ] || |
525 | [ "${MACHINE}" = "smarcimx8m4g" ]; then | 526 | [ "${MACHINE}" = "smarcimx8m4g" ]; then |
526 | cd ${G_LINUX_KERNEL_SRC_DIR} | 527 | cd ${G_LINUX_KERNEL_SRC_DIR} |
527 | git am < ${G_EMBEDIAN_PATH}/patches/kernel/0001-smarcimx8m_defconfig-Compile-SDMA-as-kernel-modu.patch | 528 | git am < ${G_EMBEDIAN_PATH}/patches/kernel/0001-smarcimx8m_defconfig-Compile-SDMA-as-kernel-modu.patch |
528 | cd - | 529 | cd - |
529 | fi | 530 | fi |
530 | }; | 531 | }; |
531 | if [ ! -z "${G_IMXBOOT_GIT}" ]; then | 532 | if [ ! -z "${G_IMXBOOT_GIT}" ]; then |
532 | # get IMXBoot Source repository | 533 | # get IMXBoot Source repository |
533 | (( `ls ${G_IMXBOOT_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { | 534 | (( `ls ${G_IMXBOOT_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { |
534 | pr_info "Get imx-boot"; | 535 | pr_info "Get imx-boot"; |
535 | get_git_src ${G_IMXBOOT_GIT} \ | 536 | get_git_src ${G_IMXBOOT_GIT} \ |
536 | ${G_IMXBOOT_BRACH} ${G_IMXBOOT_SRC_DIR} ${G_IMXBOOT_REV} | 537 | ${G_IMXBOOT_BRACH} ${G_IMXBOOT_SRC_DIR} ${G_IMXBOOT_REV} |
537 | }; | 538 | }; |
538 | fi | 539 | fi |
539 | 540 | ||
540 | # get imx-atf repository | 541 | # get imx-atf repository |
541 | if [ ! -z "${G_IMX_ATF_GIT}" ]; then | 542 | if [ ! -z "${G_IMX_ATF_GIT}" ]; then |
542 | (( `ls ${G_IMX_ATF_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { | 543 | (( `ls ${G_IMX_ATF_SRC_DIR} 2>/dev/null | wc -l` == 0 )) && { |
543 | pr_info "Get IMX ATF repository"; | 544 | pr_info "Get IMX ATF repository"; |
544 | get_git_src ${G_IMX_ATF_GIT} ${G_IMX_ATF_BRANCH} \ | 545 | get_git_src ${G_IMX_ATF_GIT} ${G_IMX_ATF_BRANCH} \ |
545 | ${G_IMX_ATF_SRC_DIR} ${G_IMX_ATF_REV} | 546 | ${G_IMX_ATF_SRC_DIR} ${G_IMX_ATF_REV} |
546 | # patch imx-atf | 547 | # patch imx-atf |
547 | if [ "${MACHINE}" = "smarcimx8m2g" ] || | 548 | if [ "${MACHINE}" = "smarcimx8m2g" ] || |
548 | [ "${MACHINE}" = "smarcimx8m4g" ]; then | 549 | [ "${MACHINE}" = "smarcimx8m4g" ]; then |
549 | cd ${G_IMX_ATF_SRC_DIR} | 550 | cd ${G_IMX_ATF_SRC_DIR} |
550 | patch -p1 < ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/imx-atf/imx8m-atf-ddr-timing.patch | 551 | patch -p1 < ${G_EMBEDIAN_PATH}/smarcimx8mq/imx-boot-tools/imx-atf/imx8m-atf-ddr-timing.patch |
551 | cd - | 552 | cd - |
552 | fi | 553 | fi |
553 | }; | 554 | }; |
554 | fi | 555 | fi |
555 | return 0 | 556 | return 0 |
556 | } | 557 | } |
557 | 558 | ||
558 | function cmd_make_rootfs() | 559 | function cmd_make_rootfs() |
559 | { | 560 | { |
560 | make_prepare; | 561 | make_prepare; |
561 | 562 | ||
562 | # make debian weston backend rootfs for imx8 family | 563 | # make debian weston backend rootfs for imx8 family |
563 | cd ${G_ROOTFS_DIR} | 564 | cd ${G_ROOTFS_DIR} |
564 | make_debian_weston_rootfs ${G_ROOTFS_DIR} | 565 | make_debian_weston_rootfs ${G_ROOTFS_DIR} |
565 | cd - | 566 | cd - |
566 | 567 | ||
567 | # pack rootfs | 568 | # pack rootfs |
568 | make_tarball ${G_ROOTFS_DIR} ${G_ROOTFS_TARBALL_PATH} | 569 | make_tarball ${G_ROOTFS_DIR} ${G_ROOTFS_TARBALL_PATH} |
569 | } | 570 | } |
570 | 571 | ||
571 | function cmd_make_uboot() | 572 | function cmd_make_uboot() |
572 | { | 573 | { |
573 | make_uboot ${G_UBOOT_SRC_DIR} ${PARAM_OUTPUT_DIR} | 574 | make_uboot ${G_UBOOT_SRC_DIR} ${PARAM_OUTPUT_DIR} |
574 | } | 575 | } |
575 | 576 | ||
576 | function cmd_make_kernel() | 577 | function cmd_make_kernel() |
577 | { | 578 | { |
578 | make_kernel ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 579 | make_kernel ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
579 | ${G_LINUX_KERNEL_DEF_CONFIG} "${G_LINUX_DTB}" \ | 580 | ${G_LINUX_KERNEL_DEF_CONFIG} "${G_LINUX_DTB}" \ |
580 | ${G_LINUX_KERNEL_SRC_DIR} ${PARAM_OUTPUT_DIR} | 581 | ${G_LINUX_KERNEL_SRC_DIR} ${PARAM_OUTPUT_DIR} |
581 | } | 582 | } |
582 | 583 | ||
583 | function cmd_make_kernel_header_deb() | 584 | function cmd_make_kernel_header_deb() |
584 | { | 585 | { |
585 | make_kernel_headers_package \ | 586 | make_kernel_headers_package \ |
586 | ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 587 | ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
587 | ${G_LINUX_KERNEL_DEF_CONFIG} ${G_LINUX_KERNEL_SRC_DIR} \ | 588 | ${G_LINUX_KERNEL_DEF_CONFIG} ${G_LINUX_KERNEL_SRC_DIR} \ |
588 | ${PARAM_OUTPUT_DIR}/kernel-headers/kernel | 589 | ${PARAM_OUTPUT_DIR}/kernel-headers/kernel |
589 | 590 | ||
590 | } | 591 | } |
591 | 592 | ||
592 | function cmd_make_kmodules() | 593 | function cmd_make_kmodules() |
593 | { | 594 | { |
594 | rm -rf ${G_ROOTFS_DIR}/lib/modules/* | 595 | rm -rf ${G_ROOTFS_DIR}/lib/modules/* |
595 | 596 | ||
596 | make_kernel_modules ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 597 | make_kernel_modules ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
597 | ${G_LINUX_KERNEL_DEF_CONFIG} ${G_LINUX_KERNEL_SRC_DIR} \ | 598 | ${G_LINUX_KERNEL_DEF_CONFIG} ${G_LINUX_KERNEL_SRC_DIR} \ |
598 | ${G_ROOTFS_DIR} | 599 | ${G_ROOTFS_DIR} |
599 | 600 | ||
600 | install_kernel_modules ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ | 601 | install_kernel_modules ${G_CROSS_COMPILER_PATH}/${G_CROSS_COMPILER_PREFIX} \ |
601 | ${G_LINUX_KERNEL_DEF_CONFIG} \ | 602 | ${G_LINUX_KERNEL_DEF_CONFIG} \ |
602 | ${G_LINUX_KERNEL_SRC_DIR} ${G_ROOTFS_DIR} | 603 | ${G_LINUX_KERNEL_SRC_DIR} ${G_ROOTFS_DIR} |
603 | } | 604 | } |
604 | 605 | ||
605 | function cmd_make_rfs_tar() | 606 | function cmd_make_rfs_tar() |
606 | { | 607 | { |
607 | # pack rootfs | 608 | # pack rootfs |
608 | make_tarball ${G_ROOTFS_DIR} ${G_ROOTFS_TARBALL_PATH} | 609 | make_tarball ${G_ROOTFS_DIR} ${G_ROOTFS_TARBALL_PATH} |
609 | } | 610 | } |
610 | 611 | ||
611 | function cmd_make_sdcard() | 612 | function cmd_make_sdcard() |
612 | { | 613 | { |
613 | make_weston_sdcard ${PARAM_BLOCK_DEVICE} ${PARAM_OUTPUT_DIR} | 614 | make_weston_sdcard ${PARAM_BLOCK_DEVICE} ${PARAM_OUTPUT_DIR} |
614 | } | 615 | } |
615 | 616 | ||
616 | function cmd_make_firmware() { | 617 | function cmd_make_firmware() { |
617 | make_imx_sdma_fw ${G_IMX_SDMA_FW_SRC_DIR} ${G_ROOTFS_DIR} | 618 | make_imx_sdma_fw ${G_IMX_SDMA_FW_SRC_DIR} ${G_ROOTFS_DIR} |
618 | } | 619 | } |
619 | 620 | ||
620 | function cmd_make_clean() | 621 | function cmd_make_clean() |
621 | { | 622 | { |
622 | # clean kernel, dtb, modules | 623 | # clean kernel, dtb, modules |
623 | clean_kernel ${G_LINUX_KERNEL_SRC_DIR} | 624 | clean_kernel ${G_LINUX_KERNEL_SRC_DIR} |
624 | 625 | ||
625 | # clean U-Boot | 626 | # clean U-Boot |
626 | clean_uboot ${G_UBOOT_SRC_DIR} | 627 | clean_uboot ${G_UBOOT_SRC_DIR} |
627 | 628 | ||
628 | # delete tmp dirs and etc | 629 | # delete tmp dirs and etc |
629 | pr_info "Delete tmp dir ${G_TMP_DIR}" | 630 | pr_info "Delete tmp dir ${G_TMP_DIR}" |
630 | rm -rf ${G_TMP_DIR} | 631 | rm -rf ${G_TMP_DIR} |
631 | 632 | ||
632 | pr_info "Delete rootfs dir ${G_ROOTFS_DIR}" | 633 | pr_info "Delete rootfs dir ${G_ROOTFS_DIR}" |
633 | rm -rf ${G_ROOTFS_DIR} | 634 | rm -rf ${G_ROOTFS_DIR} |
634 | } | 635 | } |
635 | 636 | ||
636 | ################ main function ################ | 637 | ################ main function ################ |
637 | 638 | ||
638 | # test for root access support | 639 | # test for root access support |
639 | [ "$PARAM_CMD" != "deploy" ] && [ "$PARAM_CMD" != "bootloader" ] && | 640 | [ "$PARAM_CMD" != "deploy" ] && [ "$PARAM_CMD" != "bootloader" ] && |
640 | [ "$PARAM_CMD" != "kernel" ] && [ "$PARAM_CMD" != "modules" ] && | 641 | [ "$PARAM_CMD" != "kernel" ] && [ "$PARAM_CMD" != "modules" ] && |
641 | [ ${EUID} -ne 0 ] && { | 642 | [ ${EUID} -ne 0 ] && { |
642 | pr_error "this command must be run as root (or sudo/su)" | 643 | pr_error "this command must be run as root (or sudo/su)" |
643 | exit 1; | 644 | exit 1; |
644 | }; | 645 | }; |
645 | 646 | ||
646 | pr_info "Command: \"$PARAM_CMD\" start..." | 647 | pr_info "Command: \"$PARAM_CMD\" start..." |
647 | 648 | ||
648 | make_prepare | 649 | make_prepare |
649 | 650 | ||
650 | case $PARAM_CMD in | 651 | case $PARAM_CMD in |
651 | deploy ) | 652 | deploy ) |
652 | cmd_make_deploy | 653 | cmd_make_deploy |
653 | ;; | 654 | ;; |
654 | rootfs ) | 655 | rootfs ) |
655 | cmd_make_rootfs | 656 | cmd_make_rootfs |
656 | ;; | 657 | ;; |
657 | bootloader ) | 658 | bootloader ) |
658 | cmd_make_uboot | 659 | cmd_make_uboot |
659 | ;; | 660 | ;; |
660 | kernel ) | 661 | kernel ) |
661 | cmd_make_kernel | 662 | cmd_make_kernel |
662 | ;; | 663 | ;; |
663 | modules ) | 664 | modules ) |
664 | cmd_make_kmodules | 665 | cmd_make_kmodules |
665 | ;; | 666 | ;; |
666 | kernelheaders ) | 667 | kernelheaders ) |
667 | cmd_make_kernel_header_deb | 668 | cmd_make_kernel_header_deb |
668 | ;; | 669 | ;; |
669 | firmware ) | 670 | firmware ) |
670 | cmd_make_firmware | 671 | cmd_make_firmware |
671 | ;; | 672 | ;; |
672 | 673 | ||
673 | sdcard ) | 674 | sdcard ) |
674 | cmd_make_sdcard | 675 | cmd_make_sdcard |
675 | ;; | 676 | ;; |
676 | rtar ) | 677 | rtar ) |
677 | cmd_make_rfs_tar | 678 | cmd_make_rfs_tar |
678 | ;; | 679 | ;; |
679 | all ) | 680 | all ) |
680 | cmd_make_uboot && | 681 | cmd_make_uboot && |
681 | cmd_make_kernel && | 682 | cmd_make_kernel && |
682 | cmd_make_kmodules && | 683 | cmd_make_kmodules && |
683 | cmd_make_kernel_header_deb && | 684 | cmd_make_kernel_header_deb && |
684 | cmd_make_rootfs | 685 | cmd_make_rootfs |
685 | ;; | 686 | ;; |
686 | clean ) | 687 | clean ) |
687 | cmd_make_clean | 688 | cmd_make_clean |
688 | ;; | 689 | ;; |
689 | * ) | 690 | * ) |
690 | pr_error "Invalid input command: \"${PARAM_CMD}\""; | 691 | pr_error "Invalid input command: \"${PARAM_CMD}\""; |
691 | ;; | 692 | ;; |
692 | esac | 693 | esac |
693 | 694 | ||
694 | echo | 695 | echo |
695 | pr_info "Command: \"$PARAM_CMD\" end." | 696 | pr_info "Command: \"$PARAM_CMD\" end." |
696 | echo | 697 | echo |
697 | 698 |