Zynq CPU温度读取
1,驱动位置:
配置:CONFIG_XILINX_AMS
位置:drivers/iio/adc/xilinx-ams.c
设备树:
arch/arm64/boot/dts/lingmou/zynqmp.dtsi
compatible = “xlnx,zynqmp-ams-ps”;
compatible = “xlnx,zynqmp-ams-pl”;
2,节点位置:
/sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_offset
/sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_raw
/sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_scale
/sys/bus/iio/devices/iio:device0/in_temp1_remote_temp_offset
/sys/bus/iio/devices/iio:device0/in_temp1_remote_temp_raw
/sys/bus/iio/devices/iio:device0/in_temp1_remote_temp_scale
/sys/bus/iio/devices/iio:device0/in_temp2_pl_temp_scale
/sys/bus/iio/devices/iio:device0/in_temp2_pl_temp_offset
/sys/bus/iio/devices/iio:device0/in_temp2_pl_temp_raw
3,计算公式:
Temp = (temp_scale * (temp_raw + temp_offset))/1000;
例子:
root@lingmou:/media/sd-mmcblk1p1# cat /sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_offset
-36058
root@lingmou:/media/sd-mmcblk1p1# cat /sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_raw
40274
root@lingmou:/media/sd-mmcblk1p1# cat /sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_scale
7.771514892
root@lingmou:/media/sd-mmcblk1p1# awk '{ printf "%.1f\n", ((($1 -36058)*7.771514892)/1000) }' < /sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_raw
34.3
脚本:
#!/bin/bash
while((1))
do
echo "==================="
awk '{ printf "ps:%.1f\n", ((($1 -36058)*7.771514892)/1000) }' < /sys/bus/iio/devices/iio:device0/in_temp0_ps_temp_raw
awk '{ printf "pl:%.1f\n", ((($1 -36058)*7.771514892)/1000) }' < /sys/bus/iio/devices/iio:device0/in_temp2_pl_temp_raw
awk '{ printf "remote:%.1f\n", ((($1 -36058)*7.771514892)/1000) }' < /sys/bus/iio/devices/iio:device0/in_temp1_remote_temp_raw
sleep 0.8
done
4,参考:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842163/Zynq+UltraScale+MPSoC+AMS
https://www.cirmall.com/bbs/thread-208473-1-1.html
https://ai.baidu.com/forum/topic/show/957496