Linux: Gerät soll auf physikalischen Speicher schreiben

(Firma: abaxor engineering) #1400596
Lesenswert?

Hallo,

wir entwickeln eine PCIe-Hardware. Diese soll unter anderem Daten in den 
RAM des Hauptprozessors schreiben. Ich bin jetzt gerade dabei ein 
Testprogramm unter Linux zu schreiben.
Ich stelle es mir so vor, dass ich einen Speicherbereich anfordere, 
diesen locke, die physikalische Adresse des Bereichs ermittele und an 
die PCIe-Karte übertrage. Mein Problem ist gegenwärtig, dass der 
angeforderte Speicher virtuell ist und nicht physikalisch auf der 
Adresse liegt, die mir z.B. malloc liefert.
Wie kann ich aus einer Anwendung (als root, ist ja nur für Testzwecke) 
physikalischen Speicher bekommen und dessen Adresse?



Danke Tom
#1401061
Lesenswert?

Thomas Reinemann schrieb:

> Wie kann ich aus einer Anwendung (als root, ist ja nur für Testzwecke)
> physikalischen Speicher bekommen und dessen Adresse?

Auf regulärem Weg in traditionellem Betriebssystemumfeld überhaupt 
nicht. Dazu bedurfte es eines device drivers. Allerdings gibt es in 
neuerer Zeit eine Entwicklung hin zu user space device drivers, also 
Treibern die nicht im Kernel Kontext laufen, sondern vergleichbar zu 
Anwendungen. Könnte sich lohnen, mal in dieser Richtung zu suchen.
#1401106
Lesenswert?

Tja, was du tun willst fällt halt nun nicht in den Aufgabenbereich von 
User-Space-Applications, sondern ist Aufgabe des Kernels.
"bla" hat schon recht mit dem Link. Schließlich hantiert man in Software 
mit virtuellen Adressen und die Hardware mit physikalischen Adressen. 
Also muss man das umsetzen.
#1402080
Lesenswert?

Einige Linux-Systeme bieten ein spezielles Memory-Device (/dev/mem), 
worüber man direkt auf den physkalischen Speicher aus dem User-Space 
zugreifen kann. Siehe 
http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel9a.shtml#9_4

Auf dauer sollte man das ganze aber trotzdem über einen eigenen 
Device-Driver realisieren, der der Anwendung nur die benötigten Daten 
liefert und sich um den Speicher selbst kümmert. Dafür sind Treiber da.

MfG Mark

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren