So fälschen Sie den Vordergrund für ein im Hintergrund gestartetes Programm (Linux und Darwin)Linux

Linux verstehen
Guest
 So fälschen Sie den Vordergrund für ein im Hintergrund gestartetes Programm (Linux und Darwin)

Post by Guest »

Das Open-Source-Tool Trice ermöglicht die Verwendung von RTT für die Datenübertragung. Leider handelt es sich bei den bereitgestellten SEGGER-Tools um Closed-Source-Tools und das optionale und kostenpflichtige SDK ermöglicht keine kostenlose Verteilung der kompilierten Binärdateien. Ich habe einen zuverlässigen Weg gefunden, JLinkRTTLogger (Closed Source) zu verwenden, indem ich es im Hintergrund startete und die Zwischendatendatei im Trice-Tool verarbeitete. Das funktioniert gut unter Windows. Bei Darwin und Linux scheint das anders zu sein. Ich muss JLinkRTTLogger in einem Terminal starten und kann von einem zweiten Terminal aus auf die Zwischendatendatei zugreifen. Es sieht so aus:
Terminal 1:

Code: Select all

rm ./temp/trice.bin && JLinkRTTLogger -Device STM32G0B1RE -If SWD -Speed 4000 -RTTChannel 0 ./temp/trice.bin
SEGGER J-Link RTT Logger
...
Getting RTT data from target. Press any key to quit.
------------------------------------------------------------

Transfer rate: 0 Bytes/s Data written: 3.27 KB
Terminal 2:

Code: Select all

touch ./temp/trice.bin && trice log -p FILE -args ./temp/trice.bin -prefix off -hs off -d16 -ts ms  -i ../../demoTIL.json -li ../../demoLI.json -pf none
triceExamples.c    12        0,000  Hello! 👋🙂
...
Für meinen Geschmack ist das etwas unpraktisch für die Entwickler, aber ich bekomme keine Verbindung, wenn ich JLinkRTTLogger nicht im Vordergrund starte:

Code: Select all

JLinkRTTLogger -Device STM32G0B1RE -If SWD -Speed 4000 -RTTChannel 0 ./temp/trice.bin &
[4] 86285
th@P51-DebianKDE:~/repos/trice/examples/G0B1_inst$ SEGGER J-Link RTT Logger
Compiled Dec 18 2024 15:48:21
(c) 2016-2017 SEGGER Microcontroller GmbH, www.segger.com
Solutions for real time microcontroller applications

Default logfile path: /home/th/.config/SEGGER

------------------------------------------------------------

------------------------------------------------------------
Connected to:
SEGGER J-Link ST-LINK
S/N: 779220206

Searching for RTT Control Block...
Es bleibt hier hängen und sobald ich fg eingebe wird eine Verbindung hergestellt:

Code: Select all

...
Searching for RTT Control Block...fg
JLinkRTTLogger -Device STM32G0B1RE -If SWD -Speed 4000 -RTTChannel 0 ./temp/trice.bin
OK.
1 up-channels found:
0: Terminal
Selected RTT Channel description:
Index: 0
Name:  Terminal
Size:  1024 bytes.

Output file: ./temp/trice.bin

Getting RTT data from target. Press any key to quit.
------------------------------------------------------------

Transfer rate: 734 Bytes/s Data written: 50.44 KB
Meine Frage ist, wie ein laufendes Programm feststellt, ob es sich im Vordergrund oder im Hintergrund befindet, und wie ich dem im Hintergrund laufenden Programm „Vordergrund“ vortäuschen könnte. Das Trice-Tool ist in Go geschrieben und nutzt das Exec-Paket zum Starten von JLinkRTTLogger (erfolgreich nur unter Windows, sonst stellt es keine Verbindung her). /usr/local/go/src/os/exec/exec.go:

Code: Select all

// Unlike the "system" library call from C and other languages, the
// os/exec package intentionally does not invoke the system shell and
// does not expand any glob patterns or handle other expansions,
// pipelines, or redirections typically done by shells. The package
// behaves more like C's "exec" family of functions. To expand glob
// patterns, either call the shell directly, taking care to escape any
// dangerous input, or use the [path/filepath] package's Glob function.
Ich bezweifle, eine Zielverbindung zu erhalten, indem ich zuerst intern eine Shell aufrufe, da, wie gezeigt, der &-Operator die betreffende Funktionalität bereits blockiert.
Ich habe erfolglos nach einer Lösung gesucht und bin nur auf die Idee gekommen, eine virtuelle Maschine zu verwenden, was keine clevere Lösung zu sein scheint. Ich kenne openOCD, aber es gibt noch andere Probleme.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post