在 Raspberry Pi 中我們可以利用 vcgencmd 指令來查看各種的硬體資訊與狀態,以下是常用的指令範例。
時脈頻率(clock frequency)
如果要查詢硬體目前的時脈頻率,可以使用 measure_clock 參數:vcgencmd measure_clock <clock>其中的 <clock> 是指定要查詢的硬體,可用的選項有 arm、 core、 h264、 isp、 v3d、 uart、pwm、 emmc、 pixel、 vec、 hdmi、 dpi。
如果要查詢 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> 是指定要查詢的硬體,可用的選項有 core、 sdram_c、 sdram_i、 sdram_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,可用的選項有:H264、 MPG2、 WVC1、 MPG4、 MJPG、 WMV9。
查詢所有 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其中 28 與 30 代表硬體序號(serial)與修訂版(revision)的版本號碼,/proc/cpuinfo 中所顯示的序號與修訂版本號碼就是從這裡取得的,而 Model B/B+ 的網路卡 MAC 卡號也是根據硬體序號來產生的。
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
查看 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 Wiki、 raspberrypi.org、 maketecheasier、 lokir's linux notes
沒有留言:
張貼留言