318 lines
8.2 KiB
Bash
318 lines
8.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -e
|
||
|
|
|
||
|
|
cwd=$(dirname $(readlink -f $0))
|
||
|
|
cd ${cwd}
|
||
|
|
CMD_VERSION="2.0.0"
|
||
|
|
|
||
|
|
function msg_info()
|
||
|
|
{
|
||
|
|
echo -e "[$(basename $0):info] $1"
|
||
|
|
}
|
||
|
|
|
||
|
|
function msg_warn()
|
||
|
|
{
|
||
|
|
echo -e "[$(basename $0):warn] $1"
|
||
|
|
}
|
||
|
|
|
||
|
|
function msg_error()
|
||
|
|
{
|
||
|
|
echo -e "[$(basename $0):error] $1"
|
||
|
|
}
|
||
|
|
|
||
|
|
function msg_help()
|
||
|
|
{
|
||
|
|
echo "command format:"
|
||
|
|
echo " `basename $cwd`"
|
||
|
|
echo " -v|--version (Optional) view this version."
|
||
|
|
echo " -h|--help (Optional) view this help message."
|
||
|
|
echo " -c|--clean (Optional) clean."
|
||
|
|
echo " -e|--export (Optional) export include files."
|
||
|
|
echo " --main_sensor_iq (Optional) input main camera sensor's iq bin file."
|
||
|
|
echo " --second_sensor_iq (Optional) input secondary camera sensor's iq bin file."
|
||
|
|
echo " --cam_iqfile (Optional) input camera sensor IQ file."
|
||
|
|
echo " --meta_param (Optional) input meta parameters."
|
||
|
|
echo " --output (Optional) config output dir for meta.img"
|
||
|
|
echo " --rootfs_dir (Optional) the dir of make_meta tool install"
|
||
|
|
echo " --media_dir (Optional) the dir of meta header files install"
|
||
|
|
echo " --pc_tools_dir (Optional) the dir of make_meta_host tool install"
|
||
|
|
echo " --tiny_meta (Optional) the flag of using tiny meta"
|
||
|
|
exit 0
|
||
|
|
}
|
||
|
|
|
||
|
|
function export_header_files()
|
||
|
|
{
|
||
|
|
if [ -n "$1" ];then
|
||
|
|
mkdir -p "${1}/include"
|
||
|
|
cp -f ${cwd}/include/*.h $1/include
|
||
|
|
else
|
||
|
|
msg_error "use format: ./build_meta.sh --export --media_dir ./dir_for_meta_head"
|
||
|
|
fi
|
||
|
|
exit 0
|
||
|
|
}
|
||
|
|
|
||
|
|
function __chk_param()
|
||
|
|
{
|
||
|
|
for item in $BUILD_META_PARAMS; do
|
||
|
|
if [ "$item" = "$1" ];then
|
||
|
|
echo ""
|
||
|
|
return
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
echo "$1"
|
||
|
|
}
|
||
|
|
|
||
|
|
function chk_param()
|
||
|
|
{
|
||
|
|
BUILD_META_PARAMS="-v --version -h --help -c --clean --main_sensor_iq --second_sensor_iq -e --export --cam_iqfile --meta_param --output --rootfs_dir --media_dir --pc_tools_dir --tiny_meta"
|
||
|
|
|
||
|
|
local cnt
|
||
|
|
cnt=0
|
||
|
|
while [ $# -ne 0 ]
|
||
|
|
do
|
||
|
|
case $1 in
|
||
|
|
-e|--export)
|
||
|
|
msg_info "export include files"
|
||
|
|
BUILD_META_EXPORT_HEADER=YES
|
||
|
|
;;
|
||
|
|
-v|--version)
|
||
|
|
msg_info "V$CMD_VERSION"
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
-h|--help)
|
||
|
|
msg_help
|
||
|
|
;;
|
||
|
|
-c|--clean)
|
||
|
|
make -C ${cwd}/sensor_ae_awb_table clean
|
||
|
|
make -C ${cwd}/sensor_init clean
|
||
|
|
make -C ${cwd}/make_meta clean
|
||
|
|
make -C ${cwd}/zlib clean
|
||
|
|
rm -rf ${cwd}/meta.img
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
--second_sensor_iq)
|
||
|
|
SECONDARY_SENSOR_IQ_BIN="$2"
|
||
|
|
;;
|
||
|
|
--main_sensor_iq)
|
||
|
|
SENSOR_IQ_BIN="$2"
|
||
|
|
;;
|
||
|
|
--cam_iqfile)
|
||
|
|
shift
|
||
|
|
for item in $@; do
|
||
|
|
ret=$(__chk_param $item)
|
||
|
|
if [ "$ret"x = "x" ]; then
|
||
|
|
break
|
||
|
|
else
|
||
|
|
rk_camera_sensor_iqfiles="$rk_camera_sensor_iqfiles $ret"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
;;
|
||
|
|
--meta_param)
|
||
|
|
shift
|
||
|
|
for item in $@; do
|
||
|
|
if [ "${item%=*}" = "--meta_part_size" ]; then
|
||
|
|
META_PART_SIZE=${item#*=}
|
||
|
|
fi
|
||
|
|
ret=$(__chk_param $item)
|
||
|
|
if [ "$ret"x = "x" ]; then
|
||
|
|
break
|
||
|
|
else
|
||
|
|
rk_meta_param="$rk_meta_param $ret"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
;;
|
||
|
|
--output)
|
||
|
|
rk_project_output_image=$2
|
||
|
|
;;
|
||
|
|
--rootfs_dir)
|
||
|
|
rk_project_package_rootfs_dir=$2
|
||
|
|
;;
|
||
|
|
--media_dir)
|
||
|
|
rk_project_path_media=$2
|
||
|
|
;;
|
||
|
|
--pc_tools_dir)
|
||
|
|
rk_project_path_pc_tools=$2
|
||
|
|
;;
|
||
|
|
--tiny_meta)
|
||
|
|
rk_tiny_meta=$2
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
shift
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ "$BUILD_META_EXPORT_HEADER"x = "YES"x ];then
|
||
|
|
export_header_files $rk_project_path_media
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -f "$SENSOR_IQ_BIN" ];then
|
||
|
|
rk_camera_sensor_iqfiles="$SENSOR_IQ_BIN"
|
||
|
|
fi
|
||
|
|
if [ -f "$SECONDARY_SENSOR_IQ_BIN" ];then
|
||
|
|
if [ -z "$rk_camera_sensor_iqfiles" ];then
|
||
|
|
msg_error "not found main sensor iqbin"
|
||
|
|
msg_info " add --main_sensor_iq"
|
||
|
|
exit 1
|
||
|
|
else
|
||
|
|
rk_camera_sensor_iqfiles="$rk_camera_sensor_iqfiles $SECONDARY_SENSOR_IQ_BIN"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$rk_camera_sensor_iqfiles" -a ! "$rk_tiny_meta" = "y" ];then
|
||
|
|
msg_warn "invalid parameter"
|
||
|
|
msg_help
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
chk_param $@
|
||
|
|
|
||
|
|
build_target_image=meta.img
|
||
|
|
build_target_bin="${cwd}/make_meta/make_meta"
|
||
|
|
SENSOR_AE_AWB_TABLE="${cwd}/sensor_ae_awb_table/ae_awb_table.bin"
|
||
|
|
SENSOR_INIT_BIN="${cwd}/sensor_init/init_sensor.bin"
|
||
|
|
|
||
|
|
if [ ! "$rk_tiny_meta" = "y" ]; then
|
||
|
|
__META_CAMERA_NUMBERS=0
|
||
|
|
for item in $rk_camera_sensor_iqfiles; do
|
||
|
|
__META_CAMERA_NUMBERS=$(( __META_CAMERA_NUMBERS + 1 ))
|
||
|
|
case $__META_CAMERA_NUMBERS in
|
||
|
|
1)
|
||
|
|
if [ -f "$rk_project_path_media/isp_iqfiles/${item}" ];then
|
||
|
|
SENSOR_IQ_BIN="$rk_project_path_media/isp_iqfiles/${item}"
|
||
|
|
fi
|
||
|
|
;;
|
||
|
|
2)
|
||
|
|
if [ -f "$rk_project_path_media/isp_iqfiles/${item}" ];then
|
||
|
|
SECONDARY_SENSOR_IQ_BIN="$rk_project_path_media/isp_iqfiles/${item}"
|
||
|
|
fi
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
msg_error "Not Support camera numbers!!!"
|
||
|
|
exit 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ -z "$META_PART_SIZE" ];then
|
||
|
|
if [ $__META_CAMERA_NUMBERS -eq 2 ]; then
|
||
|
|
rk_meta_param="$rk_meta_param --meta_part_size=0xb0000"
|
||
|
|
fi
|
||
|
|
if [ $__META_CAMERA_NUMBERS -eq 1 ]; then
|
||
|
|
rk_meta_param="$rk_meta_param --meta_part_size=0x60000"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ $__META_CAMERA_NUMBERS -eq 2 ]; then
|
||
|
|
SECONDARY_SENSOR_INIT_BIN="${cwd}/sensor_init/init_secondary_sensor.bin"
|
||
|
|
else
|
||
|
|
SECONDARY_SENSOR_INIT_BIN=""
|
||
|
|
fi
|
||
|
|
|
||
|
|
msg_info "========================================"
|
||
|
|
msg_info "rk_camera_param=$rk_camera_param"
|
||
|
|
msg_info "rk_camera_sensor_iqfiles=${rk_camera_sensor_iqfiles}"
|
||
|
|
msg_info "rk_meta_param=$rk_meta_param"
|
||
|
|
msg_info "rk_project_output_image=$rk_project_output_image"
|
||
|
|
msg_info "rk_project_package_rootfs_dir=$rk_project_package_rootfs_dir"
|
||
|
|
msg_info "rk_project_path_media=$rk_project_path_media"
|
||
|
|
msg_info "rk_project_path_pc_tools=$rk_project_path_pc_tools"
|
||
|
|
msg_info "rk_tiny_meta=$rk_tiny_meta"
|
||
|
|
msg_info "SENSOR_IQ_BIN=$SENSOR_IQ_BIN"
|
||
|
|
msg_info "SECONDARY_SENSOR_IQ_BIN=$SECONDARY_SENSOR_IQ_BIN"
|
||
|
|
msg_info "========================================"
|
||
|
|
|
||
|
|
if [ -n "${rk_camera_param}" ];then
|
||
|
|
META_APP_PARAMETER=${rk_camera_param}
|
||
|
|
elif [ -n "${rk_meta_param}" ];then
|
||
|
|
META_APP_PARAMETER=${rk_meta_param}
|
||
|
|
else
|
||
|
|
META_APP_PARAMETER=""
|
||
|
|
fi
|
||
|
|
|
||
|
|
support_sensors="os02k10 sc301iot sc501ai sc230ai sc200ai sc3338 sc4336 gc2093 gc3003"
|
||
|
|
|
||
|
|
for item in $support_sensors
|
||
|
|
do
|
||
|
|
if [ -n "${SENSOR_IQ_BIN}" ];then
|
||
|
|
if basename $SENSOR_IQ_BIN | grep -i "$item"; then
|
||
|
|
export SENSOR_TARGET=$item
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -n "${SECONDARY_SENSOR_IQ_BIN}" ];then
|
||
|
|
if basename $SECONDARY_SENSOR_IQ_BIN | grep "$item"; then
|
||
|
|
export SECONDARY_SENSOR_TARGET=$item
|
||
|
|
META_APP_PARAMETER="$META_APP_PARAMETER --secondary_sensor_init=${SECONDARY_SENSOR_INIT_BIN}"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ -z "${SENSOR_TARGET}" ];then
|
||
|
|
msg_error "Not found main camera sensor config, please add [support_sensors] in $(basename $0)"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -n "${SECONDARY_SENSOR_IQ_BIN}" ];then
|
||
|
|
if [ -z "${SECONDARY_SENSOR_TARGET}" ];then
|
||
|
|
msg_error "Not found secondary camera sensor config, please add [support_sensors] in $(basename $0)"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
# get secondary camera sensor iq size
|
||
|
|
if [ -f "${SECONDARY_SENSOR_IQ_BIN}" ];then
|
||
|
|
SECONDARY_SENSOR_IQ_BIN_SIZE=`wc -c ${SECONDARY_SENSOR_IQ_BIN} | awk '{print $1}'`
|
||
|
|
META_APP_PARAMETER="$META_APP_PARAMETER --secondary_sensor_iq_bin=${SECONDARY_SENSOR_IQ_BIN}"
|
||
|
|
fi
|
||
|
|
fi # if [ ! "$rk_tiny_meta" = "y" ];
|
||
|
|
|
||
|
|
make -C ${cwd}/sensor_ae_awb_table
|
||
|
|
|
||
|
|
make -C ${cwd}/sensor_init main_sensor=$SENSOR_TARGET secondary_sensor=$SECONDARY_SENSOR_TARGET
|
||
|
|
|
||
|
|
make -C ${cwd}/zlib
|
||
|
|
|
||
|
|
make -C ${cwd}/make_meta
|
||
|
|
|
||
|
|
if [ -d "${rk_project_path_pc_tools}" ]; then
|
||
|
|
cp -f ${cwd}/make_meta/make_meta_host ${rk_project_path_pc_tools}/
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ "$rk_tiny_meta" = "y" ]; then
|
||
|
|
${cwd}/make_meta/make_meta_host --create \
|
||
|
|
--meta_path=${cwd}/${build_target_image} \
|
||
|
|
--cmdline="${CMDLINE}"
|
||
|
|
else
|
||
|
|
META_APP_PARAMETER="--create \
|
||
|
|
--meta_path=${cwd}/${build_target_image} \
|
||
|
|
--cmdline=${CMDLINE} \
|
||
|
|
--sensor_init=${SENSOR_INIT_BIN} \
|
||
|
|
--sensor_iq_bin=${SENSOR_IQ_BIN} \
|
||
|
|
--ae_awb_tab=${SENSOR_AE_AWB_TABLE} \
|
||
|
|
$META_APP_PARAMETER"
|
||
|
|
|
||
|
|
echo "command: ${cwd}/make_meta/make_meta_host $META_APP_PARAMETER"
|
||
|
|
${cwd}/make_meta/make_meta_host ${META_APP_PARAMETER}
|
||
|
|
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -f "${cwd}/${build_target_image}" ]; then
|
||
|
|
echo "Generate Camera meta data: ${build_target_image} "
|
||
|
|
|
||
|
|
if [ -n "${rk_project_output_image}" ]; then
|
||
|
|
mkdir -p "${rk_project_output_image}"
|
||
|
|
cp -f ${cwd}/${build_target_image} ${rk_project_output_image}/
|
||
|
|
fi
|
||
|
|
if [ -n "${rk_project_package_rootfs_dir}" ]; then
|
||
|
|
mkdir -p "${rk_project_package_rootfs_dir}/bin"
|
||
|
|
cp -f ${build_target_bin} ${rk_project_package_rootfs_dir}/bin/
|
||
|
|
fi
|
||
|
|
|
||
|
|
exit 0
|
||
|
|
else
|
||
|
|
msg_error "build meta data failed"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|