Files
Linux_Drivers/build/tools/common/spinand_tool/mkubiimg.sh
sam.xiang a4f213ceb0 [build] add cvitek build scripts
Change-Id: If63ce4a669e5d4d72b8e3b9253336dd99bf74c30
2023-03-10 20:35:59 +08:00

108 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
function usage ()
{
echo "Usage: ${selfname} Chip Pagesize Blocksize Dir Size Tool_path Res"
echo " Chip Chip name. "
echo " Pagesize NAND page size. 2k/4k/8k."
echo " Blocksize NAND block size. 128k/256k/1M "
echo " Dir The directory you want to make ubifs"
echo " Size This ubifs partition size in NAND. 48M, ... 50M"
echo " UBI Tool The path of mkfs.ubifs and ubinize"
echo " Res Reserve ubiimg and ubifs both (1:Yes 0:No(default))"
echo ""
echo "Example:"
echo " ${selfname} hi35xx 2k 128k osdrv/pub/rootfs 50M osdrv/pub/bin/pc 0"
echo ""
exit 0
}
###############################################################################
function run ()
{
local cmd=$1
echo "${cmd}"
msg=$(eval "${cmd}"); result=$?
echo ${msg}
[ ${result} == 0 ] || exit ${result}
}
###############################################################################
function hstrtol ()
{
local hstr=$1
local zoom=1
local result=$(echo "${hstr}" | awk '{printf "%d",$0}')
if [ "$(echo ${hstr} | grep '[Gg]')" == "${hstr}" ]; then
zoom=1073741824
elif [ "$(echo ${hstr} | grep '[Mm]')" == "${hstr}" ]; then
zoom=1048576
elif [ "$(echo ${hstr} | grep '[Kk]')" == "${hstr}" ]; then
zoom=1024
fi
echo $((${result} * ${zoom}))
}
selfname=$(basename $0)
if [ $# != 7 ] && [ $# != 6 ]; then
usage;
fi
hpagesize=${2}
pagesize=$(hstrtol ${hpagesize})
hblocksize=${3}
blocksize=$(hstrtol ${hblocksize})
rootdir=$(echo $(echo "${4} " | sed 's/\/ //'))
#rootfs=${rootdir##*/}
rootfs=rootfs
hpartsize=${5}
partsize=$(hstrtol ${hpartsize})
chip=${1}
if [ ! -d ${rootdir} ]; then
echo "Directory ${rootdir} not exist."
exit 1;
fi
LEB=$((${blocksize} - ${pagesize} * 2))
MAX_LEB_CNT=$((${partsize} / ${blocksize}))
###############################################################################
ubiimg=${rootfs}_${chip}_${hpagesize}_${hblocksize}_${hpartsize}.ubiimg
ubifsimg=${rootfs}_${chip}_${hpagesize}_${hblocksize}_${hpartsize}.ubifs
ubicfg=${rootfs}_${chip}_${hpagesize}_${hblocksize}_${hpartsize}.ubicfg
MKUBIFS=$(echo $(echo "${6} " | sed 's/\/ //'))/mkfs.ubifs
MKUBI=$(echo $(echo "${6} " | sed 's/\/ //'))/ubinize
chmod +x ${MKUBIFS}
chmod +x ${MKUBI}
run "${MKUBIFS} -F -d ${rootdir} -m ${pagesize} -o ${ubiimg} -e ${LEB} -c ${MAX_LEB_CNT}"
{
echo "[ubifs-volumn]"
echo "mode=ubi"
echo "image=${ubiimg}"
echo "vol_id=0"
echo "vol_type=dynamic"
echo "vol_alignment=1"
echo "vol_name=ubifs"
echo "vol_flags=autoresize"
echo ""
} > ${ubicfg}
run "${MKUBI} -o ${ubifsimg} -m ${pagesize} -p ${blocksize} ${ubicfg}"
echo "--------- ${ubifsimg} is prepared !!"
if [ ! -n "${7}" ] || [ ${7} = 0 ]; then
rm -f ${ubiimg} ${ubicfg}
exit 1;
fi
echo "--------- ${ubiimg} is prepared !!"
echo "--------- ${ubicfg} is prepared !!"