#!/bin/bash
|
#
|
|
bugreport=/userdata/bugreport
|
|
usage()
|
{
|
echo "USAGE: [-s] [-u] [-i] [-a] [-m] [-p] [-h] "
|
echo "No ARGS means bugreport all infos in '${bugreport}' "
|
echo "WHERE: -s = report system info "
|
echo " -u = report usb info "
|
echo " -i = report isp info "
|
echo " -a = report app info "
|
echo " -m = report mpp enc use time and in&out data "
|
echo " -p = path to save bugreport infos "
|
echo " -h = bugreport using help "
|
echo "EXAMPLE: bugreport.sh -p /tmp/bugreport -suia "
|
exit 1
|
}
|
|
get_uvc_enc_in()
|
{
|
touch /tmp/uvc_enc_in
|
sleep 1
|
rm /tmp/uvc_enc_in
|
if [ ! -d ${bugreport}/uvc_data ];then
|
mkdir -p ${bugreport}/uvc_data
|
fi
|
mv /userdata/uvc_enc_in.bin ${bugreport}/uvc_data/
|
sync
|
}
|
|
get_uvc_enc_out()
|
{
|
touch /tmp/uvc_enc_out
|
sleep 3
|
rm /tmp/uvc_enc_out
|
if [ ! -d ${bugreport}/uvc_data ];then
|
mkdir -p ${bugreport}/uvc_data
|
fi
|
mv /userdata/uvc_enc_out.bin ${bugreport}/uvc_data/
|
sync
|
}
|
|
get_mpp_status()
|
{
|
if [ ! -d ${bugreport}/uvc_data ];then
|
mkdir -p ${bugreport}/uvc_data
|
fi
|
echo 0x100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug
|
sleep 5
|
echo 0 > /sys/module/rk_vcodec/parameters/mpp_dev_debug
|
if [ -e /tmp/messages ];then
|
tail -n 500 /tmp/messages > ${bugreport}/uvc_data/mpp_enc_time_info
|
fi
|
sync
|
}
|
|
get_isp_status()
|
{
|
if [ ! -d ${bugreport}/isp_data ];then
|
mkdir -p ${bugreport}/isp_data
|
fi
|
echo "report rkisp and rkispp info..."
|
cat /proc/rkisp* > ${bugreport}/isp_data/rkisp_data0
|
sleep 1
|
cat /proc/rkisp* > ${bugreport}/isp_data/rkisp_data1
|
sleep 1
|
cat /proc/rkisp* > ${bugreport}/isp_data/rkisp_data2
|
echo "report rkcif info..."
|
cat /proc/rkcif* > ${bugreport}/isp_data/rkcif_data0
|
sleep 1
|
cat /proc/rkcif* > ${bugreport}/isp_data/rkcif_data1
|
sleep 1
|
cat /proc/rkcif* > ${bugreport}/isp_data/rkcif_data2
|
echo "report media-ctl info..."
|
media-ctl -p > ${bugreport}/isp_data/media-ctl-p_info
|
media-ctl -d /dev/media0 -p > ${bugreport}/isp_data/media-ctl-p-media0_info
|
media-ctl -d /dev/media1 -p > ${bugreport}/isp_data/media-ctl-p-media1_info
|
echo "report isp&ispp reg info..."
|
io -4 -l 0x10000 0xffb50000 > ${bugreport}/isp_data/isp.reg
|
io -4 -l 0x10000 0xffb60000 > ${bugreport}/isp_data/ispp.reg
|
sync
|
}
|
|
get_usb_status()
|
{
|
if [ ! -d ${bugreport}/usb_data ];then
|
mkdir -p ${bugreport}/usb_data
|
fi
|
echo "report usb&uvc info..."
|
echo " uvc trace for setup request processing begin..."
|
echo " First , Need quit camera preview."
|
echo " Second, Restart camera preview..."
|
echo " Make sure the above two steps are completed within 15s"
|
echo 4 > /sys/module/usb_f_uvc/parameters/trace
|
sleep 15
|
dmesg > ${bugreport}/usb_data/dmesg_info
|
|
cat /proc/uvcinfo > ${bugreport}/usb_data/usb_data0
|
sleep 1
|
cat /proc/uvcinfo > ${bugreport}/usb_data/usb_data1
|
sleep 1
|
cat /proc/uvcinfo > ${bugreport}/usb_data/usb_data2
|
}
|
|
get_sys_status()
|
{
|
if [ ! -d ${bugreport}/system_data ];then
|
mkdir -p ${bugreport}/system_data
|
fi
|
echo "report system ps info..."
|
ps -ef > ${bugreport}/system_data/ps_info
|
ps -eLo pid,tid,class,rtprio,ni,pri,psr,pcpu,pmem,stat,wchan:30,comm > ${bugreport}/system_data/ps_detail_info
|
echo "report system mem free info..."
|
free -h > ${bugreport}/system_data/free_info
|
echo "report system flash mount info..."
|
mount > ${bugreport}/system_data/mount_info
|
echo "report system flash using info..."
|
df > ${bugreport}/system_data/df_info
|
echo "report system clk_summary info..."
|
cat /sys/kernel/debug/clk/clk_summary > ${bugreport}/system_data/clk_summary_info0
|
sleep 1
|
cat /sys/kernel/debug/clk/clk_summary > ${bugreport}/system_data/clk_summary_info1
|
echo "report system dmesg info..."
|
dmesg > ${bugreport}/system_data/dmesg_info
|
if [ -e /tmp/messages ];then
|
echo "report system syslog info..."
|
cp /tmp/messages ${bugreport}/system_data/syslog
|
fi
|
echo "report system top info..."
|
top -b > ${bugreport}/system_data/top_info &
|
sleep 2
|
killall top
|
sync
|
}
|
|
get_app_status(){
|
if [ ! -d ${bugreport}/application_data ];then
|
mkdir -p ${bugreport}/application_data
|
fi
|
echo "report applicattion $1 info..."
|
pid=`ps -ef | grep $1 | grep -v "grep" | awk '{print $2}'`
|
top -b -H -p ${pid} > ${bugreport}/application_data/$1_info &
|
echo "totol fd nums and max fd supprot" > ${bugreport}/application_data/$1_fd_info
|
cat /proc/sys/fs/file-nr >> ${bugreport}/application_data/$1_fd_info
|
echo "fd nums in $1" >> ${bugreport}/application_data/$1_fd_info
|
ls /proc/${pid}/fd | wc -l >> ${bugreport}/application_data/$1_fd_info
|
echo "detail fds in $1" >> ${bugreport}/application_data/$1_fd_info
|
ls -l /proc/${pid}/fd >> ${bugreport}/application_data/$1_fd_info
|
sleep 3
|
killall top
|
if [ "$1"x == "uvc_app"x ];then
|
echo "uvc_app version > V1.31 show RGB in host start..."
|
touch /tmp/uvc_isp_state
|
sleep 3
|
rm /tmp/uvc_isp_state
|
echo "uvc_app version > V1.31 show RGB in host end..."
|
echo "report uvc_app uvc_ipc_state info..."
|
touch /tmp/uvc_ipc_state
|
sleep 5
|
rm /tmp/uvc_ipc_state
|
if [ -e /tmp/messages ];then
|
tail -n 500 /tmp/messages > ${bugreport}/application_data/$1_uvc_ipc_state_info
|
fi
|
echo "report uvc_app uvc_out_len info..."
|
touch /tmp/uvc_out_len
|
sleep 5
|
rm /tmp/uvc_out_len
|
if [ -e /tmp/messages ];then
|
tail -n 500 /tmp/messages > ${bugreport}/application_data/$1_uvc_out_len_info
|
fi
|
echo "report uvc_app uvc_use_time info..."
|
touch /tmp/uvc_use_time
|
sleep 3
|
rm /tmp/uvc_use_time
|
if [ -e /tmp/messages ];then
|
tail -n 500 /tmp/messages > ${bugreport}/application_data/$1_uvc_use_time_info
|
fi
|
sync
|
fi
|
}
|
|
report_all_info()
|
{
|
get_sys_status
|
get_usb_status
|
get_uvc_enc_in
|
get_uvc_enc_out
|
get_isp_status
|
get_app_status aiserver
|
get_app_status ispserver
|
get_app_status uvc_app
|
get_app_status smart_display_service
|
}
|
|
if [ $# -ne 0 ];then
|
while getopts "suiamp:h" arg
|
do
|
case $arg in
|
s)
|
echo "report system info"
|
get_sys_status
|
;;
|
u)
|
echo "report usb info"
|
get_usb_status
|
;;
|
i)
|
echo "report isp info"
|
get_isp_status
|
;;
|
a)
|
echo "report app info"
|
get_app_status aiserver
|
get_app_status ispserver
|
get_app_status uvc_app
|
get_app_status smart_display_service
|
;;
|
m)
|
echo "report enc use time and in&out data"
|
get_uvc_enc_in
|
get_uvc_enc_out
|
get_mpp_status
|
;;
|
p)
|
echo "save bugreport infos in path '${OPTARG}'"
|
bugreport=${OPTARG}
|
if [ $# -eq 2 ];then
|
report_all_info
|
fi
|
;;
|
h)
|
usage
|
;;
|
?)
|
usage
|
;;
|
esac
|
done
|
else
|
echo "report all infos"
|
report_all_info
|
fi
|
|
echo "done, bugreport saved in '${bugreport}'"
|