來源: http://processors.wiki.ti.com/index.php/Processor_Linux_SDK_Graphics_and_Display#Quick_guide_to_available_plugins
Processor Linux SDK Graphics and Display
處理器Linux SDK圖形與顯示
TI SOC如AM355x,AM437x和AM57xx使用3D cores,能夠利用專用硬體加速3D操作。 專用硬體是以Imagination Technologies的SGX系列設備為基礎。 圖形核心僅加速圖形操作,並且不執行video解碼操作。(有關video加速的信息,請參閱相應的SOC技術參考手冊)
下表列出了此SDK支持的各種TI系列和SGX cores資訊:
TI SOC 名稱 |
SGX Core |
SGX Core 版本 |
Max SGX Core Frequency (MHz) |
AM335x |
SGX530 |
1.2.5 |
200 |
AM437x |
SGX530 |
1.2.5 |
200 |
AM57xx |
SGX544 |
1.1.6 |
532 |
由於3D加速器(SGX core)在ARM core之外,圖形driver在ARM core上運行,並且包含OS特定的driver code,此code用於映射SGX core,並從運行於ARM core上的OS對引擎(engine )制定安排(program)。當前版本的SGX DDK提供OpenGLES2.0和EGL libraries,這些libraries由Processor SDK中的圖形堆疊(stacks)使用,例如QT5和Wayland / Weston,目前不支持基於Mesa-EGL的應用程序。
此章節的主題包含以下內容:
1.圖形的軟體架構
2.有關如何運行圖形demo的說明
3.關於如何運行PVR工具的說明
4.有關如何運行DSS應用程序的說明
5.遷移(Migration)指南
6.SGX debugging提示
7.SoC性能(Performance)監控工具
以下3D圖形Demo可藉由Matrix使用。 下表提供了這些demo的列表,並有簡要說明。
Demo Name |
Details |
ChameleonMan |
This demo shows a matrix skinned character in combination with bump mapping. |
CoverFlow |
This is a demonstration of a coverflow style effect |
ExampleUI |
This demo shows how to efficiently render sprites and interface elements. |
Navigation |
This is a demonstration of how to implement rendering algorithms for Navigation software. |
Kmscube |
This demo shows how to render and display multi-colored spinning cube |
Note that some of the 3D Graphics demos are from Imagination's PowerVR SDK.
藉由指令做圖形demo:
圖形driver和用戶空間庫(userspace libraries)和bin檔們與SDK一起分配。
圖形demo也可以從指令去運行。 為此,請從連接到EVM的鍵盤按Ctrl-Alt-Backspace退出Weston。 然後,如果LCD屏幕保持在“請稍候...”,按Ctrl-Alt-F1轉到LCD console上的command line。 之後,可以從serial console,SSH console或LCD console使用指令。
在運行這些demo之前,請確保板子已連接到至少一個顯示器。
Finding Connector ID 尋找連接器ID
注意:Demos中使用的大多數應用程序都需要用戶傳遞一個連接器ID。 連接器id是分配給連接到系統的每個顯示設備的數字。 要獲得連接的顯示設備的列表和相應的連接器ID,可以使用modetest應用程序(隨文件系統一起提供),如下所述:
target # modetest
查找需要連接器ID的顯示設備,例如HDMI,LCD等。
Connectors:
id encoder status type size (mm) modes encoders
4 3 connected HDMI-A 480x270 20 3
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 flags: phsync, pvsync; type: preferred, driver
...
16 15 connected unknown 0x0 1 15
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
800x480 60 800 1010 1040 1056 480 502 515 525 flags: nhsync, nvsync; type: preferred, driver
通常LCD分配為16(800×480),HDMI分配為4(多重解析度)。
Finding Plane ID
target # modetest
尋找Planes的部分。 (節取Planes部分的sample輸出如下)
Planes:
id crtc fb CRTC x,y x,y gamma size
19 0 0 0,0 0,0 0
formats: RG16 RX12 XR12 RA12 AR12 XR15 AR15 RG24 RX24 XR24 RA24 AR24 NV12 YUYV UYVY
props:
...
20 0 0 0,0 0,0 0
formats: RG16 RX12 XR12 RA12 AR12 XR15 AR15 RG24 RX24 XR24 RA24 AR24 NV12 YUYV UYVY
props:
...
kmscube
在默認顯示器中運行kmscube:
target # kmscube
在第二個顯示器中運行kmscube:
target # kmscube -c <connector-id>
target # kmscube -c 16 #For example, the connector id for secondary display is 16.
在所有連接的顯示器(LCD及HDMI)中kmscube:
target # kmscube -a
Wayland/Weston
支持Wayland / Weston的版本帶來了擴展桌面模式下的多重顯示支持,以及將窗口從一個顯示拖放到另一個顯示的功能。
要啟動weston,請執行以下操作:
在目標console上:
target # unset WAYLAND_DISPLAY
On default display:
target # weston --tty=1 --connector=<default connector-id>
On secondary display:
target # weston --tty=1 --connector=<secondary connector-id>
On all connected displays (LCD and HDMI):
target # weston --tty=1
默認情況下,屏幕保護程序time out配置為300秒。
用戶可以使用指令選項更改屏幕保護程序time out
--idle-time=<number of seconds>
例如,要將超時設置為10分鐘,並將weston配置為在所有連接器上顯示,請使用以下命令:
weston --tty=1 --idle-time=600
要禁用屏幕超時並將weston配置為在所有連接器上顯示,請使用以下命令:
weston --tty=1 --idle-time=0
如果您在上述程序中遇到任何問題,請參閱GLSDK_FAQs#Unable_to_run_Weston_on_the_GLSDK_release
filesystem帶有預先配置的weston.ini文件,位於
/etc/weston.ini
Running weston clients
Weston client端範例可以從serial port console或SSH console上的command line運行。 啟動weston後,用戶應該能夠使用鍵盤和鼠標進行各種控制。
# /usr/bin/weston-flower
# /usr/bin/weston-clickdot
# /usr/bin/weston-cliptest
# /usr/bin/weston-dnd
# /usr/bin/weston-editor
# /usr/bin/weston-eventdemo
# /usr/bin/weston-image /usr/share/weston/terminal.png
# /usr/bin/weston-resizor
# /usr/bin/weston-simple-egl
# /usr/bin/weston-simple-shm
# /usr/bin/weston-simple-touch
# /usr/bin/weston-smoke
# /usr/bin/weston-info
# /usr/bin/weston-terminal
Running multimedia with Wayland sink
Wayland的GStreamer視頻接收器(video sink)是waylandsink。 要使用此視頻接收器進行視頻播放:
target # gst-launch-1.0 playbin uri=file://<path-to-file-name> video-sink=waylandsink
Exiting Weston 退出Weston
在離開Weston之前終止所有Weston client。 如果您從serial console調用Weston,請按Ctrl-C退出Weston。
也可以從本地(native)console調用Weston,使用Ctrl-Alt-Backspace退出Weston。
IMG PowerVR Demos
Processor SDK filesystem隨OpenGLES應用程序範例一起提供。 可以使用以下命令調用這些示例。
target # /usr/bin/SGX/demos/Raw/OGLES2Coverflow
target # /usr/bin/SGX/demos/Raw/OGLES2ChameleonMan
target # /usr/bin/SGX/demos/Raw/OGLES2ExampleUI
target # /usr/bin/SGX/demos/Raw/OGLES2Navigation
在顯示界面上看到輸出後,按q終止應用程序。
使用PowerVR工具
PowerVR工具套件旨在實現快速圖形應用程序開發。 它針對一系列領域,包括資產導出(asset exporting)和優化,PC仿真,原型開發環境,線上和離線性能分析工具等等。 有關工具和詳細文檔的更多詳細信息,請參閱http://community.imgtec.com/developers/powervr/graphics-sdk/。
目標file system包括PowerVR工具的子集,例如來自Imagination PowerVR SDK的PVRScope和PVRTrace記錄器libraries,用於配置和跟踪SGX活動。 此外,它還包括PVRPerfServerDeveloper工具。
PVRTune
PVRTune是一個及時GPU效能分析工具. 它捕獲硬體timing data以及計數器, 以幫助效能瓶頸的辨識。 PVRPerfServerDeveloper應與在PC上運行的PVRTune一起使用,以在SGX加載和活動線程(activity threads)上收集數據。 您可以使用以下命令調用該工具:
target # /opt/img-powervr-sdk/PVRHub/PVRPerfServer/PVRPerfServerDeveloper
PVRTrace
PVRTrace是一個OpenGL ES API記錄和分析實用程序。PVRTrace GUI提供離線工具來檢查捕獲的數據,識別冗餘調用(redundant calls),突顯昂貴的著色器(shaders)等等。 默認filesystem包含了用於獲取圖形應用程序的PVRTrace的協助script。 然後可以使用PVRTrace實用程序在PC上播放此軌跡。
要開始追踪,請使用以下命令作為參考:
target # cp /opt/img-powervr-sdk/PVRHub/Scripts/start_tracing.sh ~/.
target # ./start_tracing.sh <log-filename> <application-to-be-traced>
上述命令將執行以下操作:
1.設置追踪所需的環境
2.在當前工作目錄下創建一個名為pvrtrace的目錄
3.啟動用戶指定的應用程序
4.開始追踪PVR交互作用(Interactions)並記錄到<log-filename>中
5.要結束追踪,用戶可以調用Ctrl-C,將顯示追踪文件路徑。
追踪文件然後可以傳輸到PC,我們可以使用主機端PVRTrace utility可視化(visualize)其應用程序。 有關詳細訊息,請參閱本節開頭的連結。
Running DSS application on AM5 Devices
DSS applications應用程序以omapdrm為基礎。 它們將示範(demonstrate)克隆模式(clone mode. 仿製功能: 讓兩台螢幕輸出可以擁有相同的畫面),擴展模式(extended mode: 讓另一個螢幕水平或垂直的延伸原本桌面),覆蓋窗口(overlay window),z順序(z-order)和alpha混合功能(alpha blending features)。 為了示範克隆和擴展模式,HDMI顯示器必須連接到板子。 此應用程序需要連接的顯示器和平面ID的支持的模式信息。 可以通過在filesystem中運行modetest來獲取這些信息。
target # modetest
Running drmclone application
這會在LCD和HDMI(clone)上顯示相同的測試格式(pattern)。 覆蓋窗口(overlay window)也顯示在LCD上。 要測試克隆模式,請執行以下命令:
target # drmclone -l <lcd_w>x<lcd_h> -p <plane_w>x<plane_h>:<x>+<y> -h <hdmi_w>x<hdmi_h>
e.g.: target # drmclone -l 1280x800 -p 320x240:0+0 -h 640x480
我們可以通過改變x + y值來改變覆蓋窗口的位置。 例如。 240 + 120將顯示@中心
Running drmextended application
這將在LCD和HDMI上顯示不同的測試格式(pattern)。 覆蓋窗口也顯示在LCD上。 要測試擴展模式,請執行以下命令:
target # drmextended -l <lcd_w>x<lcd_h> -p <plane_w>x<plane_h>:<x>+<y> -h <hdmi_w>x<hdmi_h>
e.g.: target # drmextended -l 1280x800 -p 320x240:0+0 -h 640x480
Running drmzalpha application
Z順序:
用於確定哪個重疊窗口出現在另一個的頂部。
範圍:0到3
最低值為底
最高值為頂
Alpha Blend (Alpha混合):
"Alpha" 指的是「不透明度」= "Opacity"
Alpha Blending 是指當有兩個 Pixel 在同一個位置時,且上方的 Pixel 為「透明的」(也就是其 alpha < 1),如此一來,後方的 Pixel 就應該會“透出“來。事實上 Alpha Blending 也就是我們常說的 Compositing。
簡單地說這是一種讓3D物件產生透明感的技術。
屏幕上顯示的3D物件,每個像素中有紅、綠、藍三組數值。
若3D環境中允許像素能擁有一組α值,我們就稱它擁有一個α通道。
α值是記載像素的透明度,範圍在0.0(透明)到1.0(不透明)之間這樣。
一來使得每一個物件都可以擁有不同的透明程度。
比如說,玻璃會擁有很高的透明度,而一塊木頭可能就沒什麼透明度可言。
α混合這個功能,就是處理兩個物件在螢幕畫面上疊加的時候,還會將α值列入考慮,使其呈現接近真實物件的效果。 (http://welkinchen.pixnet.net/blog/post/39627841-alpha-blending)
由global alpha和pre multiplied alpha來決定圖像的透明度程度結果。
global alpha範圍:0到255
0 - 完全透明
127 - 半透明
255 - 完全不透明
pre multiplied alpha:0或1
0 – 來源(source)不是alpha的premultiply
1 – 來源是與alpha的premultiply
要測試drmzalpha,請執行以下命令:
target # drmzalpha -s <crtc_w>x<crtc_h> -w <plane1_id>:<z_val>:<glo_alpha>:<pre_mul_alpha> -w <plane2_id>:<z_val>:<glo_alpha>:<pre_mul_alpha>
e.g.: target # drmzalpha -s 1280x800 -w 19:1:255:1 -w 20:2:255:1
QT Graphics Framework (QT圖形框架)
Qt是一個強大的C ++工具包,用於編寫跨平台圖形應用程序,使單個代碼庫(single code base)可以在Windows和嵌入式平台上可預測地運行,
有關Qt的更多詳細信息,請參閱https://www.qt.io/
PSDK target filesystem包括/usr/lib下的pre-built Qt libraries和/usr/share/qt5/examples下的一組豐富的QT demo應用程序。 QT demo應用程序的一個小子集,如Calculator和Animatedtiles也可以通過Matrix調用。
QT QPA
PSDK中的QT5是預先建立的,並使得Wayland可啟用,因此wayland-egl是默認的QPA。 因此,所有QT應用程序都應該在Weston之上運行。 要運行沒有Weston的QT應用程序,用戶可以使用“ - platform”選項來指定所需的QPA為“linuxfb”或“eglfs”。
Migration Guide from Processor SDK 1.x to 2.x for AM3, AM4(處理器AM3,AM4-從SDK 1.x到2.x的遷移指南)
SGX driver已加強到以可在處理器SDK 2.0中支持以DRM為基礎的全窗口顯示(Full Window Display),並且不再支持以FBdev為基礎的全窗口模式(Full Window modes)。 除了以下更改外,系統啟動和大多數Graphics應用程序都是向下兼容(backward-compatible)的。
Window System Libraries
不再支持以FBdev為基礎的全螢幕視窗(Full Screen window)系統:
- 1. libpvrPVR2D_FRONTWSEGL.so(用於直接寫入FrameBuffer - FRONT操作模式 - 直接寫入FrameBuffer,而不等待vsync - 最快的操作模式)
- 2. libpvrPVR2D_FLIPWSEGL.so(用於VSync同步寫入Framebuffer - 較慢,但避免撕裂(tearing))
- 3. libpvrPVR2D_BLITWSEGL.so(用於直接寫入後台緩衝區(back-buffer),晚點寫入帶有同步的FrameBuffer)
相反地,提供了以DRM為基礎的全螢幕視窗系統(Full Screen window system):
- 1. libpvrDRMWSEGL_FRONT.so(用於直接寫入DRM FrameBuffer - FRONT操作模式 - 直接寫入FrameBuffer,而不等待vsync - 最快的操作模式)
- 2. libpvrDRMWSEGL.so(用於VSync同步寫入DRM Framebuffer - 較慢,但避免撕裂(tearing))
視窗系統由在PVR配置文件/etc/powervr.ini中的PVR配置參數WindowSystem指定。默認情況下,對於nullDRM Front模式,該參數設置為libpvrDRMWSEGL_FRONT.so。要將PVR SGX配置為在nullDRM FLIP模式下操作,請編輯PVR配置文件以將參數WindowSystem設置為libpvrDRMWSEGL.so。更改將在下次啟動任何Graphics應用程序時生效。
Obsolete Test Programs
以下測試程序不再適用,並從SDK文件系統中刪除
- /usr/bin/sgx_blit_test
- /usr/bin/sgx_flip_test
- /usr/bin/sgx_render_flip_test
- /usr/bin/sgx_render_test
Migration Guide from Processor SDK 2.0.0 to 2.0.x for AM4(AM4處理器-從SDK 2.0.0到2.0.x的遷移指南)
SGX driver已經加強到可支持以DRM / WAYLAND為基礎的處理器SDK 2.0.1之多窗口顯示(Multi-Window Display)。除了以下更改外,系統啟動(System startup)和大多數Graphics應用程序都是向下兼容(backward-compatible)的。
Window System Libraries
不再支持以DRM為基礎的全螢幕窗口系統(Full Screen window systems):
- 1. libpvrDRMWSEGL_FRONT.so(用於直接寫入DRM FrameBuffer - FRONT操作模式 - 直接寫入FrameBuffer,而不等待vsync - 最快的操作模式)
- 2. libpvrDRMWSEGL.so(用於VSync同步寫入DRM Framebuffer - 較慢,但避免撕裂(tearing))
相反地,提供了以DRM / WAYLAND為基礎的多視窗系統(multi-window system):
libpvrws_KMS.so
libpvrws_WAYLAND.so
視窗系統將基於不同應用程序的使用狀況去由DDK去動態載入,以便不再使用PVR配置文件/etc/powervr.ini中的PVR配置參數WindowSystem。
Migration Guide from Processor SDK 2.0.1 to 2.0.x for AM3/4/5 (AM3/4/5-從SDK 2.0.1到2.0.x的遷移指南)
SGX driver已加強至可在處理器SDK 2.0.2中支持DRM基礎(DRM-based)之全螢幕(NullDRM)和多視窗(Multi-Window)(Wayland)顯示(Display)。除了以下更改外,系統啟動(System startup)和大多數Graphics應用程序都是向下兼容(backward-compatible)的。
Window System Libraries
支持以DRM為基礎的全螢幕視窗系統(Full Screen window system):
- 1. libpvrDRMWSEGL.so(用於VSync同步寫入DRM Framebuffer - 較慢,但避免撕裂(tearing))
還提供以DRM / WAYLAND為基礎的多視窗系統(multi-window systems):
libpvrGBMWSEGL.so
libpvrws_WAYLAND.so
視窗系統將基於不同應用程序的使用狀況去由DDK去動態載入,以便不再使用PVR配置文件/etc/powervr.ini中的PVR配置參數WindowSystem。
Debugging SGX driver related issues ( Debug SGX driver的相關問題)
對於debug問題與SGX driver和常見問題,可於此討論
http://processors.wiki.ti.com/index.php/SGXDbgInfo
SOC Performance monitoring tools on AM5 Devices (SOC AM5設備上的性能監測工具)
Introduction
SOC性能監測工具是一組被包在default filesystem中的工具,允許用戶在螢幕上即時地顯示各種SOC參數。
目前,有兩個工具和一套scripts和程序(utilities)來使用它們。
- 1. soc-performance-monitor
- 2. soc-ddr-bw-visualize
這兩個應用程序都是Wayland應用程序,需要在運行Weston後調用。
這些工具帶來了可顯示以下項目的能力:
- DDR BW Utilization (DDR頻寬利用率)
- Overall DDR BW Usage (整體DDR頻寬使用)
- Split of the traffic between the two EMIF's (分離兩個EMIF之間的流量)
- A real time "top" like functionality that depicts the list of "Top 6" initiators generating the traffic. (即時“top”, 類似於描述生成流量的“前6個”發起者的列表的功能。(蛤))
- Voltage of the various rails (各種導軌的電壓)
- Frequency of the various cores (各個內核的頻率)
- Temperature (read from on die temperature sensors) 溫度(從芯片溫度傳感器讀取)
- CPU Load information of the various processor cores including the GPU and DSP. (包括GPU和DSP的各種處理器核心的CPU負載信息。)
- Boot time results (requires rebuild of u-boot and kernel), refer instructions below. (boot時間結果(需要重建u-boot和kernel),請參考以下說明。)
- Power plot (Will be available soon. Note that this requires board modification on the EVM) (功率圖(將很快可用。請注意,這需要EVM上的電路板修改))
Getting started
Prepare the card with PLSDK 3.0.0 or later.( 準備PLSDK 3.0.0的卡或更高版本)
Boot up 開機
Start weston
target # /etc/init.d/weston start
將所需script複製到臨時文件夾(這是為了讓您以後嘗試設置)
target # mkdir temp
target # cd temp
target # cp /etc/glsdkstatcoll/* .
target # cp /etc/visualization_scripts/* .
在上述操作之後,應該在目錄中看到以下文件
target # ls -al
drwxr-xr-x 2 root root 4096 Mar 22 18:01 .
drwxr-xr-x 3 root root 4096 Mar 22 18:01 ..
-rw-r--r-- 1 root root 114 Mar 22 18:01 config.ini
-rw-r--r-- 1 root root 265 Mar 22 18:01 dummy_boot_time_results.sh
-rw-r--r-- 1 root root 419 Mar 22 18:01 dummy_cpu_load.sh
-rw-r--r-- 1 root root 899 Mar 22 18:01 getFrequency.sh
-rw-r--r-- 1 root root 2293 Mar 22 18:01 getTemp.sh
-rw-r--r-- 1 root root 371 Mar 22 18:01 getVoltage.sh
-rw-r--r-- 1 root root 254 Mar 22 18:01 initiators.cfg
-rw-r--r-- 1 root root 143 Mar 22 18:01 list-boot-times.sh
-rw-r--r-- 1 root root 367 Mar 22 18:01 send_boot_times_to_monitor.sh
-rw-r--r-- 1 root root 496 Mar 22 18:01 soc_performance_monitor.cfg
-rw-r--r-- 1 root root 133 Mar 22 18:01 start_visualization_test.sh
運行soc-performance-monitor,此工具有兩個先決條件。
- 1. 需要創建在文件soc_performance_monitor.cfg中配置的fifo的名稱
- 2. 文件soc_performance_monitor.cfg應存在於當前目錄中。 這應該在上面的步驟中完成。
創建fifo(在soc_performance_monitor.cfg中提到)
target # mkfifo /tmp/socfifo
運行各種性能指標(performance metrics)的工具
target # soc-performance-monitor &
運行DDR BW可視化工具
target # mkfifo /tmp/statcollfifo
target # soc-ddr-bw-visualizer &
以下部分將討論如何將數據填充到工具和可能的進一步的控制。
Quick guide to available plugins 可用插件之快速指南
插件是可用於向SOC性能監視工具發送命令的實體(entities)(script/native binaries)。
其主要目的是將可視化引擎(visualization engine)與數據收集部分分離,並允許應用程序的完全配置。
當調用應用程序(soc-performance-monitor)時,它使用設置為零的默認數據啟動。 要填充真實的值,用戶可以使用預建filesystem中提供的script。
Temperature data 溫度數據
溫度數據從片上溫度寄存器(on-die temperature registers)讀取並發送到可視化工具。 filesystem附帶有執行此功能的script。
target # sh getTemp.sh
調用以上命令將把當前溫度去填於溫度表格。
Voltage data
電壓數據從omapconf實用程序讀取,然後解析出所需的信息,以便稍後發送到可視化工具。 filesystem附帶有執行此功能的script
target # sh getVoltage.sh
調用以上命令將把不同導軌的配置電壓填於溫度表格
Frequency data
頻率數據從omapconf實用程序讀取,然後解析出所需的信息,稍後發送到可視化工具。 filesystem附帶有執行此功能的script。
target # sh getFrequency.sh
調用以上命令將把各個cores的配置頻率填於頻率表格。
CPU Load information
CPU load information需要每個core都具有單獨的插件模塊(plugin modules)。 這被設想為每個系統之間是不同的。默認filesystem包含讀取MPU(A15)和GPU(SGX544 MP2)所需的插件。 用於測量IPU1,IPU2,DSP1和DSP2負載的其他插件將在稍後提供。
Measuring the MPU load
Filesystem有一個稱為“mpuload”的binary可填充,它讀取/proc/stat介面並導出加載。 用戶可以在後台運行該實用程序:
target # mpuload FIFO
Example usage:
target # mpuload /tmp/socfifo 1000 &
運行此binary後,CPU load之條形圖中的MPU load將以1秒的間隔動態更新。
Measuring the GPU load
Filesystem有一個稱為“pvrscope”的binary可填充,它經由名為libPVRScopeDeveloper.a的library讀取SGX暫存器。該實用程序調用IMG提供的API作為Imagination PowerVR SDK的一部分,然後填充所需的FIFO。
使用說明:
target # pvrscope <option> <time_seconds>
options:
-f write into the FIFO (/tmp/socfifo)
-c output to console
time:
1-n specified in seconds
0 run forever
運行此實用程序後,CPU load區域之BAR圖形中的GPU load將以1秒的間隔更新。
Measuring the DSP load
Filesystem有一個稱為“dsptop”的binary可填充,其收集DSP使用信息,然後填充所需的FIFO。
用戶可以在後台運行該實用程序:
target # dsptop –r <update_freq> –f fifo –o /tmp/socfifo –d <update_freq> -n <# of updates>
Example usage:
target # dsptop –r 1 –f fifo –o /tmp/socfifo –d 1 –n 100 &
運行該binary之後,CPU load之條形圖(Bar Graph)中的DSP負載將以“-r,-d”指定的間隔更新,例如“-r 1 -d 1”表示間隔為1秒。
(驗證一直出現 dsptop internal error: Fatal: : Invalid format argument 的錯誤訊息??)
Boot time measurement
此功能將在未來版本中提供。
Order of execution 執行順序
性能可視化工具必須按以下順序執行:
- Launch weston
- Create required FIFOs
- Configure the .cfg file to suit the required settings
- Run the soc-performance-monitor and/or soc-ddr-bw-visualizer
- Run the plugins to populate data
Config file format配置文件的格式
配置文件具有以下格式。
有3種不同類型的可定義的section,請參考特定section了解更多詳細信息。
通用格式為:
[SECTION_NAME]
VALUE_1
VALUE_2
..
..
VALUE_N
SPECIAL VALUE
<blank line>
section類型:
GLOBAL 全域
TABLE 表
BAR GRAPH 條狀圖
GLOBAL section:
SECTION_NAME若指定為GLOBAL,則後為一系列的成對之鍵(key)值(value)。
[GLOBAL]
KEY_1=VALUE_1
KEY_2=VALUE_2
..
..
KEY_n=VALUE_n
<blank>
Global configurations
認可的全域值之列表為:
REFRESH_TIME_USECS
FIFO
MAX_HEIGHT
MAX_WIDTH
X_POS
Y_POS
REFRESH_TIME_USECS:
這將決定實用程序將運行的時間間隔。
該值以微秒(micro seconds)為單位指定
這個值決定了一個主要的權(平)衡,較低的速率將增加CPU負載和GPU負載。
理想值約為100000 usecs
FIFO:
這一段的值是可用於與應用程序通信的被命名之pipe或fifo。
用戶需要創建一個fifo(如果它不存在應用程序將提示)
MAX_HEIGHT, MAX_WIDTH:
應用程序的寬度和高度。
這可以以表(table)和條形圖(bar graph)實體(entities)的數量為基礎來調整。
X_POS, Y_POS:
決定應用程序的起始偏移(starting offset)。
注意,有移動應用程序的command(參考command部分)。
TABLE section:
section名稱可為下列其一:
BOOT_TIME
TEMPERATURE
VOLTAGE
FREQUENCY
[TABLE_NAME]
VALUE_1
VALUE_2
..
..
VALUE_N
TITLE="TABLE TITLE",UNIT="unit to be displayed"
<blank line>
注意:TITLE = list是逗號分隔值的列表,TITLE和UNIT是唯一支持的值。
BAR GRAPH section:
本section是最簡單的部分,除了名稱和標題之外,不允許進行太多配置。
它遵循以下格式:
[GRAPH_NAME]
VALUE_1
VALUE_2
..
..
VALUE_N
TITLE OF THE GRAPH
<blank line>
Commands:
FIFO可用於與soc-performance-monitor應用程序通信,並從command line或其他應用程序傳遞數據。
有幾個命令已被實現以經由FIFO去幫助修改正在運行的應用程序。
commands通常具有以下格式:
"INSTRUCTION: DATA_1 ... DATA_N"
並且它們可以經由簡單的一個迴聲(echo)發送到soc-performance-monitor:
echo "INSTRUCTION: DATA_1 ... DATA_N" > FIFO
目前支持的commands列表是:
- 1. TABLE
- 2. CPULOAD
注意:要在序列中執行一系列命令,建議在兩個命令之間插入一個延遲REFRESH_TIME_USECS。
TABLE command
TABLE command的格式為:
"TABLE: ROW_NAME value unit"
當發出此命令時,該工具將找尋一個ROW_NAME在 Colum 0的表項,然後用“value unit”更新為表的Colum 1,
如果沒有找到ROW_NAME,那麼這個命令沒有效果。 請注意,這會限制所有表格行(rows)都需要具有唯一的名稱。 為了確保這一點,必須檢查soc_performance_monitor.cfg文件以確保唯一的名稱。
舉例:要更新MPU的FREQUENCY表,用戶可以發送以下命令:
echo "TABLE: FREQ_MPU 1500 MHz" > /tmp/socfifo
CPULOAD command
CPULOAD command的格式為:
"CPULOAD: CORE_NAME value" > FIFO
CORE_NAME has to be one of the names specified in the soc_performance_monitor.cfg.
value is in the range 0 to 100
通常來說,是經由應用程序去監視特定core的負載,來調用CPULOAD命令。
在每個系統中,檢索特定core的CPULOAD的機制可以變化(vary),並且出於這個原因已經提供了幾個插件,並且提供作進一步的範例。
舉例:要更新GPU的CPULOAD表,用戶可以發送以下命令:
echo "CPULOAD: GPU 87" > /tmp/socfifo
Executing in debug mode
要在debug mode下啟動應用程序以獲取關於工具內部工作的非常詳細之數據,請使用以下選項啟動該工具:
# soc-performance-monitor 1
Build instructions
該工具的完整source為可用,所需方法已作為配方(recipes)的一部分進行了更新,並上傳到meta-arago。
基本上,如果用戶構建如SDG中記錄的Yocto filesystem,該工具將作為它的其中一部分去重新編譯。
Configuration of the soc-ddr-bw-visualizer
請參閱#Using_the_statistics_collector_.28bandwidth_application.29
- 1. 工具運行的總時間使用config.ini配置。
- 2. 為了允許更精細的控制粒度(granularity)來選擇感興趣的發起者(initiators),用戶將必須修改initiator.cfg。(蛤)
該工具必須重新啟動才能使新設置生效。
留言列表