From f5c330abb65b94a5fbdcd1e09977b9269402801c Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Thu, 04 Apr 2024 02:47:30 +0800
Subject: [PATCH] Driver:IGKBoard-All: Add x86_64 linux driver

---
 bootloader/build.sh |  143 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 121 insertions(+), 22 deletions(-)

diff --git a/bootloader/build.sh b/bootloader/build.sh
index e6468fc..90be466 100755
--- a/bootloader/build.sh
+++ b/bootloader/build.sh
@@ -1,5 +1,8 @@
 #!/bin/bash
 
+# Build Cortex-M FreeRTOS SDK or not
+#BUILD_MCORE=yes
+
 # this project absolute path
 PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
 
@@ -10,7 +13,10 @@
 PRFX_PATH=$PRJ_PATH/install
 
 # binaries finally install path if needed
-INST_PATH=/tftp
+#INST_PATH=/tftp
+
+# download taballs path
+TARBALL_PATH=$PRJ_PATH/tarballs
 
 # config file path
 CONF_FILE=$TOP_PATH/config.json
@@ -34,6 +40,51 @@
     echo -e "\033[40;32m $1 \033[0m"
 }
 
+# decompress a packet to destination path
+function do_unpack()
+{
+    tarball=$1
+    dstpath=`pwd`
+
+    if [[ $# == 2 ]] ; then
+        dstpath=$2
+    fi
+
+    pr_info "decompress $tarball => $dstpath"
+
+    mkdir -p $dstpath
+    case $tarball in
+        *.tar.gz)
+            tar -xzf $tarball -C $dstpath
+            ;;
+
+        *.tar.bz2)
+            tar -xjf $tarball -C $dstpath
+            ;;
+
+        *.tar.xz)
+            tar -xJf $tarball -C $dstpath
+            ;;
+
+        *.tar.zst)
+            tar -I zstd -xf $tarball -C $dstpath
+            ;;
+
+        *.tar)
+            tar -xf $tarball -C $dstpath
+            ;;
+
+        *.zip)
+            unzip -qo $tarball -d $dstpath
+            ;;
+
+        *)
+            pr_error "decompress Unsupport packet: $tarball"
+            return 1;
+            ;;
+    esac
+}
+
 # select firmware version by BSP version
 function export_fmver()
 {
@@ -53,9 +104,9 @@
 {
     export BOARD=`jq -r ".bsp.board" $CONF_FILE | tr 'A-Z' 'a-z'`
     export BSP_VER=`jq -r ".bsp.version" $CONF_FILE | tr 'A-Z' 'a-z'`
-    export GIT_URL=`jq -r ".bsp.giturl" $CONF_FILE | tr 'A-Z' 'a-z'`
-    export CROSS_COMPILE=`jq -r ".bsp.cortexAtool" $CONF_FILE | tr 'A-Z' 'a-z'`
-    export MCORE_COMPILE=`jq -r ".bsp.cortexMtool" $CONF_FILE | tr 'A-Z' 'a-z'`
+    export BSP_URL=`jq -r ".bsp.giturl" $CONF_FILE`
+    export CROSS_COMPILE=`jq -r ".bsp.cortexAtool" $CONF_FILE`
+    export MCORE_COMPILE=`jq -r ".bsp.cortexMtool" $CONF_FILE`
 
     export BRANCH=$BSP_VER
     export JOBS=`cat /proc/cpuinfo | grep processor | wc -l`
@@ -101,7 +152,20 @@
         fi
 
         pr_info "start fetch $src source code"
-        git clone $GIT_URL/$src.git -b $BRANCH --depth=1
+
+        if [[ $BSP_URL =~ github.com ]] ; then
+            git clone $BSP_URL/$src.git -b $BRANCH --depth=1
+        else
+            mkdir -p $TARBALL_PATH
+
+            # Download source code packet
+            if [ ! -s $TARBALL_PATH/$src.tar.xz ] ; then
+                wget $BSP_URL/imx/bsp/$BSP_VER/$src.tar.xz -P $TARBALL_PATH
+            fi
+
+            # decompress source code packet
+            do_unpack $TARBALL_PATH/$src.tar.xz
+        fi
 
         # do patch if patch file exist
         patch_file=$PRJ_PATH/patches/$BOARD/$src-$BSP_VER.patch
@@ -118,6 +182,35 @@
         return ;
     fi
 
+    # Download CortexM FreeRTOS SDK if needed
+    if [ "$BUILD_MCORE" == "yes" ] ; then
+
+        src=cortexm-sdk
+
+        cd $PRJ_PATH
+
+        if [ -d $src ] ; then
+            pr_info "$src source code fetched already"
+        else
+            pr_info "start fetch $src source code"
+
+            if [[ $BSP_URL =~ github.com ]] ; then
+                pr_error "INFO: Please download $BOARD CortexM SDK from https://mcuxpresso.nxp.com by manual."
+            else
+                pack=cortexm-sdk-${BOARD}
+
+                # Download source code packet
+                if [ ! -s $TARBALL_PATH/$pack.tar.gz ] ; then
+                    wget $BSP_URL/bsp/$BSP_VER/$pack.tar.gz -P $TARBALL_PATH
+                fi
+
+                # decompress source code packet
+                do_unpack $TARBALL_PATH/$pack.tar.gz $PRJ_PATH/$src
+            fi
+        fi
+    fi
+
+    # Download firmware from NXP official URL
     mkdir -p $FMW_PATH && cd $FMW_PATH
 
     for fmw in $FMWS
@@ -152,26 +245,30 @@
 # Cortex-M SDK download from https://mcuxpresso.nxp.com/ by manual
 function build_cortexM()
 {
-    SRC=mcore-sdk
-    DEMO_PATH=boards/$MCORE_BOARD/multicore_examples/rpmsg_lite_str_echo_rtos/armgcc
+    SRC=cortexm-sdk
+
+    if [ "$BUILD_MCORE" != "yes" ] ; then
+        pr_warn "Skip build Cortex-M core SDK source code '$SRC'"
+        return 0;
+    fi
+
+    if [[ $BOARD =~ mx8mp ]] ; then
+        EVK=evkmimx8mp
+    fi
+    DEMO_PATH=boards/$EVK/multicore_examples/rpmsg_lite_str_echo_rtos/armgcc
     DEMO_BIN=release/rpmsg_lite_str_echo_rtos.bin
-    export ARMGCC_DIR=$(echo $MCORE_COMPILE | sed 's\/bin/.*\\')
+    MCORE_IMAGE=cortexM-${BOARD}.bin
 
     if [ ! -d $PRJ_PATH/$SRC ] ; then
-        if [ "$MCORE_BUILD" == "yes" ] ; then
-            pr_error "INFO: Please download $BOARD SDK from https://mcuxpresso.nxp.com"
-            pr_error "      by manual and decompress it to folder '$SRC'"
-            exit;
-        else
-            pr_warn "Skip build Cortex-M core SDK source code '$SRC'"
-            return ;
-        fi
+        pr_error "INFO: Please download $BOARD SDK from https://mcuxpresso.nxp.com by manual and"
+        pr_error "      decompress it to folder '$PRJ_PATH/$SRC'"
+        exit;
     fi
 
     pr_warn "start build $SRC"
 
-    cd $PRJ_PATH/${SRC}
-    cd $DEMO_PATH
+    cd $PRJ_PATH/${SRC}/$DEMO_PATH
+    export ARMGCC_DIR=$(echo $MCORE_COMPILE | sed 's\/bin/.*\\')
 
     #bash clean.sh
     if [ ! -s $DEMO_BIN ] ; then
@@ -179,7 +276,7 @@
     fi
 
     set -x
-    cp $DEMO_BIN $MKIMG_BIN_PATH/$MCORE_IMAGE
+    cp $DEMO_BIN $PRFX_PATH/$MCORE_IMAGE
     set +x
 }
 
@@ -210,7 +307,7 @@
         set -x
         cp u-boot-${BOARD}.imx $PRFX_PATH
         set +x
-        return ;
+        return 0;
     fi
 
     set -x
@@ -298,7 +395,7 @@
 
     build_atf
     build_imxboot
-    #build_cortexM
+    build_cortexM
 }
 
 function do_install()
@@ -311,7 +408,7 @@
 
     if [[ -n "$INST_PATH" && -w $INST_PATH ]] ; then
         pr_info "install bootloader to '$INST_PATH'"
-        cp $PRFX_PATH/u-boot-${BOARD}.imx $INST_PATH
+        cp $PRFX_PATH/* $INST_PATH
         #sz $PRFX_PATH/u-boot-${BOARD}.imx
     fi
 }
@@ -324,6 +421,8 @@
     done
 
     rm -rf $PRJ_PATH/firmware
+    rm -rf $PRJ_PATH/cortexm-sdk
+    rm -rf $PRJ_PATH/tarballs
     rm -rf $PRFX_PATH
 }
 

--
Gitblit v1.9.1