xref: /OK3568_Linux_fs/device/rockchip/common/images/oem/oem_uvcc/bugreport.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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