status.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #!/bin/bash
  2. function check_temp_cmosis (){
  3. #sensor temp from bank reg
  4. local value=`pci -r 0x9110 -s 8 | grep 9110 | awk '{print $2}' | cut -c 1-8`
  5. local sensor_tmp=${value:4:4}
  6. sleep 0.01
  7. local value=`pci -r 9030 | awk '{print $2}' | cut -c 6-6`
  8. # for 48 MHz use 48/40, for 40 MHz use 40/40 for clk_ratio offset can differ per
  9. # device
  10. if [ "$value" == "0" ]; then
  11. local clk_mhz=40
  12. local clk_ratio=$(echo "scale = 2; 40/40" | bc)
  13. else
  14. local clk_mhz=48
  15. local clk_ratio=$(echo "scale = 2; 48/40" | bc)
  16. fi
  17. local offset_zero_celsius=$(echo "scale = 2; 1000*$clk_ratio " | bc)
  18. local tmp_slope_sensor=$(echo "scale = 2; 0.3/$clk_ratio" | bc)
  19. # sensor temperature
  20. let "sensor_tmp=16#$sensor_tmp"
  21. # use 48/40 for 40MHz, or 40/40 for 40 MHz main clock
  22. sensor_tmp=$(echo "scale = 2; ($sensor_tmp-$offset_zero_celsius)*$tmp_slope_sensor" | bc)
  23. # echo "Sensor temperature,according to the datasheet: $sensor_tmp C"
  24. echo "Sensor temperature, clock $clk_mhz MHz: $sensor_tmp C"
  25. }
  26. function check_fpga_status () {
  27. #fpga temperature and monitor status from bank reg
  28. local value=`pci -r 0x9110 -s 8 | grep 9110 | awk '{print $2}' | cut -c 1-8`
  29. local fpga_tmp=${value:0:4}
  30. local fpga_mon=${value:0:1}
  31. # fpga monitor
  32. let "fpga_mon=16#$fpga_mon"
  33. fpga_mon=$(echo "ibase=10;obase=2;$fpga_mon" | bc)
  34. fpga_mon=$(printf "%04d\n" $fpga_mon)
  35. fpga_mon=${fpga_mon:0:3}
  36. # fpga temperature
  37. let "fpga_tmp=16#$fpga_tmp"
  38. fpga_tmp=$(echo "ibase=10;obase=2;$fpga_tmp" | bc)
  39. fpga_tmp=$(printf "%016d\n" $fpga_tmp)
  40. let "fpga_adc=2#${fpga_tmp:3:10}"
  41. fpga_tmp=$(echo "scale = 2; (($fpga_adc*503.975)/1024.)-273.15 " |bc)
  42. echo "FPGA temperature: $fpga_tmp C"
  43. if [ "$fpga_mon" != "000" ]; then
  44. echo "ERROR FPGA MONITOR: $fpga_mon"
  45. else
  46. echo "MONITOR OK"
  47. fi
  48. }
  49. input=$@
  50. for i in "$@"; do
  51. case $i in
  52. --help)
  53. SHOW_USAGE=YES
  54. shift
  55. ;;
  56. --verbose)
  57. VERBOSE=YES
  58. shift
  59. ;;
  60. *)
  61. WRONG=YES
  62. shift
  63. ;;
  64. esac
  65. done
  66. if [ -z "$input" ]; then
  67. check_temp_cmosis
  68. check_fpga_status
  69. exit 0
  70. fi
  71. if [ "$SHOW_USAGE" ]; then
  72. echo "Usage: status.sh [] [--help] [--verbose]"
  73. exit 0
  74. fi
  75. if [ "$VERBOSE" ]; then
  76. check_temp_cmosis
  77. check_fpga_status
  78. pci -r 9000 -s 120
  79. exit 0
  80. fi
  81. if [ "$WRONG" ]; then
  82. echo -e "\e[31m !!!WRONG ARGUMENT!!!, check status.sh --help \033[1;m"
  83. exit
  84. fi