mirror of https://github.com/OpenIPC/firmware.git
Add hi3516av300/hi3516cv500/hi3516dv300 osdrv
parent
ceaa45e136
commit
4eaff96ce4
|
@ -5,6 +5,7 @@ source "$BR2_EXTERNAL_HISILICON_PATH/package/fdk-aac-openipc/Config.in"
|
|||
source "$BR2_EXTERNAL_HISILICON_PATH/package/fwprintenv-openipc/Config.in"
|
||||
source "$BR2_EXTERNAL_HISILICON_PATH/package/gdbserver-lite/Config.in"
|
||||
source "$BR2_EXTERNAL_HISILICON_PATH/package/hisi_gpio/Config.in"
|
||||
source "$BR2_EXTERNAL_HISILICON_PATH/package/hisilicon-osdrv-hi3516cv500/Config.in"
|
||||
source "$BR2_EXTERNAL_HISILICON_PATH/package/hisilicon-osdrv-hi3516ev300/Config.in"
|
||||
source "$BR2_EXTERNAL_HISILICON_PATH/package/ipctool/Config.in"
|
||||
source "$BR2_EXTERNAL_HISILICON_PATH/package/lame-openipc/Config.in"
|
||||
|
|
|
@ -50,7 +50,7 @@ BR2_PACKAGE_FDK_AAC_OPENIPC=y
|
|||
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
|
||||
# BR2_PACKAGE_HASERL is not set
|
||||
BR2_PACKAGE_HISI_GPIO=y
|
||||
# BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500 is not set
|
||||
BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500=y
|
||||
BR2_PACKAGE_IPCTOOL=y
|
||||
BR2_PACKAGE_JSON_C=y
|
||||
BR2_PACKAGE_LAME_OPENIPC=y
|
||||
|
@ -65,7 +65,7 @@ BR2_PACKAGE_LIBEVENT_OPENIPC=y
|
|||
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
|
||||
BR2_PACKAGE_LIBOGG_OPENIPC=y
|
||||
BR2_PACKAGE_LIBYAML=y
|
||||
# BR2_PACKAGE_MAJESTIC_HI3516CV500 is not set
|
||||
BR2_PACKAGE_MAJESTIC_HI3516CV500=y
|
||||
BR2_PACKAGE_MBEDTLS_OPENIPC=y
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
|
||||
|
|
|
@ -50,7 +50,7 @@ BR2_PACKAGE_FDK_AAC_OPENIPC=y
|
|||
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
|
||||
# BR2_PACKAGE_HASERL is not set
|
||||
BR2_PACKAGE_HISI_GPIO=y
|
||||
# BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500 is not set
|
||||
BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500=y
|
||||
BR2_PACKAGE_IPCTOOL=y
|
||||
BR2_PACKAGE_JSON_C=y
|
||||
BR2_PACKAGE_LAME_OPENIPC=y
|
||||
|
@ -65,7 +65,7 @@ BR2_PACKAGE_LIBEVENT_OPENIPC=y
|
|||
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
|
||||
BR2_PACKAGE_LIBOGG_OPENIPC=y
|
||||
BR2_PACKAGE_LIBYAML=y
|
||||
# BR2_PACKAGE_MAJESTIC_HI3516CV500 is not set
|
||||
BR2_PACKAGE_MAJESTIC_HI3516CV500=y
|
||||
BR2_PACKAGE_MBEDTLS_OPENIPC=y
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
|
||||
|
|
|
@ -50,7 +50,7 @@ BR2_PACKAGE_FDK_AAC_OPENIPC=y
|
|||
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
|
||||
# BR2_PACKAGE_HASERL is not set
|
||||
BR2_PACKAGE_HISI_GPIO=y
|
||||
# BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500 is not set
|
||||
BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500=y
|
||||
BR2_PACKAGE_IPCTOOL=y
|
||||
BR2_PACKAGE_JSON_C=y
|
||||
BR2_PACKAGE_LAME_OPENIPC=y
|
||||
|
@ -65,7 +65,7 @@ BR2_PACKAGE_LIBEVENT_OPENIPC=y
|
|||
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
|
||||
BR2_PACKAGE_LIBOGG_OPENIPC=y
|
||||
BR2_PACKAGE_LIBYAML=y
|
||||
# BR2_PACKAGE_MAJESTIC_HI3516CV500 is not set
|
||||
BR2_PACKAGE_MAJESTIC_HI3516CV500=y
|
||||
BR2_PACKAGE_MBEDTLS_OPENIPC=y
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
|
||||
|
|
|
@ -5,6 +5,7 @@ include $(BR2_EXTERNAL_HISILICON_PATH)/package/gdbserver-lite/gdbserver-lite.mk
|
|||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/fdk-aac-openipc/fdk-aac-openipc.mk
|
||||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/fwprintenv-openipc/fwprintenv-openipc.mk
|
||||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/hisi_gpio/hisi_gpio.mk
|
||||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv500/hisilicon-osdrv-hi3516cv500.mk
|
||||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516ev300/hisilicon-osdrv-hi3516ev300.mk
|
||||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/ipctool/ipctool.mk
|
||||
include $(BR2_EXTERNAL_HISILICON_PATH)/package/lame-openipc/lame-openipc.mk
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
config BR2_PACKAGE_HISILICON_OSDRV_HI3516CV500
|
||||
bool "hisilicon-osdrv-hi3516cv500"
|
||||
help
|
||||
hisilicon-osdrv-hi3516cv500 - Hisilicon kernel modules and libs
|
||||
|
||||
https://openipc.org
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,66 @@
|
|||
#!/bin/sh
|
||||
|
||||
DAEMON="majestic"
|
||||
PIDFILE="/var/run/$DAEMON.pid"
|
||||
|
||||
DAEMON_ARGS=""
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
|
||||
|
||||
# The daemon does not create a pidfile, and use "-m" to instruct start-stop-daemon to create one.
|
||||
start() {
|
||||
logger -s -p daemon.info -t hisilicon "Check MAC for Xiongmai devices"
|
||||
if [ "$(fw_printenv -n ethaddr)" = "00:00:23:34:45:66" ]; then
|
||||
logger -s -p daemon.info -t hisilicon "The eth0 interface has a lousy MAC, let's try to change it.."
|
||||
XMMAC="$(ipcinfo --xm_mac)" && [ -n "${XMMAC}" ] && fw_setenv ethaddr ${XMMAC} && ifconfig eth0 hw ether ${XMMAC} && logger -s -p daemon.info -t hisilicon "The eth0 interface have new MAC - ${XMMAC}" && reboot -f
|
||||
else
|
||||
logger -s -p daemon.info -t hisilicon "The eth0 interface has a correct MAC - $(fw_printenv -n ethaddr)"
|
||||
fi
|
||||
#
|
||||
logger -s -p daemon.info -t hisilicon "Loading of kernel modules and initialization of the video system has started"
|
||||
export TZ=$(cat /etc/TZ)
|
||||
load_hisilicon -i
|
||||
#
|
||||
printf 'Starting %s: ' "$DAEMON"
|
||||
# shellcheck disable=SC2086 # we need the word splitting
|
||||
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \
|
||||
-- $DAEMON_ARGS
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
return "$status"
|
||||
}
|
||||
|
||||
stop() {
|
||||
printf 'Stopping %s: ' "$DAEMON"
|
||||
start-stop-daemon -K -q -p "$PIDFILE"
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
rm -f "$PIDFILE"
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
return "$status"
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart)
|
||||
"$1";;
|
||||
reload)
|
||||
# Restart, since there is no true "reload" feature.
|
||||
restart;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
esac
|
|
@ -0,0 +1,72 @@
|
|||
#!/bin/sh
|
||||
|
||||
#GPIO3_3 -> GPIO27 (3*8+3 = 27)
|
||||
#GPIO3_4 -> GPIO28 (3*8+4 = 28)
|
||||
|
||||
#(normal mode)
|
||||
ir_cut_enable()
|
||||
{
|
||||
# pin_mux export
|
||||
echo "27" > /sys/class/gpio/export; # GPIO3_3
|
||||
echo "28" > /sys/class/gpio/export; # GPIO3_4
|
||||
|
||||
# dir
|
||||
echo "out" > /sys/class/gpio/gpio27/direction;
|
||||
echo "out" > /sys/class/gpio/gpio28/direction;
|
||||
|
||||
# data, GPIO3_4: 0, GPIO3_3: 1 (normal mode)
|
||||
echo "1" > /sys/class/gpio/gpio27/value;
|
||||
echo "0" > /sys/class/gpio/gpio28/value;
|
||||
|
||||
#sleep 1s
|
||||
sleep 1;
|
||||
|
||||
# back to original
|
||||
echo "0" > /sys/class/gpio/gpio27/value;
|
||||
echo "0" > /sys/class/gpio/gpio28/value;
|
||||
|
||||
# pin_mux unexport
|
||||
echo "27" > /sys/class/gpio/unexport; # GPIO3_3
|
||||
echo "28" > /sys/class/gpio/unexport; # GPIO3_4
|
||||
}
|
||||
|
||||
# (ir mode)
|
||||
ir_cut_disable()
|
||||
{
|
||||
# pin_mux export
|
||||
echo "27" > /sys/class/gpio/export; # GPIO3_3
|
||||
echo "28" > /sys/class/gpio/export; # GPIO3_4
|
||||
|
||||
# dir
|
||||
echo "out" > /sys/class/gpio/gpio27/direction;
|
||||
echo "out" > /sys/class/gpio/gpio28/direction;
|
||||
|
||||
# data, GPIO3_4: 1, GPIO3_3: 0 (ir mode)
|
||||
echo "0" > /sys/class/gpio/gpio27/value;
|
||||
echo "1" > /sys/class/gpio/gpio28/value;
|
||||
|
||||
#sleep 1s
|
||||
sleep 1;
|
||||
|
||||
# back to original
|
||||
echo "0" > /sys/class/gpio/gpio27/value;
|
||||
echo "0" > /sys/class/gpio/gpio28/value;
|
||||
|
||||
# pin_mux unexport
|
||||
echo "27" > /sys/class/gpio/unexport; # GPIO3_3
|
||||
echo "28" > /sys/class/gpio/unexport; # GPIO3_4
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "ir mode : ./demo_config.sh 1";
|
||||
else
|
||||
if [ $1 -eq 0 ]; then
|
||||
echo "normal mode, ir_cut on"
|
||||
ir_cut_enable > /dev/null;
|
||||
fi
|
||||
|
||||
if [ $1 -eq 1 ]; then
|
||||
echo "ir mode, ir_cut off"
|
||||
ir_cut_disable > /dev/null;
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,335 @@
|
|||
#!/bin/sh
|
||||
# Useage: ./load3516av300 [ -r|-i|-a ] [ sensor0~1 ]
|
||||
# -r : rmmod all modules
|
||||
# -i : insmod all modules
|
||||
# -a : rmmod all moules and then insmod them
|
||||
# e.g: RAW: ./load3516av300 -i -sensor0 imx335 -sensor1 imx335
|
||||
# e.g: BT1120/DC : ./load3516av300 -i -sensor0 imx327 -sensor1 imx327 -osmem 128 -yuv0 1
|
||||
# e.g: BT656 : ./load3516av300 -i -sensor0 imx327 -sensor1 imx327 -osmem 128 -yuv0 2
|
||||
|
||||
####################Variables Definition##########################
|
||||
|
||||
SNS_TYPE0=imx335; # sensor type
|
||||
SNS_TYPE1=NULL; # sensor type
|
||||
YUV_TYPE0=0; # 0 -- raw, 1 -- bt1120/DC, 2 --bt656
|
||||
CHIP_TYPE=hi3516av300; # chip type
|
||||
#DDR start:0x80000000, kernel start:0x80000000, OS(128M); MMZ start:0x88000000
|
||||
mem_total=512 # 512M, total mem
|
||||
mem_start=0x80000000 # phy mem start
|
||||
os_mem_size=128 # 128M, os mem
|
||||
mmz_start=0x88000000; # mmz start addr
|
||||
mmz_size=384M; # 384M, mmz size
|
||||
##################################################################
|
||||
|
||||
report_error()
|
||||
{
|
||||
echo "******* Error: There's something wrong, please check! *****"
|
||||
exit 1
|
||||
}
|
||||
|
||||
insert_audio()
|
||||
{
|
||||
insmod hi3516cv500_aio.ko
|
||||
insmod hi3516cv500_ai.ko
|
||||
insmod hi3516cv500_ao.ko
|
||||
insmod hi3516cv500_aenc.ko
|
||||
insmod hi3516cv500_adec.ko
|
||||
insmod hi3516cv500_acodec.ko
|
||||
# insmod extdrv/hi_tlv320aic31.ko
|
||||
echo "insert audio"
|
||||
}
|
||||
|
||||
remove_audio()
|
||||
{
|
||||
rmmod hi3516cv500_acodec
|
||||
# rmmod hi_tlv320aic31.ko
|
||||
rmmod hi3516cv500_adec
|
||||
rmmod hi3516cv500_aenc
|
||||
rmmod hi3516cv500_ao
|
||||
rmmod hi3516cv500_ai
|
||||
rmmod hi3516cv500_aio
|
||||
|
||||
echo "remove audio"
|
||||
}
|
||||
|
||||
insert_isp()
|
||||
{
|
||||
insmod hi3516cv500_isp.ko
|
||||
}
|
||||
|
||||
insert_gyro()
|
||||
{
|
||||
insmod extdrv/hi_spi.ko
|
||||
insmod hi3516cv500_gyrodis.ko
|
||||
insmod hi3516cv500_motionfusion.ko
|
||||
insmod extdrv/motionsensor_mng.ko
|
||||
insmod extdrv/motionsensor_chip.ko
|
||||
}
|
||||
|
||||
remove_gyro()
|
||||
{
|
||||
rmmod motionsensor_chip
|
||||
rmmod motionsensor_mng
|
||||
rmmod hi3516cv500_motionfusion
|
||||
rmmod hi3516cv500_gyrodis
|
||||
rmmod hi_spi
|
||||
}
|
||||
|
||||
insert_ko()
|
||||
{
|
||||
# sys config
|
||||
insmod sys_config.ko chip=$CHIP_TYPE sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1, g_cmos_yuv_flag=$YUV_TYPE0
|
||||
|
||||
# driver load
|
||||
insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size || report_error
|
||||
# insmod hi_tzasc.ko
|
||||
insmod hi3516cv500_base.ko
|
||||
insmod hi3516cv500_sys.ko
|
||||
insmod hi3516cv500_tde.ko
|
||||
insmod hi3516cv500_rgn.ko
|
||||
insmod hi3516cv500_gdc.ko
|
||||
insmod hi3516cv500_vgs.ko
|
||||
insmod hi3516cv500_dis.ko
|
||||
insmod hi3516cv500_vi.ko
|
||||
insert_isp;
|
||||
insmod hi3516cv500_vpss.ko
|
||||
insmod hi3516cv500_vo.ko
|
||||
insmod hifb.ko video="hifb:vram0_size:16200" # default fb0:1080p
|
||||
|
||||
insmod hi3516cv500_chnl.ko
|
||||
insmod hi3516cv500_vedu.ko
|
||||
insmod hi3516cv500_rc.ko
|
||||
insmod hi3516cv500_venc.ko
|
||||
insmod hi3516cv500_h264e.ko
|
||||
insmod hi3516cv500_h265e.ko
|
||||
insmod hi3516cv500_jpege.ko
|
||||
insmod hi3516cv500_jpegd.ko
|
||||
insmod hi3516cv500_vfmw.ko
|
||||
insmod hi3516cv500_vdec.ko
|
||||
|
||||
insmod hi3516cv500_ive.ko save_power=0
|
||||
# insmod hi_ipcm.ko
|
||||
# nnie_max_tskbuf_num=64
|
||||
insmod hi3516cv500_nnie.ko nnie_save_power=1 nnie_max_tskbuf_num=32
|
||||
insmod extdrv/hi_pwm.ko
|
||||
insmod extdrv/hi_piris.ko
|
||||
insmod extdrv/hi_sensor_i2c.ko
|
||||
insmod extdrv/hi_sensor_spi.ko
|
||||
# insmod extdrv/hi_sil9136.ko norm=12 #1080P@30fps for umap7p
|
||||
# insmod extdrv/mpu_bosch.ko
|
||||
# insmod extdrv/hi_ssp_st7789.ko
|
||||
# insmod extdrv/hi_ssp_ota5182.ko
|
||||
# insmod extdrv/hi_serdes.ko
|
||||
insmod hi3516cv500_hdmi.ko
|
||||
|
||||
insert_audio
|
||||
|
||||
insmod hi_mipi_rx.ko
|
||||
# insmod hi_mipi_tx.ko
|
||||
# insmod hi_user.ko
|
||||
|
||||
# insert_gyro
|
||||
}
|
||||
|
||||
remove_ko()
|
||||
{
|
||||
# rmmod_gyro
|
||||
# rmmod hi_user
|
||||
remove_audio
|
||||
# rmmod hi_mipi_tx
|
||||
rmmod hi_mipi_rx
|
||||
# rmmod hi_serdes
|
||||
# rmmod hi_sil9136 &> /dev/null
|
||||
# rmmod hi_ssp_ota5182
|
||||
# rmmod hi_ssp_st7789
|
||||
rmmod hi_piris
|
||||
rmmod hi_pwm
|
||||
rmmod hi3516cv500_nnie
|
||||
# rmmod hi_ipcm
|
||||
rmmod hi3516cv500_ive
|
||||
rmmod hi3516cv500_jpegd
|
||||
rmmod hi3516cv500_vfmw
|
||||
rmmod hi3516cv500_vdec
|
||||
rmmod hi3516cv500_rc
|
||||
rmmod hi3516cv500_jpege
|
||||
rmmod hi3516cv500_h264e
|
||||
rmmod hi3516cv500_h265e
|
||||
rmmod hi3516cv500_venc
|
||||
rmmod hi3516cv500_vedu
|
||||
rmmod hi3516cv500_chnl
|
||||
rmmod hifb
|
||||
rmmod hi3516cv500_vo
|
||||
rmmod hi3516cv500_vpss
|
||||
rmmod hi3516cv500_isp
|
||||
rmmod hi3516cv500_vi
|
||||
rmmod hi3516cv500_gdc
|
||||
rmmod hi3516cv500_dis
|
||||
rmmod hi3516cv500_vgs
|
||||
rmmod hi3516cv500_rgn
|
||||
rmmod hi3516cv500_tde
|
||||
rmmod hi3516cv500_hdmi
|
||||
|
||||
rmmod hi_sensor_i2c &> /dev/null
|
||||
rmmod hi_sensor_spi &> /dev/null
|
||||
|
||||
# rmmod mpu_bosch
|
||||
rmmod hi3516cv500_sys
|
||||
rmmod hi3516cv500_base
|
||||
# rmmod hi_tzasc
|
||||
rmmod hi_osal
|
||||
rmmod sys_config
|
||||
}
|
||||
|
||||
sys_restore()
|
||||
{
|
||||
####################################################
|
||||
clkcfg_hi3516cv500.sh > /dev/null
|
||||
|
||||
# system configuration
|
||||
sysctl_hi3516cv500.sh # > /dev/null
|
||||
sns_config;
|
||||
}
|
||||
|
||||
load_usage()
|
||||
{
|
||||
echo "Usage: ./load3516av300 [-option] [sensor0~1]"
|
||||
echo "options:"
|
||||
echo " -i insert modules"
|
||||
echo " -r remove modules"
|
||||
echo " -a remove modules first, then insert modules"
|
||||
echo " -sensor sensor_name config sensor type [default: imx335]"
|
||||
echo " -total mem_size config total mem size [unit: M, default: 512]"
|
||||
echo " -osmem os_mem_size config os mem size [unit: M, default: 128]"
|
||||
echo " -h help information"
|
||||
echo -e "Available sensors: imx327 imx335 imx458"
|
||||
echo -e "for example: ./load3516av300 -i -sensor0 imx335 -sensor1 imx335\n"
|
||||
}
|
||||
|
||||
calc_mmz_info()
|
||||
{
|
||||
mmz_start=`echo "$mem_start $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1/1024/1024 + $2;
|
||||
}
|
||||
END { printf("0x%x00000\n", temp); }'`
|
||||
|
||||
mmz_size=`echo "$mem_total $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1 - $2;
|
||||
}
|
||||
END { printf("%dM\n", temp); }'`
|
||||
echo "mmz_start: $mmz_start, mmz_size: $mmz_size"
|
||||
}
|
||||
|
||||
######################parse arg###################################
|
||||
b_arg_sensor0=0
|
||||
b_arg_sensor1=0
|
||||
b_arg_yuv_type0=0
|
||||
b_arg_insmod=0
|
||||
b_arg_remove=0
|
||||
b_arg_restore=0
|
||||
b_arg_total_mem=0
|
||||
b_arg_os_mem=0
|
||||
|
||||
for arg in $@
|
||||
do
|
||||
if [ $b_arg_sensor0 -eq 1 ] ; then
|
||||
b_arg_sensor0=0;
|
||||
SNS_TYPE0=$arg;
|
||||
fi
|
||||
if [ $b_arg_sensor1 -eq 1 ] ; then
|
||||
b_arg_sensor1=0;
|
||||
SNS_TYPE1=$arg;
|
||||
fi
|
||||
if [ $b_arg_total_mem -eq 1 ]; then
|
||||
b_arg_total_mem=0;
|
||||
mem_total=$arg;
|
||||
|
||||
if [ -z $mem_total ]; then
|
||||
echo "[error] mem_total is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_os_mem -eq 1 ] ; then
|
||||
b_arg_os_mem=0;
|
||||
os_mem_size=$arg;
|
||||
|
||||
if [ -z $os_mem_size ]; then
|
||||
echo "[error] os_mem_size is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_yuv_type0 -eq 1 ] ; then
|
||||
b_arg_yuv_type0=0;
|
||||
YUV_TYPE0=$arg;
|
||||
fi
|
||||
|
||||
case $arg in
|
||||
"-i")
|
||||
b_arg_insmod=1;
|
||||
;;
|
||||
"-r")
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-a")
|
||||
b_arg_insmod=1;
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-h")
|
||||
load_usage;
|
||||
;;
|
||||
"-sensor0")
|
||||
b_arg_sensor0=1;
|
||||
;;
|
||||
"-sensor")
|
||||
b_arg_sensor0=1;
|
||||
;;
|
||||
"-sensor1")
|
||||
b_arg_sensor1=1;
|
||||
;;
|
||||
"-osmem")
|
||||
b_arg_os_mem=1;
|
||||
;;
|
||||
"-yuv0")
|
||||
b_arg_yuv_type0=1;
|
||||
;;
|
||||
"-total")
|
||||
b_arg_total_mem=1;
|
||||
;;
|
||||
"-restore")
|
||||
b_arg_restore=1;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
#######################parse arg end########################
|
||||
if [ $os_mem_size -ge $mem_total ] ; then
|
||||
echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]"
|
||||
exit;
|
||||
fi
|
||||
|
||||
calc_mmz_info;
|
||||
|
||||
#######################Action###############################
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
load_usage;
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
|
||||
if [ $b_arg_remove -eq 1 ]; then
|
||||
remove_ko;
|
||||
fi
|
||||
|
||||
if [ $b_arg_insmod -eq 1 ]; then
|
||||
insert_ko;
|
||||
fi
|
||||
|
||||
if [ $b_arg_restore -eq 1 ]; then
|
||||
sys_restore;
|
||||
fi
|
||||
|
|
@ -0,0 +1,325 @@
|
|||
#!/bin/sh
|
||||
# Useage: ./load3516cv500 [ -r|-i|-a ] [ sensor ]
|
||||
# -r : rmmod all modules
|
||||
# -i : insmod all modules
|
||||
# -a : rmmod all moules and then insmod them
|
||||
# e.g: RAW: ./load3516cv500 -i -sensor0 imx327 -sensor1 imx327
|
||||
# e.g: BT1120/DC : ./load3516cv500 -i -sensor0 imx327 -sensor1 imx327 -osmem 64 -yuv0 1
|
||||
# e.g: BT656 : ./load3516cv500 -i -sensor0 imx327 -sensor1 imx327 -osmem 64 -yuv0 2
|
||||
|
||||
####################Variables Definition##########################
|
||||
|
||||
|
||||
SNS_TYPE0=imx327; # sensor type
|
||||
SNS_TYPE1=NULL; # sensor type
|
||||
YUV_TYPE0=0; # 0 -- raw, 1 -- bt1120/DC, 2 --bt656
|
||||
CHIP_TYPE=hi3516cv500; # chip type
|
||||
|
||||
|
||||
#DDR start:0x80000000, kernel start:0x80000000, OS(64M); MMZ start:0x84000000
|
||||
mem_total=256 # 256M, total mem
|
||||
mem_start=0x80000000 # phy mem start
|
||||
os_mem_size=64 # 64M, os mem
|
||||
mmz_start=0x84000000; # mmz start addr
|
||||
mmz_size=192M; # 192M, mmz size
|
||||
##################################################################
|
||||
|
||||
report_error()
|
||||
{
|
||||
echo "******* Error: There's something wrong, please check! *****"
|
||||
exit 1
|
||||
}
|
||||
|
||||
insert_audio()
|
||||
{
|
||||
insmod hi3516cv500_aio.ko
|
||||
insmod hi3516cv500_ai.ko
|
||||
insmod hi3516cv500_ao.ko
|
||||
insmod hi3516cv500_aenc.ko
|
||||
insmod hi3516cv500_adec.ko
|
||||
insmod hi3516cv500_acodec.ko
|
||||
# insmod extdrv/hi_tlv320aic31.ko
|
||||
echo "insert audio"
|
||||
}
|
||||
|
||||
remove_audio()
|
||||
{
|
||||
rmmod hi3516cv500_acodec
|
||||
# rmmod hi_tlv320aic31.ko
|
||||
rmmod hi3516cv500_adec
|
||||
rmmod hi3516cv500_aenc
|
||||
rmmod hi3516cv500_ao
|
||||
rmmod hi3516cv500_ai
|
||||
rmmod hi3516cv500_aio
|
||||
|
||||
echo "remove audio"
|
||||
}
|
||||
|
||||
insert_isp()
|
||||
{
|
||||
insmod hi3516cv500_isp.ko
|
||||
}
|
||||
|
||||
insert_gyro()
|
||||
{
|
||||
insmod extdrv/hi_spi.ko
|
||||
insmod hi3516cv500_gyrodis.ko
|
||||
insmod hi3516cv500_motionfusion.ko
|
||||
insmod extdrv/motionsensor_mng.ko
|
||||
insmod extdrv/motionsensor_chip.ko
|
||||
}
|
||||
|
||||
remove_gyro()
|
||||
{
|
||||
rmmod motionsensor_chip
|
||||
rmmod motionsensor_mng
|
||||
rmmod hi3516cv500_motionfusion
|
||||
rmmod hi3516cv500_gyrodis
|
||||
rmmod hi_spi
|
||||
}
|
||||
|
||||
insert_ko()
|
||||
{
|
||||
# sys config
|
||||
insmod sys_config.ko chip=$CHIP_TYPE sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1, g_cmos_yuv_flag=$YUV_TYPE0
|
||||
|
||||
# driver load
|
||||
insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size || report_error
|
||||
# insmod hi_tzasc.ko
|
||||
insmod hi3516cv500_base.ko
|
||||
insmod hi3516cv500_sys.ko
|
||||
insmod hi3516cv500_tde.ko
|
||||
insmod hi3516cv500_rgn.ko
|
||||
insmod hi3516cv500_gdc.ko
|
||||
insmod hi3516cv500_vgs.ko
|
||||
insmod hi3516cv500_dis.ko
|
||||
insmod hi3516cv500_vi.ko
|
||||
insert_isp;
|
||||
insmod hi3516cv500_vpss.ko
|
||||
insmod hi3516cv500_vo.ko
|
||||
insmod hifb.ko video="hifb:vram0_size:16200" # default fb0:1080p
|
||||
|
||||
insmod hi3516cv500_chnl.ko
|
||||
insmod hi3516cv500_vedu.ko
|
||||
insmod hi3516cv500_rc.ko
|
||||
insmod hi3516cv500_venc.ko
|
||||
insmod hi3516cv500_h264e.ko
|
||||
insmod hi3516cv500_h265e.ko
|
||||
insmod hi3516cv500_jpege.ko
|
||||
|
||||
|
||||
insmod hi3516cv500_ive.ko save_power=0
|
||||
# insmod hi_ipcm.ko
|
||||
insmod hi3516cv500_nnie.ko
|
||||
insmod extdrv/hi_pwm.ko
|
||||
insmod extdrv/hi_piris.ko
|
||||
insmod extdrv/hi_sensor_i2c.ko
|
||||
insmod extdrv/hi_sensor_spi.ko
|
||||
# insmod extdrv/hi_sil9136.ko norm=12 #1080P@30fps for umap7p
|
||||
# insmod extdrv/mpu_bosch.ko
|
||||
|
||||
insert_audio
|
||||
|
||||
insmod hi_mipi_rx.ko
|
||||
# insmod hi_mipi_tx.ko
|
||||
# insmod hi_user.ko
|
||||
|
||||
# insert_gyro
|
||||
}
|
||||
|
||||
remove_ko()
|
||||
{
|
||||
# rmmod_gyro
|
||||
# rmmod hi_user
|
||||
remove_audio
|
||||
# rmmod hi_mipi_tx
|
||||
rmmod hi_mipi_rx
|
||||
#rmmod hi_sil9136 &> /dev/null
|
||||
rmmod hi_piris
|
||||
rmmod hi_pwm
|
||||
|
||||
rmmod hi3516cv500_nnie nnie_save_power=1 nnie_max_tskbuf_num=32
|
||||
# rmmod hi_ipcm
|
||||
rmmod hi3516cv500_ive
|
||||
rmmod hi3516cv500_rc
|
||||
rmmod hi3516cv500_jpege
|
||||
rmmod hi3516cv500_h264e
|
||||
rmmod hi3516cv500_h265e
|
||||
rmmod hi3516cv500_venc
|
||||
rmmod hi3516cv500_vedu
|
||||
rmmod hi3516cv500_chnl
|
||||
rmmod hifb
|
||||
rmmod hi3516cv500_vo
|
||||
rmmod hi3516cv500_vpss
|
||||
rmmod hi3516cv500_isp
|
||||
rmmod hi3516cv500_vi
|
||||
rmmod hi3516cv500_gdc
|
||||
rmmod hi3516cv500_dis
|
||||
rmmod hi3516cv500_vgs
|
||||
rmmod hi3516cv500_rgn
|
||||
rmmod hi3516cv500_tde
|
||||
|
||||
rmmod hi_sensor_i2c &> /dev/null
|
||||
rmmod hi_sensor_spi &> /dev/null
|
||||
|
||||
# rmmod mpu_bosch
|
||||
rmmod hi3516cv500_sys
|
||||
rmmod hi3516cv500_base
|
||||
# rmmod hi_tzasc
|
||||
rmmod hi_osal
|
||||
rmmod sys_config
|
||||
}
|
||||
|
||||
sys_restore()
|
||||
{
|
||||
####################################################
|
||||
clkcfg_hi3516cv500.sh > /dev/null
|
||||
|
||||
# system configuration
|
||||
sysctl_hi3516cv500.sh # > /dev/null
|
||||
sns_config;
|
||||
}
|
||||
|
||||
load_usage()
|
||||
{
|
||||
echo "Usage: ./load3516cv500 [-option] [sensor0]"
|
||||
echo "options:"
|
||||
echo " -i insert modules"
|
||||
echo " -r remove modules"
|
||||
echo " -a remove modules first, then insert modules"
|
||||
echo " -sensor sensor_name config sensor type [default: imx327]"
|
||||
echo " -total mem_size config total mem size [unit: M, default: 512]"
|
||||
echo " -osmem os_mem_size config os mem size [unit: M, default: 128]"
|
||||
echo " -h help information"
|
||||
echo -e "Available sensors: imx327"
|
||||
echo -e "for example: ./load3516cv500 -i -sensor0 imx327 -sensor1 imx327\n"
|
||||
}
|
||||
|
||||
calc_mmz_info()
|
||||
{
|
||||
mmz_start=`echo "$mem_start $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1/1024/1024 + $2;
|
||||
}
|
||||
END { printf("0x%x00000\n", temp); }'`
|
||||
|
||||
mmz_size=`echo "$mem_total $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1 - $2;
|
||||
}
|
||||
END { printf("%dM\n", temp); }'`
|
||||
echo "mmz_start: $mmz_start, mmz_size: $mmz_size"
|
||||
}
|
||||
|
||||
######################parse arg###################################
|
||||
b_arg_sensor0=0
|
||||
b_arg_sensor1=0
|
||||
b_arg_yuv_type0=0
|
||||
b_arg_insmod=0
|
||||
b_arg_remove=0
|
||||
b_arg_restore=0
|
||||
b_arg_total_mem=0
|
||||
b_arg_os_mem=0
|
||||
|
||||
for arg in $@
|
||||
do
|
||||
if [ $b_arg_sensor0 -eq 1 ] ; then
|
||||
b_arg_sensor0=0;
|
||||
SNS_TYPE0=$arg;
|
||||
fi
|
||||
if [ $b_arg_sensor1 -eq 1 ] ; then
|
||||
b_arg_sensor1=0;
|
||||
SNS_TYPE1=$arg;
|
||||
fi
|
||||
if [ $b_arg_total_mem -eq 1 ]; then
|
||||
b_arg_total_mem=0;
|
||||
mem_total=$arg;
|
||||
|
||||
if [ -z $mem_total ]; then
|
||||
echo "[error] mem_total is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_os_mem -eq 1 ] ; then
|
||||
b_arg_os_mem=0;
|
||||
os_mem_size=$arg;
|
||||
|
||||
if [ -z $os_mem_size ]; then
|
||||
echo "[error] os_mem_size is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_yuv_type0 -eq 1 ] ; then
|
||||
b_arg_yuv_type0=0;
|
||||
YUV_TYPE0=$arg;
|
||||
fi
|
||||
|
||||
case $arg in
|
||||
"-i")
|
||||
b_arg_insmod=1;
|
||||
;;
|
||||
"-r")
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-a")
|
||||
b_arg_insmod=1;
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-h")
|
||||
load_usage;
|
||||
;;
|
||||
"-sensor0")
|
||||
b_arg_sensor0=1;
|
||||
;;
|
||||
"-sensor")
|
||||
b_arg_sensor0=1;
|
||||
;;
|
||||
"-sensor1")
|
||||
b_arg_sensor1=1;
|
||||
;;
|
||||
"-osmem")
|
||||
b_arg_os_mem=1;
|
||||
;;
|
||||
"-yuv0")
|
||||
b_arg_yuv_type0=1;
|
||||
;;
|
||||
"-total")
|
||||
b_arg_total_mem=1;
|
||||
;;
|
||||
"-restore")
|
||||
b_arg_restore=1;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
#######################parse arg end########################
|
||||
if [ $os_mem_size -ge $mem_total ] ; then
|
||||
echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]"
|
||||
exit;
|
||||
fi
|
||||
|
||||
calc_mmz_info;
|
||||
|
||||
#######################Action###############################
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
load_usage;
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
|
||||
if [ $b_arg_remove -eq 1 ]; then
|
||||
remove_ko;
|
||||
fi
|
||||
|
||||
if [ $b_arg_insmod -eq 1 ]; then
|
||||
insert_ko;
|
||||
fi
|
||||
|
||||
if [ $b_arg_restore -eq 1 ]; then
|
||||
sys_restore;
|
||||
fi
|
||||
|
|
@ -0,0 +1,335 @@
|
|||
#!/bin/sh
|
||||
# Useage: ./load3516dv300 [ -r|-i|-a ] [ sensor0~1 ]
|
||||
# -r : rmmod all modules
|
||||
# -i : insmod all modules
|
||||
# -a : rmmod all moules and then insmod them
|
||||
# e.g: RAW: ./load3516dv300 -i -sensor0 imx335 -sensor1 imx335
|
||||
# e.g: BT1120/DC : ./load3516dv300 -i -sensor0 imx327 -sensor1 imx327 -osmem 128 -yuv0 1
|
||||
# e.g: BT656 : ./load3516dv300 -i -sensor0 imx327 -sensor1 imx327 -osmem 128 -yuv0 2
|
||||
|
||||
####################Variables Definition##########################
|
||||
|
||||
SNS_TYPE0=imx335; # sensor type
|
||||
SNS_TYPE1=NULL; # sensor type
|
||||
YUV_TYPE0=0; # 0 -- raw, 1 -- bt1120/DC, 2 --bt656
|
||||
CHIP_TYPE=hi3516dv300; # chip type
|
||||
#DDR start:0x80000000, kernel start:0x80000000, OS(128M); MMZ start:0x88000000
|
||||
mem_total=512 # 512M, total mem
|
||||
mem_start=0x80000000 # phy mem start
|
||||
os_mem_size=128 # 128M, os mem
|
||||
mmz_start=0x88000000; # mmz start addr
|
||||
mmz_size=384M; # 384M, mmz size
|
||||
##################################################################
|
||||
|
||||
report_error()
|
||||
{
|
||||
echo "******* Error: There's something wrong, please check! *****"
|
||||
exit 1
|
||||
}
|
||||
|
||||
insert_audio()
|
||||
{
|
||||
insmod hi3516cv500_aio.ko
|
||||
insmod hi3516cv500_ai.ko
|
||||
insmod hi3516cv500_ao.ko
|
||||
insmod hi3516cv500_aenc.ko
|
||||
insmod hi3516cv500_adec.ko
|
||||
insmod hi3516cv500_acodec.ko
|
||||
# insmod extdrv/hi_tlv320aic31.ko
|
||||
echo "insert audio"
|
||||
}
|
||||
|
||||
remove_audio()
|
||||
{
|
||||
rmmod hi3516cv500_acodec
|
||||
# rmmod hi_tlv320aic31.ko
|
||||
rmmod hi3516cv500_adec
|
||||
rmmod hi3516cv500_aenc
|
||||
rmmod hi3516cv500_ao
|
||||
rmmod hi3516cv500_ai
|
||||
rmmod hi3516cv500_aio
|
||||
|
||||
echo "remove audio"
|
||||
}
|
||||
|
||||
insert_isp()
|
||||
{
|
||||
insmod hi3516cv500_isp.ko
|
||||
}
|
||||
|
||||
insert_gyro()
|
||||
{
|
||||
insmod extdrv/hi_spi.ko
|
||||
insmod hi3516cv500_gyrodis.ko
|
||||
insmod hi3516cv500_motionfusion.ko
|
||||
insmod extdrv/motionsensor_mng.ko
|
||||
insmod extdrv/motionsensor_chip.ko
|
||||
}
|
||||
|
||||
remove_gyro()
|
||||
{
|
||||
rmmod motionsensor_chip
|
||||
rmmod motionsensor_mng
|
||||
rmmod hi3516cv500_motionfusion
|
||||
rmmod hi3516cv500_gyrodis
|
||||
rmmod hi_spi
|
||||
}
|
||||
|
||||
insert_ko()
|
||||
{
|
||||
# sys config
|
||||
insmod sys_config.ko chip=$CHIP_TYPE sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1, g_cmos_yuv_flag=$YUV_TYPE0
|
||||
|
||||
# driver load
|
||||
insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size || report_error
|
||||
# insmod hi_tzasc.ko
|
||||
insmod hi3516cv500_base.ko
|
||||
insmod hi3516cv500_sys.ko
|
||||
insmod hi3516cv500_tde.ko
|
||||
insmod hi3516cv500_rgn.ko
|
||||
insmod hi3516cv500_gdc.ko
|
||||
insmod hi3516cv500_vgs.ko
|
||||
insmod hi3516cv500_dis.ko
|
||||
insmod hi3516cv500_vi.ko
|
||||
insert_isp;
|
||||
insmod hi3516cv500_vpss.ko
|
||||
insmod hi3516cv500_vo.ko
|
||||
insmod hifb.ko video="hifb:vram0_size:16200" # default fb0:1080p
|
||||
|
||||
insmod hi3516cv500_chnl.ko
|
||||
insmod hi3516cv500_vedu.ko
|
||||
insmod hi3516cv500_rc.ko
|
||||
insmod hi3516cv500_venc.ko
|
||||
insmod hi3516cv500_h264e.ko
|
||||
insmod hi3516cv500_h265e.ko
|
||||
insmod hi3516cv500_jpege.ko
|
||||
insmod hi3516cv500_jpegd.ko
|
||||
insmod hi3516cv500_vfmw.ko
|
||||
insmod hi3516cv500_vdec.ko
|
||||
|
||||
insmod hi3516cv500_ive.ko save_power=0
|
||||
# insmod hi_ipcm.ko
|
||||
# nnie_max_tskbuf_num=64
|
||||
insmod hi3516cv500_nnie.ko nnie_save_power=1 nnie_max_tskbuf_num=32
|
||||
insmod extdrv/hi_pwm.ko
|
||||
insmod extdrv/hi_piris.ko
|
||||
insmod extdrv/hi_sensor_i2c.ko
|
||||
insmod extdrv/hi_sensor_spi.ko
|
||||
# insmod extdrv/hi_sil9136.ko norm=12 #1080P@30fps for umap7p
|
||||
# insmod extdrv/mpu_bosch.ko
|
||||
# insmod extdrv/hi_ssp_st7789.ko
|
||||
# insmod extdrv/hi_ssp_ota5182.ko
|
||||
# insmod extdrv/hi_serdes.ko
|
||||
insmod hi3516cv500_hdmi.ko
|
||||
|
||||
insert_audio
|
||||
|
||||
insmod hi_mipi_rx.ko
|
||||
# insmod hi_mipi_tx.ko
|
||||
# insmod hi_user.ko
|
||||
|
||||
# insert_gyro
|
||||
}
|
||||
|
||||
remove_ko()
|
||||
{
|
||||
# rmmod_gyro
|
||||
# rmmod hi_user
|
||||
remove_audio
|
||||
# rmmod hi_mipi_tx
|
||||
rmmod hi_mipi_rx
|
||||
# rmmod hi_serdes
|
||||
# rmmod hi_sil9136 &> /dev/null
|
||||
# rmmod hi_ssp_ota5182
|
||||
# rmmod hi_ssp_st7789
|
||||
rmmod hi_piris
|
||||
rmmod hi_pwm
|
||||
rmmod hi3516cv500_nnie
|
||||
# rmmod hi_ipcm
|
||||
rmmod hi3516cv500_ive
|
||||
rmmod hi3516cv500_jpegd
|
||||
rmmod hi3516cv500_vfmw
|
||||
rmmod hi3516cv500_vdec
|
||||
rmmod hi3516cv500_rc
|
||||
rmmod hi3516cv500_jpege
|
||||
rmmod hi3516cv500_h264e
|
||||
rmmod hi3516cv500_h265e
|
||||
rmmod hi3516cv500_venc
|
||||
rmmod hi3516cv500_vedu
|
||||
rmmod hi3516cv500_chnl
|
||||
rmmod hifb
|
||||
rmmod hi3516cv500_vo
|
||||
rmmod hi3516cv500_vpss
|
||||
rmmod hi3516cv500_isp
|
||||
rmmod hi3516cv500_vi
|
||||
rmmod hi3516cv500_gdc
|
||||
rmmod hi3516cv500_dis
|
||||
rmmod hi3516cv500_vgs
|
||||
rmmod hi3516cv500_rgn
|
||||
rmmod hi3516cv500_tde
|
||||
rmmod hi3516cv500_hdmi
|
||||
|
||||
rmmod hi_sensor_i2c &> /dev/null
|
||||
rmmod hi_sensor_spi &> /dev/null
|
||||
|
||||
# rmmod mpu_bosch
|
||||
rmmod hi3516cv500_sys
|
||||
rmmod hi3516cv500_base
|
||||
# rmmod hi_tzasc
|
||||
rmmod hi_osal
|
||||
rmmod sys_config
|
||||
}
|
||||
|
||||
sys_restore()
|
||||
{
|
||||
####################################################
|
||||
clkcfg_hi3516cv500.sh > /dev/null
|
||||
|
||||
# system configuration
|
||||
sysctl_hi3516cv500.sh # > /dev/null
|
||||
sns_config;
|
||||
}
|
||||
|
||||
load_usage()
|
||||
{
|
||||
echo "Usage: ./load3516dv300 [-option] [sensor0~1]"
|
||||
echo "options:"
|
||||
echo " -i insert modules"
|
||||
echo " -r remove modules"
|
||||
echo " -a remove modules first, then insert modules"
|
||||
echo " -sensor sensor_name config sensor type [default: imx335]"
|
||||
echo " -total mem_size config total mem size [unit: M, default: 512]"
|
||||
echo " -osmem os_mem_size config os mem size [unit: M, default: 128]"
|
||||
echo " -h help information"
|
||||
echo -e "Available sensors: imx327 imx335 os05a imx307"
|
||||
echo -e "for example: ./load3516dv300 -i -sensor0 imx335 -sensor1 imx335\n"
|
||||
}
|
||||
|
||||
calc_mmz_info()
|
||||
{
|
||||
mmz_start=`echo "$mem_start $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1/1024/1024 + $2;
|
||||
}
|
||||
END { printf("0x%x00000\n", temp); }'`
|
||||
|
||||
mmz_size=`echo "$mem_total $os_mem_size" |
|
||||
awk 'BEGIN { temp = 0; }
|
||||
{
|
||||
temp = $1 - $2;
|
||||
}
|
||||
END { printf("%dM\n", temp); }'`
|
||||
echo "mmz_start: $mmz_start, mmz_size: $mmz_size"
|
||||
}
|
||||
|
||||
######################parse arg###################################
|
||||
b_arg_sensor0=0
|
||||
b_arg_sensor1=0
|
||||
b_arg_yuv_type0=0
|
||||
b_arg_insmod=0
|
||||
b_arg_remove=0
|
||||
b_arg_restore=0
|
||||
b_arg_total_mem=0
|
||||
b_arg_os_mem=0
|
||||
|
||||
for arg in $@
|
||||
do
|
||||
if [ $b_arg_sensor0 -eq 1 ] ; then
|
||||
b_arg_sensor0=0;
|
||||
SNS_TYPE0=$arg;
|
||||
fi
|
||||
if [ $b_arg_sensor1 -eq 1 ] ; then
|
||||
b_arg_sensor1=0;
|
||||
SNS_TYPE1=$arg;
|
||||
fi
|
||||
if [ $b_arg_total_mem -eq 1 ]; then
|
||||
b_arg_total_mem=0;
|
||||
mem_total=$arg;
|
||||
|
||||
if [ -z $mem_total ]; then
|
||||
echo "[error] mem_total is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_os_mem -eq 1 ] ; then
|
||||
b_arg_os_mem=0;
|
||||
os_mem_size=$arg;
|
||||
|
||||
if [ -z $os_mem_size ]; then
|
||||
echo "[error] os_mem_size is null"
|
||||
exit;
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $b_arg_yuv_type0 -eq 1 ] ; then
|
||||
b_arg_yuv_type0=0;
|
||||
YUV_TYPE0=$arg;
|
||||
fi
|
||||
|
||||
case $arg in
|
||||
"-i")
|
||||
b_arg_insmod=1;
|
||||
;;
|
||||
"-r")
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-a")
|
||||
b_arg_insmod=1;
|
||||
b_arg_remove=1;
|
||||
;;
|
||||
"-h")
|
||||
load_usage;
|
||||
;;
|
||||
"-sensor0")
|
||||
b_arg_sensor0=1;
|
||||
;;
|
||||
"-sensor")
|
||||
b_arg_sensor0=1;
|
||||
;;
|
||||
"-sensor1")
|
||||
b_arg_sensor1=1;
|
||||
;;
|
||||
"-osmem")
|
||||
b_arg_os_mem=1;
|
||||
;;
|
||||
"-yuv0")
|
||||
b_arg_yuv_type0=1;
|
||||
;;
|
||||
"-total")
|
||||
b_arg_total_mem=1;
|
||||
;;
|
||||
"-restore")
|
||||
b_arg_restore=1;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
#######################parse arg end########################
|
||||
if [ $os_mem_size -ge $mem_total ] ; then
|
||||
echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]"
|
||||
exit;
|
||||
fi
|
||||
|
||||
calc_mmz_info;
|
||||
|
||||
#######################Action###############################
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
load_usage;
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
|
||||
if [ $b_arg_remove -eq 1 ]; then
|
||||
remove_ko;
|
||||
fi
|
||||
|
||||
if [ $b_arg_insmod -eq 1 ]; then
|
||||
insert_ko;
|
||||
fi
|
||||
|
||||
if [ $b_arg_restore -eq 1 ]; then
|
||||
sys_restore;
|
||||
fi
|
||||
|
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue