blob: 6bde6fa81d8bd1993901f7da57a9381322655e17 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh
2# Set variable upload_over: DUMP media sequence
3# 1: SD -> USB, try usb no matter SD pass or fail for internal auto tool flow
4# 2: SD -> FLASH -> USB, reboot on any success
5# 3: SD->FLASH, reboot on any success, stall on final fail
6# 4: SD->FLASH, reboot on any success, reboot on final fail
7# 5: USB Only
8
9upload_over=5 #default mode
10
11if [ ! -e /dev/rdr ]; then
12 echo No RAMDUMP found > /dev/kmsg
13 exit 0
14fi
15
16echo =========================================== > /dev/kmsg
17echo RAMDUMP prepared by U-boot in RAM found > /dev/kmsg
18echo Script $0 is running > /dev/kmsg
19echo upload_over == $upload_over > /dev/kmsg
20
21# Use fixed File-Name:
22# RDNAME=RAMDUMP0000
23# Use File-Name with RAMDUMP_YYMMDD-HHMM:
24RDNAME=RAMDUMP_$(date +%y%m%d-%H%M)
25CPDUMPNAME=cpdump_$(date +%y%m%d-%H%M)
26COMDDRNAME=COM_DDR_$(date +%y%m%d-%H%M)
27DSPDDRNAME=DSP_DDR_$(date +%y%m%d-%H%M)
28BMBUFFNAME=bm_buffer_$(date +%y%m%d-%H%M)
29ADSPSHMNAME=adsp_shm_$(date +%y%m%d-%H%M)
30ADSPDTCMNAME=adsp_dtcm_$(date +%y%m%d-%H%M)
31ADSPDDRNAME=adsp_ddr_$(date +%y%m%d-%H%M)
32ADSPSQUNAME=adsp_squ_$(date +%y%m%d-%H%M)
33
34#flash dump name should be fixed name
35AP_DUMPTXT=ap_dump.txt
36AP_DUMPGZ=ap_dump.gz
37COM_CP_DUMP=com_RW_DDR.bin
38COM_DSP_DUMP=com_dsp_ddr.bin
39
40FBMBUFFNAME=bm_buffer
41FADSPSHMNAME=adsp_shm
42FADSPDTCMNAME=adsp_dtcm
43FADSPDDRNAME=adsp_ddr
44FADSPSQUNAME=adsp_squ
45
46SD_DUMP_DIR=/sdcard/modem_dump/
47FLASH_DUMP_DIR=/data/modem_dump/
48
49iscpdump=`cat /proc/cmdline | grep "cpdump"`
50
51function no_usbdump_reboot {
52 echo "=========NO usbdump rboot" > /dev/kmsg
53 sync
54 sleep 3
55 sync
56 echo "reboot" > /dev/kmsg
57 # Clear ramdump descriptor before restart
58 echo c > /dev/rdr
59 ifconfig usbnet0 down
60 echo 0 > /sys/class/android_usb/android0/enable
61 reboot
62 exit 0
63}
64
65function sd_dump {
66 /etc/init.d/sdcard_mount start
67 sleep 5
68
69 if [ ! -e /sdcard ]; then
70 echo "no /sdcard directory" > /dev/kmsg
71 return 1
72 fi
73
74 if [ ! -e "$SD_DUMP_DIR" ]; then
75 echo "mkdir /sdcard/modem_dump" > /dev/kmsg
76 mkdir -p $SD_DUMP_DIR
77 fi
78
79 if [ ! -e "$SD_DUMP_DIR" ]; then
80 echo "!!!!!no /sdcard/modem_dump directory" > /dev/kmsg
81 return 1
82 fi
83
84 if [ -n "$iscpdump" ]; then
85 echo t > /dev/rdr
86 cp /dev/rdr $SD_DUMP_DIR/$COMDDRNAME.bin
87 result=$?
88 if [ $result -ne 0 ]; then
89 echo "sd dump CP image failed" > /dev/kmsg
90 return 1
91 fi
92
93 echo d > /dev/rdr
94 cp /dev/rdr $SD_DUMP_DIR/$DSPDDRNAME.bin
95 result=$?
96 if [ $result -ne 0 ]; then
97 echo "sd dump DSP image failed" > /dev/kmsg
98 return 1
99 fi
100
101 if [ -e /sys/kernel/debug/adsp/adsp_shm ]; then
102 echo "sd dump adsp_shm" > /dev/kmsg
103 cp /sys/kernel/debug/adsp/adsp_shm $SD_DUMP_DIR/$ADSPSHMNAME.bin
104 result=$?
105 if [ $result -ne 0 ]; then
106 echo "sd dump adsp_shm failed" > /dev/kmsg
107 return 1
108 fi
109 fi
110
111 if [ -e /sys/kernel/debug/adsp/adsp_dtcm ]; then
112 echo "sd dump adsp_dtcm" > /dev/kmsg
113 cp /sys/kernel/debug/adsp/adsp_dtcm $SD_DUMP_DIR/$ADSPDTCMNAME.bin
114 result=$?
115 if [ $result -ne 0 ]; then
116 echo "sd dump adsp_dtcm failed" > /dev/kmsg
117 return 1
118 fi
119 fi
120
121 if [ -e /sys/kernel/debug/adsp/adsp_ddr ]; then
122 echo "sd dump adsp_ddr" > /dev/kmsg
123 cp /sys/kernel/debug/adsp/adsp_ddr $SD_DUMP_DIR/$ADSPDDRNAME.bin
124 result=$?
125 if [ $result -ne 0 ]; then
126 echo "sd dump adsp_ddr failed" > /dev/kmsg
127 return 1
128 fi
129 fi
130
131
132 if [ -e /sys/kernel/debug/adsp/adsp_squ ]; then
133 echo "sd dump adsp_squ" > /dev/kmsg
134 cp /sys/kernel/debug/adsp/adsp_squ $SD_DUMP_DIR/$ADSPSQUNAME.bin
135 result=$?
136 if [ $result -ne 0 ]; then
137 echo "sd dump adsp_squ failed" > /dev/kmsg
138 return 1
139 fi
140 fi
141
142 if [ -e /sys/kernel/debug/bm/buffer ]; then
143 echo "sd dump bm_buffer" > /dev/kmsg
144 cp /sys/kernel/debug/bm/buffer $SD_DUMP_DIR/$BMBUFFNAME.bin
145 result=$?
146 if [ $result -ne 0 ]; then
147 echo "sd dump bm_buffer failed" > /dev/kmsg
148 return 1
149 fi
150 fi
151 else
152 echo t > /dev/rdr
153 cp /dev/rdr $SD_DUMP_DIR/$RDNAME.txt
154 result=$?
155 if [ $result -ne 0 ]; then
156 echo "!!!!!!!!!!sd dump txt image failed" > /dev/kmsg
157 return 1
158 fi
159
160 echo d > /dev/rdr
161 cp /dev/rdr $SD_DUMP_DIR/$RDNAME.gz
162 result=$?
163 if [ $result -ne 0 ]; then
164 echo "!!!!!!!!!!sd dump GZ image failed" > /dev/kmsg
165 return 1
166 fi
167 fi
168
169 return 0
170}
171
172function flash_dump {
173 if [ ! -e "$FLASH_DUMP_DIR" ]; then
174 echo "mkdir $FLASH_DUMP_DIR" > /dev/kmsg
175 mkdir -p $FLASH_DUMP_DIR
176 fi
177
178 if [ ! -e "$FLASH_DUMP_DIR" ]; then
179 echo "!!!!!no $FLASH_DUMP_DIR" > /dev/kmsg
180 return 1
181 fi
182
183 #remove the old dump files, as flash space is limited
184 rm $FLASH_DUMP_DIR/*
185
186 if [ -n "$iscpdump" ]; then
187 echo t > /dev/rdr
188 cp /dev/rdr $FLASH_DUMP_DIR/$COM_CP_DUMP
189 result=$?
190 if [ $result -ne 0 ]; then
191 echo "flash dump CP image failed" > /dev/kmsg
192 rm $FLASH_DUMP_DIR/$COM_CP_DUMP
193 return 1
194 fi
195
196 echo d > /dev/rdr
197 cp /dev/rdr $FLASH_DUMP_DIR/$COM_DSP_DUMP
198 result=$?
199 if [ $result -ne 0 ]; then
200 echo "flash dump DSP image failed" > /dev/kmsg
201 rm $COM_DSP_DUMP
202 return 1
203 fi
204
205 if [ -e /sys/kernel/debug/adsp/adsp_shm ]; then
206 echo "flash dump adsp_shm" > /dev/kmsg
207 cp /sys/kernel/debug/adsp/adsp_shm $FLASH_DUMP_DIR/$FADSPSHMNAME.bin
208 result=$?
209 if [ $result -ne 0 ]; then
210 echo "flash dump adsp_shm failed" > /dev/kmsg
211 return 1
212 fi
213 fi
214
215 if [ -e /sys/kernel/debug/adsp/adsp_dtcm ]; then
216 echo "flash dump adsp_dtcm" > /dev/kmsg
217 cp /sys/kernel/debug/adsp/adsp_dtcm $FLASH_DUMP_DIR/$FADSPDTCMNAME.bin
218 result=$?
219 if [ $result -ne 0 ]; then
220 echo "flash dump adsp_dtcm failed" > /dev/kmsg
221 return 1
222 fi
223 fi
224
225 if [ -e /sys/kernel/debug/adsp/adsp_ddr ]; then
226 echo "flash dump adsp_ddr" > /dev/kmsg
227 cp /sys/kernel/debug/adsp/adsp_ddr $FLASH_DUMP_DIR/$FADSPDDRNAME.bin
228 result=$?
229 if [ $result -ne 0 ]; then
230 echo "flash dump adsp_ddr failed" > /dev/kmsg
231 return 1
232 fi
233 fi
234
235 if [ -e /sys/kernel/debug/adsp/adsp_squ ]; then
236 echo "flash dump adsp_squ" > /dev/kmsg
237 cp /sys/kernel/debug/adsp/adsp_squ $FLASH_DUMP_DIR/$FADSPSQUNAME.bin
238 result=$?
239 if [ $result -ne 0 ]; then
240 echo "flash dump adsp_squ failed" > /dev/kmsg
241 return 1
242 fi
243 fi
244
245 if [ -e /sys/kernel/debug/bm/buffer ]; then
246 echo "flash dump bm_buffer" > /dev/kmsg
247 cp /sys/kernel/debug/bm/buffer $FLASH_DUMP_DIR/$FBMBUFFNAME.bin
248 result=$?
249 if [ $result -ne 0 ]; then
250 echo "flash dump bm_buffer failed" > /dev/kmsg
251 return 1
252 fi
253 fi
254 else
255 echo t > /dev/rdr
256 cp /dev/rdr $FLASH_DUMP_DIR/$AP_DUMPTXT
257 result=$?
258 if [ $result -ne 0 ]; then
259 echo "!!!!!!!!!!flash dump txt image failed" > /dev/kmsg
260 rm $FLASH_DUMP_DIR/$AP_DUMPTXT
261 return 1
262 fi
263
264 echo d > /dev/rdr
265 cp /dev/rdr $FLASH_DUMP_DIR/$AP_DUMPGZ
266 result=$?
267 if [ $result -ne 0 ]; then
268 echo "!!!!!!!!!!flash dump GZ image failed" > /dev/kmsg
269 rm $FLASH_DUMP_DIR/$AP_DUMPGZ
270 return 1
271 fi
272 fi
273
274 return 0
275}
276
277
278# 1: SD -> USB, try usb no matter SD pass or fail for internal auto tool flow
279# 2: SD -> FLASH -> USB, reboot on any success
280# 3: SD->FLASH, reboot on any success, stall on final fail
281# 4: SD->FLASH, reboot on any success, reboot on final fail
282if [ $upload_over -eq 1 ]; then
283 sd_dump
284 result=$?
285 if [ $result -eq 0 ]; then
286 echo "=========sd dump success" > /dev/kmsg
287 fi
288elif [ $upload_over -eq 2 ]; then
289 sd_dump
290 result=$?
291 if [ $result -eq 0 ]; then
292 echo "=========sd dump success" > /dev/kmsg
293 no_usbdump_reboot
294 fi
295 flash_dump
296 result=$?
297 if [ $result -eq 0 ]; then
298 echo "=========flash dump success" > /dev/kmsg
299 no_usbdump_reboot
300 fi
301elif [ $upload_over -eq 3 ]; then
302 sd_dump
303 result=$?
304 if [ $result -eq 0 ]; then
305 echo "=========sd dump success" > /dev/kmsg
306 no_usbdump_reboot
307 fi
308 flash_dump
309 result=$?
310 if [ $result -eq 0 ]; then
311 echo "=========flash dump success" > /dev/kmsg
312 no_usbdump_reboot
313 fi
314 #stall on fail
315 while [ 1 ]
316 do
317 sleep 100
318 done
319elif [ $upload_over -eq 4 ]; then
320 sd_dump
321 result=$?
322 if [ $result -eq 0 ]; then
323 echo "=========sd dump success" > /dev/kmsg
324 no_usbdump_reboot
325 fi
326 flash_dump
327 result=$?
328 if [ $result -eq 0 ]; then
329 echo "=========flash dump success" > /dev/kmsg
330 no_usbdump_reboot
331 fi
332 no_usbdump_reboot
333else
334 echo "don't check storage media" > /dev/kmsg
335fi
336
337FTP_SERV_IP=""
338loop_net=0
339#leave 3 days(for weekend test, 259200 secs) to check network on
340while [ $loop_net -le 259200 -a -z $FTP_SERV_IP ]
341do
342 if [ -z "$1" ]; then
343 cat /proc/net/arp > /tmp/tmp_arp1
344 sed -n '/br-lan/p' /tmp/tmp_arp1 > /tmp/tmp_arp2
345 sed -n '/0x2/p' /tmp/tmp_arp2 > /tmp/sed_arp_output
346 sed -n '1p' /tmp/sed_arp_output > /tmp/ip_string1
347 sed -n '2p' /tmp/sed_arp_output > /tmp/ip_string2
348 FTP_SERV_IP=`awk '{print $1}' /tmp/ip_string1`
349 echo $FTP_SERV_IP > /dev/kmsg
350 local_ip=`echo $FTP_SERV_IP |grep 192.168`
351 if [ -n "$local_ip" ]; then
352 break
353 fi
354 FTP_SERV_IP=`awk '{print $1}' /tmp/ip_string2`
355 local_ip=`echo $FTP_SERV_IP |grep 192.168`
356 echo $FTP_SERV_IP > /dev/kmsg
357 if [ -n "$local_ip" ]; then
358 break
359 fi
360 else
361 FTP_SERV_IP=$1
362 fi
363 loop_net=$((loop_net+1))
364 echo Searching PC SRV to dump image ... > /dev/kmsg
365 sleep 1
366done
367
368if [ -z "$FTP_SERV_IP" ]; then
369 echo "!!!!!!!!!!!!! Can't find any SRV PC to dump image" > /dev/kmsg
370 exit 0
371else
372 echo FTP_SERV_IP $FTP_SERV_IP > /dev/kmsg
373fi
374
375#if [ $upload_over -eq 1 ]; then
376# echo ...Upload to SD /sdcard/$RDNAME.* > /dev/kmsg
377# #echo t > /dev/rdr - default
378# cp /dev/rdr /sdcard/$RDNAME.txt
379# echo d > /dev/rdr
380# cp /dev/rdr /sdcard/$RDNAME.gz
381# result=$?
382#fi
383
384if [ 1 ]; then
385 echo ...Upload to TFTP $FTP_SERV_IP > /dev/kmsg
386 loop=0
387 #wait for enough time to prepare the PC server
388 #the timeout is for weekend time(3 days)
389 while [ $loop -le 259200 ]
390 do
391 echo t > /dev/rdr
392
393 if [ -n "$iscpdump" ]; then
394 tftp -p -l /dev/rdr -r $COMDDRNAME.bin $FTP_SERV_IP
395 else
396 tftp -p -l /dev/rdr -r $RDNAME.txt $FTP_SERV_IP
397 fi
398
399 result=$?
400 if [ $result -eq 0 ]; then
401 echo "======dump text ok" > /dev/kmsg
402 echo d > /dev/rdr
403 if [ -n "$iscpdump" ]; then
404 busybox tftp -p -l /dev/rdr -r $DSPDDRNAME.bin $FTP_SERV_IP
405 else
406 busybox tftp -p -l /dev/rdr -r $RDNAME.gz $FTP_SERV_IP
407 fi
408 result=$?
409 fi
410
411 if [ $result -eq 0 ]; then
412 # Uploaded with ok. Exit loop
413 echo "======dump gz ok" > /dev/kmsg
414 if [ -n "$iscpdump" ]; then
415 if [ ! -e /log/cp_dump.tar.gz ]; then
416 echo ================= cpdump image does not exsit > /dev/kmsg
417 loop=400000
418 else
419 tftp -p -l /log/cp_dump.tar.gz -r $CPDUMPNAME.tar.gz $FTP_SERV_IP
420 result=$?
421 if [ $result -eq 0 ]; then
422 # Uploaded with ok. Exit loop
423 echo "======cp dump transfer ok" > /dev/kmsg
424 loop=400000
425 else
426 # No answer from server or error. Try again
427 loop=$((loop+1))
428 echo TFTP uploading cpdump retry ... > /dev/kmsg
429 sleep 2
430 fi
431 fi
432 else
433 echo "======no cp assert dump done" > /dev/kmsg
434 loop=400000
435 fi
436 else
437 # No answer from server or error. Try again
438 loop=$((loop+1))
439 echo TFTP uploading RDP retry ... > /dev/kmsg
440 sleep 2
441 fi
442 done
443fi
444
445if [ -n "$iscpdump" ]; then
446 if [ ! -e /sys/kernel/debug/bm/buffer ]; then
447 echo ================= no bm_buffer to be dump > /dev/kmsg
448 else
449 tftp -p -l /sys/kernel/debug/bm/buffer -r $BMBUFFNAME.bin $FTP_SERV_IP
450 result=$?
451 if [ $result -eq 0 ]; then
452 # Uploaded with ok. Exit loop
453 echo "======bm buffer dump ok" > /dev/kmsg
454 else
455 #try again
456 echo "======retry to dump bm buffer" > /dev/kmsg
457 tftp -p -l /sys/kernel/debug/bm/buffer -r $BMBUFFNAME.bin $FTP_SERV_IP
458 result=$?
459 if [ $result -eq 0 ]; then
460 # Uploaded with ok. Exit loop
461 echo "======bm buffer dump ok" > /dev/kmsg
462 else
463 echo "======bm buffer dump failed" > /dev/kmsg
464 fi
465 fi
466 fi
467fi
468
469#dump ADSP bins
470if [ -n "$iscpdump" ]; then
471 if [ ! -e /sys/kernel/debug/adsp/adsp_shm ]; then
472 echo ================= no adsp_shm to dump > /dev/kmsg
473 else
474 tftp -p -l /sys/kernel/debug/adsp/adsp_shm -r $ADSPSHMNAME.bin $FTP_SERV_IP
475 result=$?
476 if [ $result -eq 0 ]; then
477 # Uploaded with ok. Exit loop
478 echo "======adsp_shm dump ok" > /dev/kmsg
479 else
480 #try again
481 echo "======retry to dump adsp_shm" > /dev/kmsg
482 tftp -p -l /sys/kernel/debug/adsp/adsp_shm -r $ADSPSHMNAME.bin $FTP_SERV_IP
483 result=$?
484 if [ $result -eq 0 ]; then
485 # Uploaded with ok. Exit loop
486 echo "======adsp_shm dump ok" > /dev/kmsg
487 else
488 echo "======dump adsp_shm failed" > /dev/kmsg
489 fi
490 fi
491 fi
492
493 if [ ! -e /sys/kernel/debug/adsp/adsp_dtcm ]; then
494 echo ================= no adsp_dtcm to dump > /dev/kmsg
495 else
496 tftp -p -l /sys/kernel/debug/adsp/adsp_dtcm -r $ADSPDTCMNAME.bin $FTP_SERV_IP
497 result=$?
498 if [ $result -eq 0 ]; then
499 # Uploaded with ok. Exit loop
500 echo "======adsp_dtcm dump ok" > /dev/kmsg
501 else
502 #try again
503 echo "======retry to dump adsp_dtcm" > /dev/kmsg
504 tftp -p -l /sys/kernel/debug/adsp/adsp_dtcm -r $ADSPDTCMNAME.bin $FTP_SERV_IP
505 result=$?
506 if [ $result -eq 0 ]; then
507 # Uploaded with ok. Exit loop
508 echo "======adsp_dtcm dump ok" > /dev/kmsg
509 else
510 echo "======dump adsp_dtcm failed" > /dev/kmsg
511 fi
512 fi
513 fi
514
515 if [ ! -e /sys/kernel/debug/adsp/adsp_ddr ]; then
516 echo ================= no adsp_ddr to dump > /dev/kmsg
517 else
518 tftp -p -l /sys/kernel/debug/adsp/adsp_ddr -r $ADSPDDRNAME.bin $FTP_SERV_IP
519 result=$?
520 if [ $result -eq 0 ]; then
521 # Uploaded with ok. Exit loop
522 echo "======adsp_ddr dump ok" > /dev/kmsg
523 else
524 #try again
525 echo "======retry to dump adsp_ddr" > /dev/kmsg
526 tftp -p -l /sys/kernel/debug/adsp/adsp_ddr -r $ADSPDDRNAME.bin $FTP_SERV_IP
527 result=$?
528 if [ $result -eq 0 ]; then
529 # Uploaded with ok. Exit loop
530 echo "======adsp_ddr dump ok" > /dev/kmsg
531 else
532 echo "======dump adsp_ddr failed" > /dev/kmsg
533 fi
534 fi
535 fi
536
537 if [ ! -e /sys/kernel/debug/adsp/adsp_squ ]; then
538 echo ================= no adsp_squ to dump > /dev/kmsg
539 else
540 tftp -p -l /sys/kernel/debug/adsp/adsp_squ -r $ADSPSQUNAME.bin $FTP_SERV_IP
541 result=$?
542 if [ $result -eq 0 ]; then
543 # Uploaded with ok. Exit loop
544 echo "======adsp_squ dump ok" > /dev/kmsg
545 else
546 #try again
547 echo "======retry to dump adsp_squ" > /dev/kmsg
548 tftp -p -l /sys/kernel/debug/adsp/adsp_squ -r $ADSPSQUNAME.bin $FTP_SERV_IP
549 result=$?
550 if [ $result -eq 0 ]; then
551 # Uploaded with ok. Exit loop
552 echo "======adsp_squ dump ok" > /dev/kmsg
553 else
554 echo "======dump adsp_squ failed" > /dev/kmsg
555 fi
556 fi
557 fi
558fi
559
560if [ $loop -ne 400000 ]; then
561 echo "!!!!!!!!!!!!!!!!!ramdump failed, please check tftp server or firewall" > /dev/kmsg
562 exit 0
563fi
564
565echo RAMDUMP upload finished with $result ----- Re-Start ---- > /dev/kmsg
566# Clear ramdump descriptor before restart
567echo c > /dev/rdr
568
569echo "sending rdp_ok.txt to server" > /dev/kmsg
570echo "rdp_ok" > /tmp/rdp_ok.txt
571tftp -p -l /tmp/rdp_ok.txt -r rdp_ok.txt $FTP_SERV_IP
572
573echo "sleep 15s for auto test" > /dev/kmsg
574sleep 15
575
576ifconfig usbnet0 down
577echo 0 > /sys/class/android_usb/android0/enable
578
579reboot
580