跳转至

使用 vcgencmd 指令查看 Raspberry Pi 的 CPU 溫度、運行速度與電壓等資訊

這裏介紹如何使用 vcgencmd 指令查看 Raspberry Pi 的 CPU 溫度、運行速度與電壓等資訊,即時監控硬體的狀態。

在 Raspberry Pi 中我們可以利用 vcgencmd 指令來查看各種的硬體資訊與狀態,以下是常用的指令範例。

(adsbygoogle = window.adsbygoogle || []).push({});

時脈頻率(clock frequency)

如果要查詢硬體目前的時脈頻率,可以使用 measure_clock 參數:

vcgencmd measure_clock <clock>

其中的 <clock> 是指定要查詢的硬體,可用的選項有 armcoreh264ispv3duartpwmemmcpixelvechdmidpi

如果要查詢 CPU 的時脈頻率(也就是速度),可以執行

vcgencmd measure_clock arm

輸出為

frequency(45)=700000000

如果想查詢所有的硬體時脈頻率,可以使用簡單的 shell 指令稿:

for src in arm core h264 isp v3d uart pwm emmc pixel vec hdmi dpi ; do \
  echo -e "$src:\t$(vcgencmd measure_clock $src)" ; \
done

輸出為

`arm:   frequency(45)=700000000

core:  frequency(1)=250000000

h264:  frequency(28)=250000000

isp:   frequency(42)=250000000

v3d:   frequency(43)=250000000

uart:  frequency(22)=3000000

pwm:   frequency(25)=0

emmc:  frequency(47)=250000000

pixel: frequency(29)=108000000

vec:   frequency(10)=0

hdmi:  frequency(9)=163682000

dpi:   frequency(4)=0`

電壓(voltage)

如果要查詢硬體目前的工作電壓,可以使用 measure_volts 參數:

vcgencmd measure_volts <id>

其中 <id> 是指定要查詢的硬體,可用的選項有 coresdram_csdram_isdram_p。如果沒有指定 <id>,則預設為 core

vcgencmd measure_volts

輸出為

volt=1.200V

查詢所有工作電壓的 shell 指令稿:

for id in core sdram_c sdram_i sdram_p ; do \
  echo -e "$id:\t$(vcgencmd measure_volts $id)" ; \
done

輸出為

`core: volt=1.200V

sdram_c: volt=1.200V

sdram_i: volt=1.200V

sdram_p: volt=1.225V`

溫度(temperature)

如果要查詢 BCM2835 SoC 目前的溫度,可以使用 measure_temp 參數:

vcgencmd measure_temp

輸出為

temp=43.3’C

Codec

若要查詢特定的 codec 有沒有啟用,可以使用 codec_enabled 參數:

vcgencmd codec_enabled <codec>

其中 <codec> 是指定要查詢的 codec,可用的選項有:H264MPG2WVC1MPG4MJPGWMV9

查詢所有 codec 的指令稿:

for codec in H264 MPG2 WVC1 MPG4 MJPG WMV9 ; do \
  echo -e "$codec:\t$(vcgencmd codec_enabled $codec)" ; \
done

輸出為:

`H264: H264=enabled

MPG2: MPG2=disabled

WVC1: WVC1=disabled

MPG4: MPG4=enabled

MJPG: MJPG=enabled

WMV9: WMV9=disabled`

設定值(configurations)

get_config 參數可以列出目前系統中所有被設定的參數值:

vcgencmd get_config [config|int|str]

最後一個參數可用來指定要查詢的設定值名稱或是類型,例如查詢 temp_limit 的數值可以執行:

vcgencmd get_config temp_limit

輸出為

temp_limit=85

查詢所有數值資料的設定值可用

vcgencmd get_config int

輸出為

`hdmi_force_hotplug=1

disable_overscan=1

overscan_left=24

overscan_right=24

overscan_top=16

overscan_bottom=16

program_serial_random=1

config_hdmi_boost=4

emmc_pll_core=1

hdmi_force_cec_address=65535

framebuffer_ignore_alpha=1

framebuffer_swap=1

disable_splash=1

temp_limit=85

force_pwm_open=1

pause_burst_frames=1

second_boot=1

avoid_fix_ts=1`

記憶體配置

Raspberry Pi 的 CPU 與 GPU 是共用同同一個記憶體的,get_mem 參數可以查詢目前記憶體的配置狀態。查詢配置給 CPU 的記憶體大小:

vcgencmd get_mem arm

輸出為

arm=448M

查詢配置給 GPU 的記憶體大小:

vcgencmd get_mem gpu

輸出為

gpu=64M

韌體版本(firmware version)

查詢韌體版本可以使用

vcgencmd version

輸出為

`Dec 19 2014 18:44:06

Copyright (c) 2012 Broadcom

version 5abd572e2ed1811283443387af09377b95501c50 (clean) (release)`

OTP 記憶體

若要查詢 SoC 裡面 OTP(one time programmable)記憶體的內容,可以使用 otp_dump

vcgencmd otp_dump

輸出為

`08:00000000

09:00000000

10:00000000

11:00000000

12:00000000

13:00000000

14:00000000

15:00000000

16:00280000

17:1020000a

18:1020000a

19:ffffffff

20:ffffffff

21:ffffffff

22:ffffffff

23:ffffffff

24:ffffffff

25:ffffffff

26:ffffffff

27:0000c2c2

28:4b45c38d

29:b4ba3c72

30:00000010

31:00000000

32:00000000

33:00000000

34:00000000

35:00000000

36:00000000

37:00000000

38:00000000

39:00000000

40:00000000

41:00000000

42:00000000

43:00000000

44:00000000

45:00000000

46:00000000

47:00000000

48:00000000

49:00000000

50:00000000

51:00000000

52:00000000

53:00000000

54:00000000

55:00000000

56:00000000

57:00000000

58:00000000

59:00000000

60:00000000

61:00000000

62:00000000

63:00000000

64:00000000`

其中 2830 代表硬體序號(serial)與修訂版(revision)的版本號碼,/proc/cpuinfo 中所顯示的序號與修訂版本號碼就是從這裡取得的,而 Model B/B+ 的網路卡 MAC 卡號也是根據硬體序號來產生的。

查看 vcgencmd 所有可用的參數

如果要查看 vcgencmd 指令所有可用的參數,可以執行

vcgencmd commands

輸出會類似這樣:

commands=”vcos, ap_output_control, ap_output_post_processing, vchi_test_init, vchi_test_exit, pm_set_policy, pm_get_status, pm_show_stats, pm_start_logging, pm_stop_logging, version, commands, set_vll_dir, led_control, set_backlight, set_logging, get_lcd_info, set_bus_arbiter_mode, cache_flush, otp_dump, test_result, codec_enabled, get_camera, get_mem, measure_clock, measure_volts, scaling_kernel, measure_temp, get_config, hdmi_ntsc_freqs, hdmi_adjust_clock, hdmi_status_show, hvs_update_fields, pwm_speedup, force_audio, hdmi_stream_channels, hdmi_channel_map, display_power, read_ring_osc, memtest, get_rsts, render_bar, disk_notify, inuse_notify, sus_suspend, sus_status, sus_is_enabled, sus_stop_test_thread, egl_platform_switch, mem_validate, mem_oom, mem_reloc_stats, file, vctest_memmap, vctest_start, vctest_stop, vctest_set, vctest_get”

這些就是所有可以使用的參數,這些參數會因為韌體版本不同而有差異。

如果您對於樹莓派的應用有興趣,建議您可以繼續閱讀物聯網的相關文章。

參考資料:Embedded Linux Wikiraspberrypi.orgmaketecheasierlokir’s linux notes

(adsbygoogle = window.adsbygoogle || []).push({});

原文链接: https://blog.gtwang.org/iot/raspberry-pi-vcgencmd-hardware-information/