S3S4.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #!/bin/bash
  2. MYDIR=$(dirname $(readlink -f "$0"))
  3. echo "dir: ${MYDIR}" >> /tmp/debug.log
  4. login_user_id=$(grep '^\<UID_MIN\>' /etc/login.defs | awk '{print $2}')
  5. login_user_name=$(cat /etc/passwd | awk -v id="$login_user_id" -F: '{if ($3==id) print $1}')
  6. login_user_home=$(cat /etc/passwd | awk -v id="$login_user_id" -F: '{if ($3==id) print $6}')
  7. source "${MYDIR}/times.left"
  8. source "${MYDIR}/action.cfg"
  9. logFile=${MYDIR}/${LOG}
  10. count=${timesLeft}
  11. echo "[`date`] 开始待机${ACTION}测试。。。" | tee -a ${logFile}
  12. # echo "[`date`] 开始待机${ACTION}测试。。。" >> result.txt
  13. echo "日志文件: ${logFile}"
  14. echo "循环次数: ${count}" | tee -a ${logFile}
  15. ARCH=$(arch)
  16. #ARCH="loongarch64"
  17. console=/dev/ttyS0
  18. if [ $ARCH = "aarch64" ]; then
  19. console=/dev/ttyAMA0
  20. fi
  21. ec_wakeup()
  22. {
  23. echo "write EC[0x0F] = 0x28" >> ${logFile}
  24. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x28 -a 0x0F
  25. sleep 0.5
  26. echo -ne "read EC[0x0F]:" >> ${logFile}
  27. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x0F >> ${logFile}
  28. }
  29. loongson_suspend()
  30. {
  31. if [ "$ARCH" == "mips64" ]; then
  32. ${MYDIR}/rtc_resume ${TIMER}s
  33. else
  34. # echo "set_rtc rtc_resume_la ${TIMER}s"
  35. ec_wakeup
  36. sleep 1
  37. fi
  38. # hwclock -w
  39. # freeze mem disk
  40. echo mem > /sys/power/state
  41. }
  42. loongson_hibernate()
  43. {
  44. ec_wakeup
  45. echo disk > /sys/power/state
  46. }
  47. uos_suspend()
  48. {
  49. rtcwake -m mem -s 60
  50. # hwclock -w
  51. #echo mem > /sys/power/state
  52. }
  53. uos_hibernate()
  54. {
  55. #ec_wakeup
  56. #echo disk > /sys/power/state
  57. rtcwake -m disk -s 60
  58. }
  59. haiguagn_suspend()
  60. {
  61. ec_wakeup
  62. systemctl suspend
  63. }
  64. haiguang_hibernate()
  65. {
  66. ec_wakeup
  67. systemctl hibernate
  68. }
  69. phytium_suspend()
  70. {
  71. ec_wakeup
  72. echo "write EC[0x0C] = 0x0F" >> ${logFile} #aarch64
  73. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x0F -a 0x08
  74. #echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x01 -a 0x0A
  75. sleep 0.5
  76. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x0F -a 0x08
  77. #echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x01 -a 0x0A
  78. sleep 0.5
  79. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x0F -a 0x08
  80. #echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x01 -a 0x0A
  81. sleep 0.5
  82. echo -ne "read EC[0x08]:" >> ${logFile}
  83. #echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x0C >> ${logFile}
  84. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x08 >> ${logFile}
  85. systemctl suspend
  86. #rtcwake -m mem -s 5
  87. #sleep 60
  88. ##ec_wakeup
  89. }
  90. phytium_hibernate()
  91. {
  92. ec_wakeup
  93. echo "write EC[0x1E] = 0x08" >> ${logFile}
  94. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  95. sleep 0.5
  96. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  97. sleep 0.5
  98. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  99. sleep 0.5
  100. echo -ne "read EC[0x08]:" >> ${logFile}
  101. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x08 >> ${logFile}
  102. systemctl hibernate
  103. #sleep 60
  104. #ec_wakeup
  105. }
  106. case "$ARCH" in
  107. mips64)
  108. suspend_action=loongson_suspend
  109. hibernate_action=loongson_hibernate
  110. ;;
  111. loongarch64)
  112. suspend_action=loongson_suspend
  113. hibernate_action=loongson_hibernate
  114. ;;
  115. aarch64)
  116. suspend_action=phytium_suspend
  117. hibernate_action=phytium_hibernate
  118. ;;
  119. x86_64)
  120. #suspend_action=haiguagn_suspend
  121. #hibernate_action=haiguang_hibernate
  122. suspend_action=uos_suspend
  123. hibernate_action=uos_hibernate
  124. ;;
  125. *)
  126. echo "未支持$ARCH架构,测试未进行!"
  127. exit 1
  128. ;;
  129. esac
  130. while [ $count -gt 0 ]
  131. do
  132. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} remaining ${count} times" > $console
  133. echo "还剩余${count}次${ACTION}测试"
  134. echo "[`date`] 还剩余${count}次${ACTION}测试" >> ${logFile}
  135. if read -t 30 -p "按Enter键停止测试!" start; then
  136. chown $login_user_name:$login_user_name $MYDIR -R
  137. echo "测试中止!"
  138. # ifconfig enp1s0 up
  139. # rfkill unblock 0
  140. exit 1
  141. fi
  142. s=$(printf "%-30s" "=")
  143. echo -e "${s// /=}\n" >> ${logFile}
  144. echo -e "${s// /=}\n" >> ${logFile}
  145. count=$(($count-1))
  146. case "${ACTION}" in
  147. suspend)
  148. $suspend_action
  149. ;;
  150. hibernate)
  151. $hibernate_action
  152. ;;
  153. esac
  154. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} finish!" > $console
  155. clear
  156. done
  157. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} all done!" > $console
  158. echo "[`date`] ${ACTION}测试完成" | tee -a ${logFile}
  159. # echo "[`date`] ${count}次${ACTION}测试完成" >> result.txt
  160. chown $login_user_name:$login_user_name $MYDIR -R
  161. read input
  162. exit 0