blob: 79682eb9b8edc6d0a6aaccc179f6a2e323c94d61 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh
2
3#NOTE: dvc_update_volt.sh is set as root-only executable in read only directory /sbin/
4#NOTE: better to move dvc_update_volt.sh to writtable directory, such /data
5#NOTE: better to remove dvc_update_volt.sh after doing system test
6#NOTE: be careful to check if dvc_update_volt.sh is executed correctly from dmesg log
7#NOTE: dvc_update_volt.sh is to reduce voltage before doing stress test
8#NOTE: default is reduce 25mv in dvc_update_volt.sh, can change it to other value if needed
9
10
11#reduce_volt=1
12
13trap 'onCtrlC' INT
14function onCtrlC () {
15 echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
16 echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
17 echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
18 echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
19 [ -e /data/stresstfile ] && rm /data/stresstfile
20 echo "Exit 0 on Ctrl+C" > /dev/kmsg
21 exit 0
22}
23
24if [ -z $1 -o -z $2 ]; then
25 echo "!!!!!!!!no runtime_sec and test idx specified" > /dev/kmsg
26 exit 1
27fi
28
29echo "runtime " $1 > /dev/kmsg
30echo "stress test " $2 > /dev/kmsg
31result=0
32# $2: 0 - mem test 1 - mem+flash test
33if [ $2 -eq 0 ]; then
34 # set cpufreq max to 416000 and ddrfreq min to 2000000
35 echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos
36 echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos
37 echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos
38 echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos
39
40 if [ "$reduce_volt" == "1" ]
41 then
42 serial_atcmd at+cfun=0
43 sync
44 echo 3 > /proc/sys/vm/drop_caches
45 [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub
46 fi
47
48 free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'`
49 echo "Free_KB:" $free_mem_kbytes > /dev/kmsg
50 #larger than 11MB
51 if [ $free_mem_kbytes -gt 11264 ]; then
52 stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
53 result=$?
54 else
55 stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
56 result=$?
57 fi
58 echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
59 echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
60 echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
61 echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
62 if [ "$reduce_volt" == "1" ]
63 then
64 [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore
65 fi
66elif [ $2 -eq 1 ]; then
67 stresstest -s $1 -C 1 -m 1 -i 1 --max_errors 1 -M 8 --stop_on_errors -l /tmp/stress_log -f /data/stresstfile --filesize 0x200000
68 result=$?
69elif [ $2 -eq 2 ]; then
70 loop=1
71 while [ $loop -le $1 ]
72 do
73 [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
74 fs_test 0 7 0
75 result=$?
76 if [ $result -ne 0 ]; then
77 echo "==== FLASH TEST FAILED ON LOOP" $loop > /dev/kmsg
78 [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
79 exit 1
80 fi
81 loop=$((loop+1))
82 echo "##FLASH test loop" $loop "done" > /dev/kmsg
83 [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
84 done
85 [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0
86 echo "==== ALL FLASH TEST DONE, PASS" > /dev/kmsg
87 exit 0
88elif [ $2 -eq 3 ]; then
89 if [ "$reduce_volt" == "1" ]
90 then
91 serial_atcmd at+cfun=0
92 sync
93 echo 3 > /proc/sys/vm/drop_caches
94 [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub
95 fi
96 # set cpufreq max to 2000000 and ddrfreq min to 2000000
97 echo strestestcpu 2000000 > /sys/power/cpu_freq_max_pm_qos
98 echo strestestcpu 2000000 > /sys/power/cpu_freq_min_pm_qos
99 echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos
100 echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos
101 free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'`
102 echo "Free_KB:" $free_mem_kbytes > /dev/kmsg
103 #larger than 11MB
104 if [ $free_mem_kbytes -gt 11264 ]; then
105 stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
106 result=$?
107 else
108 stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
109 result=$?
110 fi
111 echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
112 echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
113 echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
114 echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
115
116 if [ "$reduce_volt" == "1" ]
117 then
118 [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore
119 fi
120elif [ $2 -eq 4 ]; then
121 if [ "$reduce_volt" == "1" ]
122 then
123 serial_atcmd at+cfun=0
124 sync
125 echo 3 > /proc/sys/vm/drop_caches
126 [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub
127 fi
128 # set cpufreq max to 416000 and ddrfreq min to 266000
129 echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos
130 echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos
131 echo strestestddr 266000 > /sys/power/ddr_devfreq_max_pm_qos
132 echo strestestddr 266000 > /sys/power/ddr_devfreq_min_pm_qos
133 free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'`
134 echo "Free_KB:" $free_mem_kbytes > /dev/kmsg
135 #larger than 11MB
136 if [ $free_mem_kbytes -gt 11264 ]; then
137 stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
138 result=$?
139 else
140 stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg
141 result=$?
142 fi
143 echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos
144 echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos
145 echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos
146 echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos
147
148 if [ "$reduce_volt" == "1" ]
149 then
150 [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore
151 fi
152else
153 echo "==== unsupported test" > /dev/kmsg
154 $result=1
155fi
156
157if [ $result -eq 0 ]; then
158 echo "======stress test " $2 " ok" > /dev/kmsg
159 [ -e /data/stresstfile ] && rm /data/stresstfile
160 exit 0
161else
162 echo "======stress test " $2 " fail" > /dev/kmsg
163 [ -e /data/stresstfile ] && rm /data/stresstfile
164 exit 1
165fi
166
167