From 9987b6f2e72e867f093623d03272638c178bf016 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Thu, 25 Jan 2024 10:24:32 +0800
Subject: [PATCH] Build:Bootloader:IGKBoard-IMX8MP:Add Cortex-M SDK build support

---
 bootloader/build.sh |   89 ++++++++++++++++++++++++++++++++------------
 1 files changed, 64 insertions(+), 25 deletions(-)

diff --git a/bootloader/build.sh b/bootloader/build.sh
index 921940a..664b894 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)
 
@@ -54,16 +57,21 @@
     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 CROSS_COMPILE=`jq -r ".bsp.cortexAtool" $CONF_FILE`
+    export MCORE_COMPILE=`jq -r ".bsp.cortexMtool" $CONF_FILE`
 
-    export SRCS="imx-atf uboot-imx imx-mkimage"
     export BRANCH=$BSP_VER
     export JOBS=`cat /proc/cpuinfo | grep processor | wc -l`
     export ARCH=arm
 
+    # i.MX6ULL only need uboot-imx
+    if [[ $BOARD =~ mx6ull ]] ; then
+        export SRCS="uboot-imx"
+        return ;
+    fi
+
+    export SRCS="uboot-imx imx-atf imx-mkimage"
     export_fmver
-    export SRCS="imx-atf uboot-imx imx-mkimage"
 
     if [[ $BOARD =~ mx8mp ]] ; then
 
@@ -99,16 +107,19 @@
         git clone $GIT_URL/$src.git -b $BRANCH --depth=1
 
         # do patch if patch file exist
-        PATCH_FILE=$PRJ_PATH/patches/$BOARD/$src-$BSP_VER.patch
-        if [ -s $PATCH_FILE ] ; then
+        patch_file=$PRJ_PATH/patches/$BOARD/$src-$BSP_VER.patch
+        if [ -s $patch_file ] ; then
             pr_warn "do patch for $src now..."
             cd $src
-            patch -p1 < $PATCH_FILE
+            patch -p1 < $patch_file
             cd -
         fi
-
     done
 
+    # i.MX6ULL only need uboot-imx
+    if [[ $BOARD =~ mx6ull ]] ; then
+        return ;
+    fi
 
     mkdir -p $FMW_PATH && cd $FMW_PATH
 
@@ -145,25 +156,29 @@
 function build_cortexM()
 {
     SRC=mcore-sdk
-    DEMO_PATH=boards/$MCORE_BOARD/multicore_examples/rpmsg_lite_str_echo_rtos/armgcc
+
+    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
@@ -171,22 +186,39 @@
     fi
 
     set -x
-    cp $DEMO_BIN $MKIMG_BIN_PATH/$MCORE_IMAGE
+    cp $DEMO_BIN $PRFX_PATH/$MCORE_IMAGE
     set +x
 }
 
 function build_uboot()
 {
     SRC=uboot-imx
+    patch_file=$PRJ_PATH/patches/$BOARD/$SRC-$BSP_VER.patch
+    defconfig=${BOARD}_defconfig
 
     pr_warn "start build $SRC"
     cd $PRJ_PATH/${SRC}
 
+    # do patch if not patched
+    if [ ! -s configs/$defconfig -a -s $patch_file ] ; then
+        pr_warn "do patch for $SRC now..."
+        patch -p1 < $patch_file
+    fi
+
     if [ ! -f .config ] ; then
         make ARCH=arm ${BOARD}_defconfig
     fi
-
     make -j${JOBS} CROSS_COMPILE=${CROSS_COMPILE} ARCH=arm
+
+    # i.MX6ULL only need uboot-imx
+    if [[ $BOARD =~ mx6ull ]] ; then
+        cp u-boot-dtb.imx u-boot-${BOARD}.imx
+        chmod a+x u-boot-${BOARD}.imx
+        set -x
+        cp u-boot-${BOARD}.imx $PRFX_PATH
+        set +x
+        return 0;
+    fi
 
     set -x
     cp u-boot.bin $MKIMG_BIN_PATH
@@ -264,9 +296,15 @@
     cd $PRJ_PATH
     mkdir -p $PRFX_PATH
 
-    build_atf
-    #build_cortexM
     build_uboot
+
+    # i.MX6ULL only need uboot-imx
+    if [[ ${BOARD} =~ mx6ull ]] ; then
+        return ;
+    fi
+
+    build_atf
+    build_cortexM
     build_imxboot
 }
 
@@ -280,7 +318,8 @@
 
     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
 }
 

--
Gitblit v1.9.1