1*4e66ef7fSJon Lin#!/bin/bash 2*4e66ef7fSJon Lin 3*4e66ef7fSJon LinDIR="$( cd "$( dirname "$0" )" && pwd )" 4*4e66ef7fSJon Linsrc_path=$1 5*4e66ef7fSJon Lindst_path=$2 6*4e66ef7fSJon Linsoc=$3 7*4e66ef7fSJon Linblock_size=$4 8*4e66ef7fSJon Linpage_size=$5 9*4e66ef7fSJon Linoob_size=$6 10*4e66ef7fSJon Linis_slc_nand=$7 11*4e66ef7fSJon Lin 12*4e66ef7fSJon Linddr= 13*4e66ef7fSJon Linspl= 14*4e66ef7fSJon Lin 15*4e66ef7fSJon Lintransfer_4K_2_2K=$DIR/tools/transfer_4K_2_2K.sh 16*4e66ef7fSJon Linrk_bch=$DIR/tools/rk_bch 17*4e66ef7fSJon Linmkimage=$DIR/../mkimage 18*4e66ef7fSJon Linupgrade_tool=$DIR/../upgrade_tool 19*4e66ef7fSJon Linalign_to_flash_block_size=$DIR/tools/align_to_flash_block_size.sh 20*4e66ef7fSJon Linboot_merger=$DIR/../boot_merger 21*4e66ef7fSJon Lin 22*4e66ef7fSJon Linfunction gen_idblock() 23*4e66ef7fSJon Lin{ 24*4e66ef7fSJon Lin $mkimage -n $soc -T rksd -d $1:$2 idblock1.img.temp > /dev/null 25*4e66ef7fSJon Lin echo $3": gen_idblock: success!" 26*4e66ef7fSJon Lin if [[ $is_slc_nand == 1 && $page_size == 4096 ]]; then 27*4e66ef7fSJon Lin $transfer_4K_2_2K idblock1.img.temp $3 28*4e66ef7fSJon Lin rm idblock1.img.temp 29*4e66ef7fSJon Lin else 30*4e66ef7fSJon Lin mv idblock1.img.temp $3 31*4e66ef7fSJon Lin fi 32*4e66ef7fSJon Lin} 33*4e66ef7fSJon Lin 34*4e66ef7fSJon Linfunction is_miniloader_or_update_or_parameter() 35*4e66ef7fSJon Lin{ 36*4e66ef7fSJon Lin ret=0 37*4e66ef7fSJon Lin ls $1 | grep "MiniLoaderAll.bin" > /dev/null 38*4e66ef7fSJon Lin if [ $? -eq 0 ] ;then 39*4e66ef7fSJon Lin $boot_merger --unpack $1 > /dev/null 40*4e66ef7fSJon Lin ddr=FlashData 41*4e66ef7fSJon Lin spl=FlashBoot 42*4e66ef7fSJon Lin gen_idblock $ddr $spl $src_path"/"idblock1.img 43*4e66ef7fSJon Lin is_img_and_gen_file_from_src_2_dst idblock1.img 44*4e66ef7fSJon Lin gen_idblock $ddr $spl $src_path"/"idblock2.img 45*4e66ef7fSJon Lin is_img_and_gen_file_from_src_2_dst idblock2.img 46*4e66ef7fSJon Lin gen_idblock $ddr $spl $src_path"/"idblock3.img 47*4e66ef7fSJon Lin is_img_and_gen_file_from_src_2_dst idblock3.img 48*4e66ef7fSJon Lin gen_idblock $ddr $spl $src_path"/"idblock4.img 49*4e66ef7fSJon Lin is_img_and_gen_file_from_src_2_dst idblock4.img 50*4e66ef7fSJon Lin rm $src_path"/"idblock*.img 51*4e66ef7fSJon Lin rm $ddr 52*4e66ef7fSJon Lin rm $spl 53*4e66ef7fSJon Lin ret=1 54*4e66ef7fSJon Lin fi 55*4e66ef7fSJon Lin 56*4e66ef7fSJon Lin ls $1 | grep "update" > /dev/null 57*4e66ef7fSJon Lin if [ $? -eq 0 ] ;then 58*4e66ef7fSJon Lin ret=1 59*4e66ef7fSJon Lin fi 60*4e66ef7fSJon Lin 61*4e66ef7fSJon Lin ls $1 | grep "parameter.txt" > /dev/null 62*4e66ef7fSJon Lin if [ $? -eq 0 ] ;then 63*4e66ef7fSJon Lin $upgrade_tool gpt $1 $src_path"/"gpt.img > /dev/null 64*4e66ef7fSJon Lin is_img_and_gen_file_from_src_2_dst gpt.img 65*4e66ef7fSJon Lin rm $src_path"/"gpt.img 66*4e66ef7fSJon Lin ret=1 67*4e66ef7fSJon Lin fi 68*4e66ef7fSJon Lin 69*4e66ef7fSJon Lin return $ret 70*4e66ef7fSJon Lin} 71*4e66ef7fSJon Lin 72*4e66ef7fSJon Linfunction is_img_and_gen_file_from_src_2_dst() 73*4e66ef7fSJon Lin{ 74*4e66ef7fSJon Lin ls $src_path"/"$1 | grep "img" > /dev/null 75*4e66ef7fSJon Lin if [ $? -eq 0 ] ;then 76*4e66ef7fSJon Lin $align_to_flash_block_size $src_path"/"$1 $dst_path"/"$1 $block_size 77*4e66ef7fSJon Lin if [ $is_slc_nand -eq 1 ] ;then 78*4e66ef7fSJon Lin $rk_bch $dst_path"/"$1 $dst_path"/"$1".bch" $page_size $oob_size 0 79*4e66ef7fSJon Lin mv $dst_path"/"$1".bch" $dst_path"/"$1 80*4e66ef7fSJon Lin echo "$src_path"/"$1: rk_bch: success!" 81*4e66ef7fSJon Lin fi 82*4e66ef7fSJon Lin fi 83*4e66ef7fSJon Lin} 84*4e66ef7fSJon Lin 85*4e66ef7fSJon Linif [ -f "$src_path" ]; then 86*4e66ef7fSJon Lin echo "input error, $src_path is a file!" 87*4e66ef7fSJon Lin exit 88*4e66ef7fSJon Linfi 89*4e66ef7fSJon Lin 90*4e66ef7fSJon Linif [ ! -x "$src_path" ]; then 91*4e66ef7fSJon Lin echo "input error, $src_path not exit!" 92*4e66ef7fSJon Lin exit 93*4e66ef7fSJon Linfi 94*4e66ef7fSJon Lin 95*4e66ef7fSJon Linif [[ $is_slc_nand != 0 && $is_slc_nand != 1 ]]; then 96*4e66ef7fSJon Lin echo "param is_slc_nand: $is_slc_nand not support!" 97*4e66ef7fSJon Lin echo "support:" 98*4e66ef7fSJon Lin echo " 1(for SLC Nand, 8 pins io)" 99*4e66ef7fSJon Lin echo " 0(others)" 100*4e66ef7fSJon Lin exit 101*4e66ef7fSJon Linfi 102*4e66ef7fSJon Lin 103*4e66ef7fSJon Linif [ $is_slc_nand -eq 1 ] ;then 104*4e66ef7fSJon Lin if [[ $oob_size != 64 && $oob_size != 128 && oob_size != 256 ]]; then 105*4e66ef7fSJon Lin echo "param oob_size: $oob_size not support!" 106*4e66ef7fSJon Lin echo "support:" 107*4e66ef7fSJon Lin echo " 64(B)" 108*4e66ef7fSJon Lin echo " 128(B)" 109*4e66ef7fSJon Lin echo " 256(B)" 110*4e66ef7fSJon Lin exit 111*4e66ef7fSJon Linfi 112*4e66ef7fSJon Linfi 113*4e66ef7fSJon Lin 114*4e66ef7fSJon Linif [[ $page_size != 2048 && $page_size != 4096 ]]; then 115*4e66ef7fSJon Lin echo "param page_size: $page_size not support!" 116*4e66ef7fSJon Lin echo "support:" 117*4e66ef7fSJon Lin echo " 2048(B)" 118*4e66ef7fSJon Lin echo " 4096(B)" 119*4e66ef7fSJon Lin exit 120*4e66ef7fSJon Linfi 121*4e66ef7fSJon Lin 122*4e66ef7fSJon Linif [[ $block_size != 128 && $block_size != 256 ]]; then 123*4e66ef7fSJon Lin echo "param block_size: $block_size not support!" 124*4e66ef7fSJon Lin echo "support:" 125*4e66ef7fSJon Lin echo " 128(KB)" 126*4e66ef7fSJon Lin echo " 256(KB)" 127*4e66ef7fSJon Lin exit 128*4e66ef7fSJon Linfi 129*4e66ef7fSJon Lin 130*4e66ef7fSJon Linif [[ $soc != "rk3308" && $soc != "rv1126" ]]; then 131*4e66ef7fSJon Lin echo "param soc: $soc not support!" 132*4e66ef7fSJon Lin echo "support:" 133*4e66ef7fSJon Lin echo " rk3308" 134*4e66ef7fSJon Lin echo " rv1126" 135*4e66ef7fSJon Lin exit 136*4e66ef7fSJon Linfi 137*4e66ef7fSJon Lin 138*4e66ef7fSJon Linif [ -x "$dst_path" ]; then 139*4e66ef7fSJon Lin rm -rf $dst_path 140*4e66ef7fSJon Linfi 141*4e66ef7fSJon Lin 142*4e66ef7fSJon Lindst_path=$dst_path"/"$page_size"B_"$block_size"KB" 143*4e66ef7fSJon Linif [[ $is_slc_nand == 1 ]]; then 144*4e66ef7fSJon Lin dst_path=$dst_path"_SLC" 145*4e66ef7fSJon Linelse 146*4e66ef7fSJon Lin dst_path=$dst_path"_SPI" 147*4e66ef7fSJon Linfi 148*4e66ef7fSJon Linmkdir -p $dst_path 149*4e66ef7fSJon Lin 150*4e66ef7fSJon Linfor file in `ls -a $src_path` 151*4e66ef7fSJon Lindo 152*4e66ef7fSJon Lin if [ -f $src_path"/"$file ] ;then 153*4e66ef7fSJon Lin is_miniloader_or_update_or_parameter $src_path"/"$file 154*4e66ef7fSJon Lin if [ $? -eq 0 ] ;then 155*4e66ef7fSJon Lin is_img_and_gen_file_from_src_2_dst $file 156*4e66ef7fSJon Lin fi 157*4e66ef7fSJon Lin fi 158*4e66ef7fSJon Lindone 159