Commit 310baf574d4a85f50a3e0e92b4cb046ed9e1ba07

Authored by Eric Lee
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