| #!/bin/sh |
| |
| #NOTE: dvc_update_volt.sh is set as root-only executable in read only directory /sbin/ |
| #NOTE: better to move dvc_update_volt.sh to writtable directory, such /data |
| #NOTE: better to remove dvc_update_volt.sh after doing system test |
| #NOTE: be careful to check if dvc_update_volt.sh is executed correctly from dmesg log |
| #NOTE: dvc_update_volt.sh is to reduce voltage before doing stress test |
| #NOTE: default is reduce 25mv in dvc_update_volt.sh, can change it to other value if needed |
| |
| |
| #reduce_volt=1 |
| |
| trap 'onCtrlC' INT |
| function onCtrlC () { |
| echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| [ -e /data/stresstfile ] && rm /data/stresstfile |
| echo "Exit 0 on Ctrl+C" > /dev/kmsg |
| exit 0 |
| } |
| |
| if [ -z $1 -o -z $2 ]; then |
| echo "!!!!!!!!no runtime_sec and test idx specified" > /dev/kmsg |
| exit 1 |
| fi |
| |
| echo "runtime " $1 > /dev/kmsg |
| echo "stress test " $2 > /dev/kmsg |
| result=0 |
| # $2: 0 - mem test 1 - mem+flash test |
| if [ $2 -eq 0 ]; then |
| # set cpufreq max to 416000 and ddrfreq min to 2000000 |
| echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos |
| echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos |
| echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos |
| echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos |
| |
| if [ "$reduce_volt" == "1" ] |
| then |
| serial_atcmd at+cfun=0 |
| sync |
| echo 3 > /proc/sys/vm/drop_caches |
| [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub |
| fi |
| |
| free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'` |
| echo "Free_KB:" $free_mem_kbytes > /dev/kmsg |
| #larger than 11MB |
| if [ $free_mem_kbytes -gt 11264 ]; then |
| stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| result=$? |
| else |
| stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| result=$? |
| fi |
| echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| if [ "$reduce_volt" == "1" ] |
| then |
| [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore |
| fi |
| elif [ $2 -eq 1 ]; then |
| 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 |
| result=$? |
| elif [ $2 -eq 2 ]; then |
| loop=1 |
| while [ $loop -le $1 ] |
| do |
| [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| fs_test 0 7 0 |
| result=$? |
| if [ $result -ne 0 ]; then |
| echo "==== FLASH TEST FAILED ON LOOP" $loop > /dev/kmsg |
| [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| exit 1 |
| fi |
| loop=$((loop+1)) |
| echo "##FLASH test loop" $loop "done" > /dev/kmsg |
| [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| done |
| [ -e /log/fs_test.bin0 ] && rm /log/fs_test.bin0 |
| echo "==== ALL FLASH TEST DONE, PASS" > /dev/kmsg |
| exit 0 |
| elif [ $2 -eq 3 ]; then |
| if [ "$reduce_volt" == "1" ] |
| then |
| serial_atcmd at+cfun=0 |
| sync |
| echo 3 > /proc/sys/vm/drop_caches |
| [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub |
| fi |
| # set cpufreq max to 2000000 and ddrfreq min to 2000000 |
| echo strestestcpu 2000000 > /sys/power/cpu_freq_max_pm_qos |
| echo strestestcpu 2000000 > /sys/power/cpu_freq_min_pm_qos |
| echo strestestddr 2000000 > /sys/power/ddr_devfreq_max_pm_qos |
| echo strestestddr 2000000 > /sys/power/ddr_devfreq_min_pm_qos |
| free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'` |
| echo "Free_KB:" $free_mem_kbytes > /dev/kmsg |
| #larger than 11MB |
| if [ $free_mem_kbytes -gt 11264 ]; then |
| stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| result=$? |
| else |
| stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| result=$? |
| fi |
| echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| |
| if [ "$reduce_volt" == "1" ] |
| then |
| [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore |
| fi |
| elif [ $2 -eq 4 ]; then |
| if [ "$reduce_volt" == "1" ] |
| then |
| serial_atcmd at+cfun=0 |
| sync |
| echo 3 > /proc/sys/vm/drop_caches |
| [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh sub |
| fi |
| # set cpufreq max to 416000 and ddrfreq min to 266000 |
| echo strestestcpu 416000 > /sys/power/cpu_freq_max_pm_qos |
| echo strestestcpu 416000 > /sys/power/cpu_freq_min_pm_qos |
| echo strestestddr 266000 > /sys/power/ddr_devfreq_max_pm_qos |
| echo strestestddr 266000 > /sys/power/ddr_devfreq_min_pm_qos |
| free_mem_kbytes=`sed -n '2p' /proc/meminfo | awk '{print $(NF-1)}'` |
| echo "Free_KB:" $free_mem_kbytes > /dev/kmsg |
| #larger than 11MB |
| if [ $free_mem_kbytes -gt 11264 ]; then |
| stresstest -s $1 -C 1 -m 4 -i 2 -M 8 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| result=$? |
| else |
| stresstest -s $1 -C 1 -m 1 -i 1 -M 4 --max_errors 1 --stop_on_errors -l /tmp/stress_log > /dev/kmsg |
| result=$? |
| fi |
| echo strestestcpu > /sys/power/cpu_freq_max_pm_unqos |
| echo strestestcpu > /sys/power/cpu_freq_min_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_max_pm_unqos |
| echo strestestddr > /sys/power/ddr_devfreq_min_pm_unqos |
| |
| if [ "$reduce_volt" == "1" ] |
| then |
| [ -e "/sbin/dvc_update_volt.sh" ] && /sbin/dvc_update_volt.sh restore |
| fi |
| else |
| echo "==== unsupported test" > /dev/kmsg |
| $result=1 |
| fi |
| |
| if [ $result -eq 0 ]; then |
| echo "======stress test " $2 " ok" > /dev/kmsg |
| [ -e /data/stresstfile ] && rm /data/stresstfile |
| exit 0 |
| else |
| echo "======stress test " $2 " fail" > /dev/kmsg |
| [ -e /data/stresstfile ] && rm /data/stresstfile |
| exit 1 |
| fi |
| |
| |