project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp: Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem. sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately. sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades. sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for fastboot. Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
325 lines
8.8 KiB
Bash
Executable File
325 lines
8.8 KiB
Bash
Executable File
#!/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 --boot_medium --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
|
|
make -C ${cwd}/mtd_updateEngeen 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
|
|
local tmp
|
|
tmp=${rk_meta_param##*--cmdline=}
|
|
CMDLINE=${tmp##*--cmdline}
|
|
CMDLINE=${CMDLINE%% --*}
|
|
tmp=${rk_meta_param##*--cmdline}
|
|
tmp=${tmp#*--}
|
|
rk_meta_param=${rk_meta_param%%--cmdline*}
|
|
rk_meta_param="${rk_meta_param} --$tmp"
|
|
echo "rk_meta_param=${rk_meta_param} --cmdline $CMDLINE"
|
|
;;
|
|
--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
|
|
;;
|
|
--boot_medium)
|
|
rk_boot_medium=$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_boot_medium=$rk_boot_medium"
|
|
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 sc231hai sc2336p"
|
|
|
|
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}/mtd_updateEngeen
|
|
|
|
#if [ "$rk_boot_medium" = "spi_nand" ]; then
|
|
# RK_META_IS_NAND_FLASH="YES"
|
|
#fi
|
|
make -C ${cwd}/make_meta IS_NAND_FLASH=$RK_META_IS_NAND_FLASH
|
|
|
|
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} \
|
|
--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} --cmdline="${CMDLINE}"
|
|
|
|
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
|