123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- #!/bin/bash
- export PATH=$PATH:/opt/mips-mti-elf/2020.06-01/bin
- COMPILE_VENDOR=$(basename $(dirname $(pwd)))
- COMPLIE_BOARD=$(basename $(pwd))
- DEBUG_VERSION=debug
- VERSION="code01align"
- DATE=`date +%Y%m%d`
- CURPATH=.
- ROOTPATH=../../..
- OUTPATH=$ROOTPATH/out
- PREBUILDPATH=./Prebuilds
- BUILD_PROJECT_PATH=$ROOTPATH/build
- TARGETOUTPATH=./out
- SILICON_DATA_FILE=$OUTPATH/ddr-Monitor_SOC.bin
- SILICON_DATA_DB_FILE=$OUTPATH/ddr-Monitor_SOC.bin-DB
- BOOT_FILE=$OUTPATH/silicon_boot.bin
- PM_FILE=pm.bin
- SUPERBLK_FILE=super.bin
- SILICON_DATA_FILE_COMPRESSED=ddr-Monitor_SOC_compressed.bin
- SILICON_DATA_FILE_DB_COMPRESSED=ddr-Monitor_SOC_compressed.bin-DB
- DATA_FILE_COMPRESSED=temp_data_compressed.bin
- search_files_cal_call_check() {
- local dir="$1"
- for file in "$dir"/*; do
- if [ -d "$file" ]; then
- search_files_cal_call_check "$file"
- elif [ -f "$file" ] && [[ "$file" == *hv_cal_* ]] && [ -n "$(grep -l 'Hv_Drv_' "$file")" ]; then
- echo "$file has called func: Hv_Drv_"
- exit
- elif [ -f "$file" ] && [[ "$file" == *hv_cal_* ]] && [ -n "$(grep -l 'Hv_Mw_' "$file")" ]; then
- echo "$file has called func: Hv_Mw_"
- exit
- elif [ -f "$file" ] && [[ "$file" == *hv_cal_* ]] && [ -n "$(grep -l 'HvPlat_' "$file")" ]; then
- echo "$file has called func: HvPlat_"
- exit
- elif [ -f "$file" ] && [[ "$file" == *hv_cal_* ]] && [ -n "$(grep -l 'Hv_App_' "$file")" ]; then
- echo "$file has called func: Hv_App_"
- exit
- fi
- done
- }
- search_files_drv_call_check() {
- local dir="$1"
- for file in "$dir"/*; do
- if [ -d "$file" ]; then
- search_files_drv_call_check "$file"
- elif [ -f "$file" ] && [[ "$file" == *hv_drv_* ]] && [ -n "$(grep -l 'Hv_Mw_' "$file")" ]; then
- echo "$file has called func: Hv_Mw_"
- exit
- elif [ -f "$file" ] && [[ "$file" == *hv_drv_* ]] && [ -n "$(grep -l 'HvPlat_' "$file")" ]; then
- echo "$file has called func: HvPlat_"
- exit
- elif [ -f "$file" ] && [[ "$file" == *hv_drv_* ]] && [ -n "$(grep -l 'Hv_App_' "$file")" ]; then
- echo "$file has called func: Hv_App_"
- exit
- fi
- done
- }
- search_files_mw_call_check() {
- local dir="$1"
- for file in "$dir"/*; do
- if [ -d "$file" ]; then
- search_files_mw_call_check "$file"
- elif [ -f "$file" ] && [[ "$file" == *hv_mw_* ]] && [ -n "$(grep -l 'HvPlat_' "$file")" ]; then
- echo "$file has called func: HvPlat_"
- exit
- elif [ -f "$file" ] && [[ "$file" == *hv_mw_* ]] && [ -n "$(grep -l 'Hv_App_' "$file")" ]; then
- echo "$file has called func: Hv_App_"
- exit
- fi
- done
- }
- search_files_plat_file_check() {
- local dir="$1"
- for file in "$dir"/*; do
- if [ -d "$file" ]; then
- search_files_plat_file_check "$file"
- elif [ -f "$file" ] && [[ "$file" == *HvPlat* ]]; then
- echo "$file in sdk"
- exit
- fi
- done
- }
- search_files_plat_call_app() {
- local dir="$1"
- for file in "$dir"/*; do
- if [ -d "$file" ]; then
- search_files_plat_call_app "$file"
- elif [ -f "$file" ] && [[ "$file" == *HvPlat* ]] && [ -n "$(grep -l 'Hv_App_' "$file")" ]; then
- echo "$file has called func: Hv_App_"
- exit
- fi
- done
- }
- code_check(){
- cd $ROOTPATH/sdk/Driver
- search_files_cal_call_check "."
- search_files_drv_call_check "."
- search_files_mw_call_check "."
- search_files_plat_file_check "."
- cd -
- search_files_cal_call_check "."
- search_files_drv_call_check "."
- search_files_mw_call_check "."
- search_files_plat_call_app "."
- }
- cmake_project(){
- cd $BUILD_PROJECT_PATH
- bash project_config.sh $COMPILE_VENDOR $COMPLIE_BOARD ht7315
- make clean
- make $DEBUG_VERSION -j
- cd -
- if [ ! -f $SILICON_TEXT_RO_FILE ]; then
- echo "APP build fail, NO APP FILE-${SILICON_TEXT_RO_FILE}!"
- exit
- fi
- if [ ! -f $SILICON_DATA_FILE ]; then
- echo "APP build fail, NO APP FILE-${SILICON_DATA_FILE}!"
- exit
- fi
- return 0
- }
- get_git_revision(){
- GITREV=`git rev-parse --short HEAD`
- echo "GIT revision: $GITREV"
- }
- compressed_file_size(){
- FILE_SIZE=`wc -c < $1`
- echo "$1 size: $FILE_SIZE"
- echo "HIVIEW!" > hiview.bin
- echo $FILE_SIZE > size.bin
- cat hiview.bin size.bin > ${1}_size
- dd if=${1}_size of=${1}_size_aline32 ibs=32 conv=sync
- }
- pad_file(){
- echo "padding file"
- input_size=$(wc -c < $1)
- cp $1 $1_temp
- echo $input_size
- padding_size=$(($2-$input_size))
- cat $1_temp > $3
- echo $padding_size
- dd if=/dev/zero bs=1 count=$padding_size|tr "\000" "\377" >> $3
- }
- superblkOffset=$(printf "%d" 0)
- TEMP_CRC=$(printf "%x" 0)
- add_super_blk(){
- echo $1 $2 $3
- if [ "$3" = "0" ]; then
- echo "no padding for $2"
- cp $2 $2_padded;
- else
- echo "padding for $2"
- pad_file $2 $3 $2_padded
- fi
- echo -n "SBLK" >> $SUPERBLK_FILE
- string=$1
- result=0
- substring=${string:0:4}
- # 将每个字符转换为ASCII码值并拼接成32位的数
- for ((i=0; i<${#substring}; i++)); do
- char_code=$(printf "%d" "'${substring:i:1}")
- result=$(( (result << 8) | char_code ))
- done
- hex=$(printf "%08X" $result)
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}\x${hex:4:2}\x${hex:6:2}" >> $SUPERBLK_FILE
- length=`wc -c < $2`
- hex=$(printf "%08X" $length)
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}\x${hex:4:2}\x${hex:6:2}" >> $SUPERBLK_FILE
- hex=$(printf "%08X" $superblkOffset)
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}\x${hex:4:2}\x${hex:6:2}" >> $SUPERBLK_FILE
- length=`wc -c < $2_padded`
- superblkOffset=$(($superblkOffset+$length))
- echo $VERSION >> $SUPERBLK_FILE
- crc=$(cksum $2 | cut -f1 -d' ')
- hex=$(printf "%08X" $crc)
- TEMP_CRC=${hex}
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}\x${hex:4:2}\x${hex:6:2}" >> $SUPERBLK_FILE
- }
- pqOffset=$(printf "%d" 4096)
- add_pq_bin(){
- echo $1 $2 $3 $4
- echo "HEAD:add file $1"
- echo -n "HEAD" >> $TARGETOUTPATH/header.bin
- hex=$(printf "%04X" $3)
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}" >> $TARGETOUTPATH/header.bin
- hex=$(printf "%04X" $4)
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}" >> $TARGETOUTPATH/header.bin
- size=$(stat -c%s $PREBUILDPATH/$1)
- echo $size
- hex=$(printf "%08X" $size)
- echo -n -e "\x${hex:0:2}\x${hex:2:2}\x${hex:4:2}\x${hex:6:2}" >> $TARGETOUTPATH/header.bin
- echo $pqOffset
- hex=$(printf "%08X" $pqOffset)
- echo $hex
- echo -n -e "\x${hex:0:2}\x${hex:2:2}\x${hex:4:2}\x${hex:6:2}" >> $TARGETOUTPATH/header.bin
- offset=$((($size + 511) / 512 * 512))
- echo $offset
- hex=$(printf "%08X" $offset)
- echo $hex
- cp $PREBUILDPATH/$1 $TARGETOUTPATH/$1
- pad_file $TARGETOUTPATH/$1 $offset $TARGETOUTPATH/$1_pad
- pqOffset=$(($pqOffset+$offset))
- dd if=$TARGETOUTPATH/$1_pad of=$2 conv=notrunc oflag=append
- }
- find_multy_bin(){
- rm -rf $TARGETOUTPATH/$1.bin
- for ((i=1; i<=10; i++))
- do
- if [ -e $PREBUILDPATH/$1_$i.bin ]; then
- add_pq_bin $1_$i.bin $2 $3 $i
- else
- break
- fi
- done
- }
- find_pq_bin(){
- if [ -e $PREBUILDPATH/$1.bin ]; then
- echo "file $1"
- rm -rf $TARGETOUTPATH/$1.bin
- add_pq_bin $1.bin $2 $3 1
- elif [ -e $PREBUILDPATH/$1_1.bin ]; then
- echo " multy file $1"
- find_multy_bin $1 $2 $3
- else
- echo "no file $1"
- return;
- fi
- nodeOffset=$(($nodeOffset+16))
- }
- if [ "$1" = "nocompile" ]; then
- echo "$1"
- cd $BUILD_PROJECT_PATH
- bash project_config.sh $COMPILE_VENDOR $COMPLIE_BOARD ht7315
- cd -
- exit -1
- fi
- echo "vendor: $COMPILE_VENDOR"
- echo "board: $COMPLIE_BOARD"
- echo "date: $DATE"
- get_git_revision
- rm -rf $OUTPATH/Monitor_SOC_*.bin
- echo "code check******************************"
- code_check
- echo "Complie Bin*****************************"
- cmake_project
- if [ ! -x "$TARGETOUTPATH" ];then
- echo "$TARGETOUTPATH"
- mkdir $TARGETOUTPATH
- fi
- echo "Merge PQData*****************************"
- rm -rf $TARGETOUTPATH/temp_pq.bin
- rm -rf $TARGETOUTPATH/header.bin
- find_pq_bin pq_init_reg $TARGETOUTPATH/temp_pq.bin 1
- find_pq_bin dither $TARGETOUTPATH/temp_pq.bin 2
- find_pq_bin scl $TARGETOUTPATH/temp_pq.bin 3
- find_pq_bin ldc $TARGETOUTPATH/temp_pq.bin 4
- find_pq_bin od $TARGETOUTPATH/temp_pq.bin 5
- find_pq_bin contrast $TARGETOUTPATH/temp_pq.bin 6
- find_pq_bin yccm $TARGETOUTPATH/temp_pq.bin 7
- find_pq_bin sharpness $TARGETOUTPATH/temp_pq.bin 8
- find_pq_bin contrast_para $TARGETOUTPATH/temp_pq.bin 9
- find_pq_bin sharpness_para $TARGETOUTPATH/temp_pq.bin 10
- find_pq_bin gamma_t $TARGETOUTPATH/temp_pq.bin 11
- find_pq_bin gamma_d $TARGETOUTPATH/temp_pq.bin 12
- find_pq_bin osd_gmd $TARGETOUTPATH/temp_pq.bin 13
- find_pq_bin osd_gmi $TARGETOUTPATH/temp_pq.bin 14
- find_pq_bin wcg_cm $TARGETOUTPATH/temp_pq.bin 15
- find_pq_bin wcg_gmd $TARGETOUTPATH/temp_pq.bin 16
- find_pq_bin wcg_gmi $TARGETOUTPATH/temp_pq.bin 17
- find_pq_bin hdr $TARGETOUTPATH/temp_pq.bin 18
- find_pq_bin demura $TARGETOUTPATH/temp_pq.bin 19
- pad_file $TARGETOUTPATH/header.bin 4096 $TARGETOUTPATH/pad_header.bin
- cat $TARGETOUTPATH/pad_header.bin $TARGETOUTPATH/temp_pq.bin > $TARGETOUTPATH/temp_header_pq.bin
- echo "Merge PQData over*************************"
- echo "compress bin******************************"
- $PREBUILDPATH/LZSS e $SILICON_DATA_DB_FILE $TARGETOUTPATH/$SILICON_DATA_FILE_DB_COMPRESSED
- echo "compress bin"
- $PREBUILDPATH/LZSS e $SILICON_DATA_FILE $TARGETOUTPATH/$SILICON_DATA_FILE_COMPRESSED
- echo "compress bin"
- $PREBUILDPATH/LZSS e $TARGETOUTPATH/temp_header_pq.bin $TARGETOUTPATH/$DATA_FILE_COMPRESSED
- echo "compress bin over*************************"
- echo "Merge ALLBin*****************************"
- cp $OUTPATH/*.bin $TARGETOUTPATH/
- cp $OUTPATH/*.bin-DB $TARGETOUTPATH/
- cd $TARGETOUTPATH/
- compressed_file_size $SILICON_DATA_FILE_COMPRESSED
- compressed_file_size $SILICON_DATA_FILE_DB_COMPRESSED
- compressed_file_size $DATA_FILE_COMPRESSED
- pad_file $PM_FILE 32768 temp_pm.bin_padded
- cp temp_pm.bin_padded $SUPERBLK_FILE
- cat ${SILICON_DATA_FILE_COMPRESSED}_size_aline32 $SILICON_DATA_FILE_COMPRESSED > temp_silicon_data.bin
- echo d >> pmsb.bin
- pad_file pmsb.bin 36864 pmsb.bin_padded
- add_super_blk PMSB pmsb.bin_padded 36864
- add_super_blk BOOT silicon_boot.bin 61440
- add_super_blk BTBK silicon_boot.bin-DB 61440
- add_super_blk CODE temp_silicon_data.bin 1335296
- CODE_CRC=${TEMP_CRC}
- SHORT_CRC=${CODE_CRC: -4}
- LOGO_BIN_NAME=$(grep -w 'HV_PROJECT_CONFIG_LOGO_BIN_NAME' ../ProjectConfig.h | head -n 1 | awk -F' ' '{gsub(/[(]/,""); gsub(/[)]/,""); print $3}' | sed 's/\r$//' | tr -d '\r' | tr -d '"')
- if [ "$LOGO_BIN_NAME" = "" ]; then
- LOGO_BIN_NAME=Logo.bin
- fi
- if [ -e ../Prebuilds/${LOGO_BIN_NAME} ]; then
- echo $LOGO_BIN_NAME
- else
- echo ERROR:no $LOGO_BIN_NAME
- exit
- fi
- cp ../Prebuilds/${LOGO_BIN_NAME} ./Logo.bin
- add_super_blk LOGO Logo.bin 131072
- cat ${DATA_FILE_COMPRESSED}_size_aline32 $DATA_FILE_COMPRESSED > temp_pq_data.bin
- add_super_blk PQDA temp_pq_data.bin 405504
- cp ../Prebuilds/ConfigData.bin ./ConfigData.bin
- add_super_blk CFIG ConfigData.bin 65536
- pad_file ${SUPERBLK_FILE} 36864 ${SUPERBLK_FILE}_ota_padded
- touch null.bin
- add_super_blk FULL null.bin 0
- pad_file ${SUPERBLK_FILE} 36864 ${SUPERBLK_FILE}_full_padded
- cat ${SUPERBLK_FILE}_ota_padded silicon_boot.bin_padded silicon_boot.bin-DB_padded temp_silicon_data.bin > ../Monitor_SOC_${COMPILE_VENDOR}_${COMPLIE_BOARD}_${DATE}_GIT${GITREV}_OTA.bin
- #not pad pq and monitordata
- cat ${SUPERBLK_FILE}_full_padded silicon_boot.bin_padded silicon_boot.bin-DB_padded temp_silicon_data.bin_padded Logo.bin_padded temp_pq_data.bin > ../Monitor_SOC_${COMPILE_VENDOR}_${COMPLIE_BOARD}_${DATE}_GIT${GITREV}_FLASH.bin
- pad_file silicon_boot.bin 61440 silicon_boot.bin_padded
- pad_file silicon_boot.bin-DB 61440 silicon_boot.bin_padded-DB
- echo ${CODE_CRC}
- cat silicon_boot.bin_padded silicon_boot.bin_padded-DB temp_silicon_data.bin > ../USB-OTA.bin
- echo -n ${CODE_CRC} | xxd -r -p >> ../USB-OTA.bin
- cd -
- mv USB-OTA.bin $OUTPATH/His7315Upgrade.bin
- mv Monitor_SOC_* $OUTPATH/
- mv out $OUTPATH/compressed
- echo "Merge Bin Finish**********************"
|