1#!/bin/bash 2# 3 4bugreport=/userdata/bugreport 5 6usage() 7{ 8 echo "USAGE: [-s] [-u] [-i] [-a] [-m] [-p] [-h] " 9 echo "No ARGS means bugreport all infos in '${bugreport}' " 10 echo "WHERE: -s = report system info " 11 echo " -u = report usb info " 12 echo " -i = report isp info " 13 echo " -a = report app info " 14 echo " -m = report mpp enc use time and in&out data " 15 echo " -p = path to save bugreport infos " 16 echo " -h = bugreport using help " 17 echo "EXAMPLE: bugreport.sh -p /tmp/bugreport -suia " 18 exit 1 19} 20 21get_uvc_enc_in() 22{ 23 touch /tmp/uvc_enc_in 24 sleep 1 25 rm /tmp/uvc_enc_in 26 if [ ! -d ${bugreport}/uvc_data ];then 27 mkdir -p ${bugreport}/uvc_data 28 fi 29 mv /userdata/uvc_enc_in.bin ${bugreport}/uvc_data/ 30 sync 31} 32 33get_uvc_enc_out() 34{ 35 touch /tmp/uvc_enc_out 36 sleep 3 37 rm /tmp/uvc_enc_out 38 if [ ! -d ${bugreport}/uvc_data ];then 39 mkdir -p ${bugreport}/uvc_data 40 fi 41 mv /userdata/uvc_enc_out.bin ${bugreport}/uvc_data/ 42 sync 43} 44 45get_mpp_status() 46{ 47 if [ ! -d ${bugreport}/uvc_data ];then 48 mkdir -p ${bugreport}/uvc_data 49 fi 50 echo 0x100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug 51 sleep 5 52 echo 0 > /sys/module/rk_vcodec/parameters/mpp_dev_debug 53 if [ -e /tmp/messages ];then 54 tail -n 500 /tmp/messages > ${bugreport}/uvc_data/mpp_enc_time_info 55 fi 56 sync 57} 58 59get_isp_status() 60{ 61 if [ ! -d ${bugreport}/isp_data ];then 62 mkdir -p ${bugreport}/isp_data 63 fi 64 echo "report rkisp and rkispp info..." 65 cat /proc/rkisp* > ${bugreport}/isp_data/rkisp_data0 66 sleep 1 67 cat /proc/rkisp* > ${bugreport}/isp_data/rkisp_data1 68 sleep 1 69 cat /proc/rkisp* > ${bugreport}/isp_data/rkisp_data2 70 echo "report rkcif info..." 71 cat /proc/rkcif* > ${bugreport}/isp_data/rkcif_data0 72 sleep 1 73 cat /proc/rkcif* > ${bugreport}/isp_data/rkcif_data1 74 sleep 1 75 cat /proc/rkcif* > ${bugreport}/isp_data/rkcif_data2 76 echo "report media-ctl info..." 77 media-ctl -p > ${bugreport}/isp_data/media-ctl-p_info 78 media-ctl -d /dev/media0 -p > ${bugreport}/isp_data/media-ctl-p-media0_info 79 media-ctl -d /dev/media1 -p > ${bugreport}/isp_data/media-ctl-p-media1_info 80 echo "report isp&ispp reg info..." 81 io -4 -l 0x10000 0xffb50000 > ${bugreport}/isp_data/isp.reg 82 io -4 -l 0x10000 0xffb60000 > ${bugreport}/isp_data/ispp.reg 83 sync 84} 85 86get_usb_status() 87{ 88 if [ ! -d ${bugreport}/usb_data ];then 89 mkdir -p ${bugreport}/usb_data 90 fi 91 echo "report usb&uvc info..." 92 echo " uvc trace for setup request processing begin..." 93 echo " First , Need quit camera preview." 94 echo " Second, Restart camera preview..." 95 echo " Make sure the above two steps are completed within 15s" 96 echo 4 > /sys/module/usb_f_uvc/parameters/trace 97 sleep 15 98 dmesg > ${bugreport}/usb_data/dmesg_info 99 100 cat /proc/uvcinfo > ${bugreport}/usb_data/usb_data0 101 sleep 1 102 cat /proc/uvcinfo > ${bugreport}/usb_data/usb_data1 103 sleep 1 104 cat /proc/uvcinfo > ${bugreport}/usb_data/usb_data2 105} 106 107get_sys_status() 108{ 109 if [ ! -d ${bugreport}/system_data ];then 110 mkdir -p ${bugreport}/system_data 111 fi 112 echo "report system ps info..." 113 ps -ef > ${bugreport}/system_data/ps_info 114 ps -eLo pid,tid,class,rtprio,ni,pri,psr,pcpu,pmem,stat,wchan:30,comm > ${bugreport}/system_data/ps_detail_info 115 echo "report system mem free info..." 116 free -h > ${bugreport}/system_data/free_info 117 echo "report system flash mount info..." 118 mount > ${bugreport}/system_data/mount_info 119 echo "report system flash using info..." 120 df > ${bugreport}/system_data/df_info 121 echo "report system clk_summary info..." 122 cat /sys/kernel/debug/clk/clk_summary > ${bugreport}/system_data/clk_summary_info0 123 sleep 1 124 cat /sys/kernel/debug/clk/clk_summary > ${bugreport}/system_data/clk_summary_info1 125 echo "report system dmesg info..." 126 dmesg > ${bugreport}/system_data/dmesg_info 127 if [ -e /tmp/messages ];then 128 echo "report system syslog info..." 129 cp /tmp/messages ${bugreport}/system_data/syslog 130 fi 131 echo "report system top info..." 132 top -b > ${bugreport}/system_data/top_info & 133 sleep 2 134 killall top 135 sync 136} 137 138get_app_status(){ 139 if [ ! -d ${bugreport}/application_data ];then 140 mkdir -p ${bugreport}/application_data 141 fi 142 echo "report applicattion $1 info..." 143 pid=`ps -ef | grep $1 | grep -v "grep" | awk '{print $2}'` 144 top -b -H -p ${pid} > ${bugreport}/application_data/$1_info & 145 echo "totol fd nums and max fd supprot" > ${bugreport}/application_data/$1_fd_info 146 cat /proc/sys/fs/file-nr >> ${bugreport}/application_data/$1_fd_info 147 echo "fd nums in $1" >> ${bugreport}/application_data/$1_fd_info 148 ls /proc/${pid}/fd | wc -l >> ${bugreport}/application_data/$1_fd_info 149 echo "detail fds in $1" >> ${bugreport}/application_data/$1_fd_info 150 ls -l /proc/${pid}/fd >> ${bugreport}/application_data/$1_fd_info 151 sleep 3 152 killall top 153 if [ "$1"x == "uvc_app"x ];then 154 echo "uvc_app version > V1.31 show RGB in host start..." 155 touch /tmp/uvc_isp_state 156 sleep 3 157 rm /tmp/uvc_isp_state 158 echo "uvc_app version > V1.31 show RGB in host end..." 159 echo "report uvc_app uvc_ipc_state info..." 160 touch /tmp/uvc_ipc_state 161 sleep 5 162 rm /tmp/uvc_ipc_state 163 if [ -e /tmp/messages ];then 164 tail -n 500 /tmp/messages > ${bugreport}/application_data/$1_uvc_ipc_state_info 165 fi 166 echo "report uvc_app uvc_out_len info..." 167 touch /tmp/uvc_out_len 168 sleep 5 169 rm /tmp/uvc_out_len 170 if [ -e /tmp/messages ];then 171 tail -n 500 /tmp/messages > ${bugreport}/application_data/$1_uvc_out_len_info 172 fi 173 echo "report uvc_app uvc_use_time info..." 174 touch /tmp/uvc_use_time 175 sleep 3 176 rm /tmp/uvc_use_time 177 if [ -e /tmp/messages ];then 178 tail -n 500 /tmp/messages > ${bugreport}/application_data/$1_uvc_use_time_info 179 fi 180 sync 181 fi 182} 183 184report_all_info() 185{ 186 get_sys_status 187 get_usb_status 188 get_uvc_enc_in 189 get_uvc_enc_out 190 get_isp_status 191 get_app_status aiserver 192 get_app_status ispserver 193 get_app_status uvc_app 194 get_app_status smart_display_service 195} 196 197if [ $# -ne 0 ];then 198 while getopts "suiamp:h" arg 199 do 200 case $arg in 201 s) 202 echo "report system info" 203 get_sys_status 204 ;; 205 u) 206 echo "report usb info" 207 get_usb_status 208 ;; 209 i) 210 echo "report isp info" 211 get_isp_status 212 ;; 213 a) 214 echo "report app info" 215 get_app_status aiserver 216 get_app_status ispserver 217 get_app_status uvc_app 218 get_app_status smart_display_service 219 ;; 220 m) 221 echo "report enc use time and in&out data" 222 get_uvc_enc_in 223 get_uvc_enc_out 224 get_mpp_status 225 ;; 226 p) 227 echo "save bugreport infos in path '${OPTARG}'" 228 bugreport=${OPTARG} 229 if [ $# -eq 2 ];then 230 report_all_info 231 fi 232 ;; 233 h) 234 usage 235 ;; 236 ?) 237 usage 238 ;; 239 esac 240 done 241else 242 echo "report all infos" 243 report_all_info 244fi 245 246echo "done, bugreport saved in '${bugreport}'" 247 248 249 250