| | |
| | | #!/bin/bash |
| | | # This shell script used to install system tools |
| | | |
| | | # display in red |
| | | # this project absolute path |
| | | PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) |
| | | |
| | | # top project absolute path |
| | | TOP_PATH=$(realpath $PRJ_PATH/..) |
| | | |
| | | # config file path |
| | | CONF_FILE=$TOP_PATH/config.json |
| | | |
| | | # NXP document suggest cross compiler from ARM Developer: |
| | | # https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads |
| | | ARMTOOL_VER=10.3-2021.07 |
| | | |
| | | # shell script will exit once get command error |
| | | set -e |
| | | |
| | | #+-------------------------+ |
| | | #| Shell script functions | |
| | | #+-------------------------+ |
| | | |
| | | function pr_error() { |
| | | echo -e "\033[40;31m --E-- $1 \033[0m\n" |
| | | echo -e "\033[40;31m $1 \033[0m" |
| | | } |
| | | |
| | | # display in green |
| | | function pr_warn() { |
| | | echo -e "\033[40;33m $1 \033[0m" |
| | | } |
| | | |
| | | function pr_info() { |
| | | echo -e "\033[40;32m --I-- $1 \033[0m\n" |
| | | echo -e "\033[40;32m $1 \033[0m" |
| | | } |
| | | |
| | | if [ `id -u` != 0 ] ; then |
| | | echo "" |
| | | pr_error "This shell script must be excuted as root privilege" |
| | | exit; |
| | | fi |
| | | |
| | | function install_systools() |
| | | { |
| | |
| | | apt install -y $devtools |
| | | } |
| | | |
| | | |
| | | # NXP document suggest cross compiler from ARM Developer: |
| | | # https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads |
| | | function install_crosstool() |
| | | function install_crosstool_imx6() |
| | | { |
| | | ARMTOOL_VER=10.3-2021.07 |
| | | # Crosstool for Cortex-A download from ARM Developer |
| | | ARMTOOL_NAME=arm-none-linux-gnueabihf |
| | | CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-$ARMTOOL_NAME |
| | | CortexA_TAR=$CortexA_PACK.tar.xz |
| | | CortexA_URL=https://developer.arm.com/-/media/Files/downloads/gnu-a/$ARMTOOL_VER/binrel/ |
| | | CortexA_NAME=gcc-aarch32-$ARMTOOL_VER |
| | | |
| | | CortexM_PACK=gcc-arm-none-eabi-$ARMTOOL_VER-`uname -p`-linux |
| | | if [ -d /opt/$CortexA_NAME ] ; then |
| | | pr_info "Cortex-A crosstool /opt/$CortexA_NAME installed already, skip it" |
| | | else |
| | | if [ ! -s $CortexA_TAR ] ; then |
| | | pr_info "start download cross compiler from ARM Developer for Cortex-A core" |
| | | wget $CortexA_URL/$CortexA_TAR |
| | | fi |
| | | |
| | | pr_info "start decompress cross compiler for Cortex-A core" |
| | | tar -xJf $CortexA_TAR -C /opt |
| | | mv /opt/$CortexA_PACK /opt/$CortexA_NAME |
| | | /opt/$CortexA_NAME/bin/${ARMTOOL_NAME}-gcc -v |
| | | pr_info "cross compiler for Cortex-A installed to \"/opt/$CortexA_NAME\" successfully" |
| | | rm -f $CortexA_TAR |
| | | fi |
| | | } |
| | | |
| | | function install_crosstool_imx8() |
| | | { |
| | | # Crosstool for Cortex-M download from ARM Developer |
| | | ARMTOOL_NAME=arm-none-eabi |
| | | CortexM_PACK=gcc-$ARMTOOL_NAME-$ARMTOOL_VER-`uname -p`-linux |
| | | CortexM_TAR=$CortexM_PACK.tar.bz2 |
| | | CortexM_URL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/$ARMTOOL_VER/ |
| | | CortexM_NAME=gcc-cortexM-$ARMTOOL_VER |
| | | |
| | | # Crosstool for Cortex-M download from ARM Developer |
| | | |
| | | if [ -d /opt/$CortexM_NAME ] ; then |
| | | pr_info "Cortex-M crosstool /opt/$CortexM_NAME installed already, skip it" |
| | |
| | | |
| | | pr_info "start decompress cross compiler for Cortex-M core" |
| | | tar -xjf $CortexM_TAR -C /opt |
| | | mv /opt/gcc-arm-none-eabi-$ARMTOOL_VER /opt/$CortexM_NAME |
| | | rm -f $CortexM_TAR |
| | | |
| | | /opt/$CortexM_NAME/bin/arm-none-eabi-gcc -v |
| | | mv /opt/gcc-$ARMTOOL_NAME-$ARMTOOL_VER /opt/$CortexM_NAME |
| | | /opt/$CortexM_NAME/bin/$ARMTOOL_NAME-gcc -v |
| | | pr_info "cross compiler for Cortex-M installed to \"/opt/$CortexM_NAME\" successfully" |
| | | rm -f $CortexM_TAR |
| | | fi |
| | | |
| | | # Crosstool for Cortex-A download from ARM Developer |
| | | |
| | | CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-aarch64-none-linux-gnu |
| | | ARMTOOL_NAME=aarch64-none-linux-gnu |
| | | CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-$ARMTOOL_NAME |
| | | CortexA_TAR=$CortexA_PACK.tar.xz |
| | | CortexA_URL=https://developer.arm.com/-/media/Files/downloads/gnu-a/$ARMTOOL_VER/binrel/ |
| | | CortexA_NAME=gcc-aarch64-$ARMTOOL_VER |
| | |
| | | pr_info "start decompress cross compiler for Cortex-A core" |
| | | tar -xJf $CortexA_TAR -C /opt |
| | | mv /opt/$CortexA_PACK /opt/$CortexA_NAME |
| | | rm -f $CortexA_TAR |
| | | |
| | | /opt/$CortexA_NAME/bin/aarch64-none-linux-gnu-gcc -v |
| | | /opt/$CortexA_NAME/bin/$ARMTOOL_NAME-gcc -v |
| | | pr_info "cross compiler for Cortex-A installed to \"/opt/$CortexA_NAME\" successfully" |
| | | rm -f $CortexA_TAR |
| | | fi |
| | | } |
| | | |
| | | if [ `id -u` != 0 ] ; then |
| | | echo "" |
| | | set -e |
| | | pr_error "This shell script must be excuted as root privilege" |
| | | exit; |
| | | fi |
| | | |
| | | install_systools |
| | | |
| | | install_devtools |
| | | |
| | | install_crosstool |
| | | BOARD=`jq -r ".bsp.board" $CONF_FILE | tr 'A-Z' 'a-z'` |
| | | |
| | | if [[ $BOARD =~ mx6ull ]] ; then |
| | | install_crosstool_imx6 |
| | | else |
| | | install_crosstool_imx8 |
| | | fi |
| | | |