ArmSoM-Anwendbarkeit und Quelle
Plattformreferenz zur Anpassung an ArmSoM, übersetzt aus der chinesischen Fassung V1.0.0. Geltungsbereich der Quelle: RK3588, Linux 5.10. Ein englisches PDF liegt nicht vor; Englisch, Russisch und Deutsch sind vollständig aus dem Chinesischen übersetzt. Die deutsche Fassung verwendet dieselben Bild-URLs wie die englische. Bestimmte ArmSoM-Boards, SDK/BSP- oder Treiberkombinationen wurden weder bestätigt noch an Hardware geprüft. SoC, Speicheraufteilung des Boards, SDK/BSP, Kernelkonfiguration und Treiberimplementierung prüfen. Code, Adressen, Protokolle und Messwerte sind Quellbeispiele, keine ArmSoM-Testergebnisse.
Redaktionelle Prüfnotizen · ArmSoM Docs · Rockchip Linux
Die Quelle beschreibt die DMA-BUF-Diagnose bei Speicherlecks, Datenflussfehlern und fehlgeschlagenen Speicherabbildungen. Sie enthält keine technischen Abbildungen; es werden keine erfunden.
| SoC der Quelle | Kernel der Quelle |
|---|---|
| RK3588 | Linux 5.10 |
1. Einführung
DMABUF ist eine Pufferstruktur für gemeinsam genutzten Speicher zwischen Multimediageräten. Über den Dateideskriptor eines DMABUF können Geräte Speicher prozessübergreifend teilen. Zero-Copy steigert die Leistung, asynchroner Zugriff verringert die Kopplung der Module.
2. Linux-Anpassungen zur DMABUF-Diagnose
2.1 DMABUF_DEBUG
Im beschriebenen BSP ist DMABUF debug ab Linux-5.10 verfügbar. In arch/arm64/configs/rockchip_defconfig aktivieren:
CONFIG_DMABUF_DEBUG=y
Mit diesem Makro erhält jeder DMABUF standardmäßig einen Namen aus pid+taskname mit 16 Zeichen. Beispiel:
416-allocator@4.
2.2 DMABUF_PROCFS
Im beschriebenen BSP ist DMABUF procfs ab Linux-5.10 verfügbar. In arch/arm64/configs/rockchip_defconfig aktivieren:
CONFIG_RK_DMABUF_PROCFS=y
Die Option erstellt unter /proc/ den Unterknoten rk_dmabuf mit folgenden Diagnoseknoten. Die Kommentare im Block bleiben aus der chinesischen Quelle erhalten:
dev # 显示所有DMABUF已经attach的device
sgt # 显示所有DMABUF的ScatterListTable,显示其IOVA
size # 显示所有DMABUF的total size
peak # 显示所有DMABUF的total size的峰值
Bedeutung der Knoten: dev zeigt angehängte Geräte, sgt die ScatterListTable und IOVA, size die Gesamtgröße und peak deren Höchstwert.
2.3 DMABUF_DEBUG_ADVANCED
Diese Unterfunktion von DMABUF procfs ermittelt die physischen Speicheradressen der DMABUFs. In arch/arm64/configs/rockchip_defconfig aktivieren:
CONFIG_DMABUF_DEBUG_ADVANCED=y
Mit dieser Option werden alle DMABUFs über ein Fake-Gerät angehängt und gemappt, um ihre sgt zu erhalten. Damit soll /proc/rk_dmabuf_sgt sämtliche IOVAs anzeigen. Der Pfad ist wörtlich aus der Quelle übernommen; im verwendeten BSP prüfen.
3. Fragen und Antworten
3.1 DMABUF-Speicherleck bei der Videowiedergabe auf RK3588?
Debugmakros aktivieren und beim Aufrufen des Hauptbildschirms den Speicher prüfen:
console:/ # cat /proc/rk_dmabuf/size
Total: 65552 KiB
Video abspielen, Wiedergabe beenden, Verlauf löschen und zum Hauptbildschirm zurückkehren:
console:/ # cat /proc/rk_dmabuf/size
Total: 83948 KiB
3.2 Maximale DMABUF-Speicherbelegung bei der Videowiedergabe auf RK3588?
Über den mpp-Debugknoten die gesamte DMABUF-Speicherbelegung der Videowiedergabe prüfen:
console:/ # cat /proc/mpp_service/sessions-summary
fdc38100.rkvdec-core Total: 699760 KiB
Den Spitzenwert über den DMABUF-Debugknoten prüfen:
console:/ # cat /proc/rk_dmabuf/peak
Peak: 1544 MiB
Den Spitzenwert auf null zurücksetzen und erneut beobachten:
console:/ # echo 0 > /proc/rk_dmabuf/peak
