S-ATA Schnittstelle ansprechen, Daten senden

Gast #1014381
Lesenswert?

Hallo Leute,

ich bin zur Zeit an einem Projekt, bei dem wir eine Art Plattform 
"bauen" wollen, mit der wir Daten aus dem PC an einen FPGA senden wollen 
( was ja sicher nichts außergewöhnlich ist ).
Wir nutzen dazu ein Xilinx Board das die Daten per S-ATA Schnittstelle 
entgegen nehmen soll. ( Die Schnittstelle steht nicht zur Diskussion da 
wir im Endeffekt 480Mbit für ein UWB Modul nutzen wollen )

Mein Problem ist es jetzt wie man in C (++) unter Linux Daten an die 
S-ATA Schnittstelle senden kann.
Könnt ihr mir da weiterhelfen?
Gibt es so eine Art dll die man einbinden kann die einem dann eine Art 
Funktion Write_to_Sata() zur Verfügung stellt?


Ich hab selbst schon google bemüht, finde sowas in Hülle und Fülle, aber 
nur für den Serialen Port ( Com1 ) und nicht den SATA Anschluss.
Vielen Dank im Vorraus
Gruß Kolja
#1014408
Lesenswert?

Was emultiert dein FPGA denn am anderen Ende des SATA-Kabels?
Eine Platte? => einfach auf /dev/sdX zugreifen, evtl mit O_DIRECT.
ansonsten:
Linux verwaltet SATA wie SCSI, d.H. es sollte möglich sein den 
SCSI-Generic-Treiber für dein Gerät einzusetzen.
Dann kannst du entweder direkt auf /dev/sgX arbeiten, oder du nimmst 
eine Library, wie z.B. die ominöse libschilly.

Dokumentation gibts hier:
http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/

Beispiel, das ein simples Kommando sendet:
http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/pexample.html
#1014427
Lesenswert?

Hi Ernst, vielen Dank für die Info.
Das macht mir erstmal Mut. Ich weiß ehrlich gesagt nicht was er emuliert 
aber das kann ich dann ja rausfinden wenn ich ihn in Händen halte und 
angeschlossen habe und mir linux ein neues /dev/sd* Device anbietet oder 
nicht ( oder ich lese einfach mal dann das Manual ).
Ich werde erstmal lesen wie das mit dem SCSI klappt.
Gruß Kolja
#1015385
Lesenswert?

Hey,
nein kannte ich nicht.
Ich hab schon viel gelesen und erfahren, wirklich gut! Vielen Dank 
dafür.
Eines fehlt mir immer noch, was wohl auch an noch nicht vorhandenen 
Kenntnissen in C liegen könnte, hat jemand von euch einen Code 
Schnippsel in dem auf ein SATA Gerät geschrieben wird ?
Ich gehen fürs erste davon aus das der FPGA ein Massenspeicher Emulieren 
wird .. hoffentlich ;).
Gelesen hab ich schon das der Sata Anschluss eigentlich so eine Art 
Schattenregister ist und man "einfach" nur in diese Register schreibt, 
also die Parameter anlegt und dann den Befehl gibt, dann die Daten 
übertragen werden, die Abfrage im Controller gemacht wird und das 
Ergebnis danach wieder in dem Register liegt wo man es dann abfragen 
kann.
Nur wie komme ich denn an die Adresse von dem Register? ist die Hardware 
abhängig vom PC oder stellt Linux mir eine Art /dev/sata-aschluss1 zur 
Verfügung ? Sorry wenn ich so doof fragen muss, ich wüsste sonst nur 
nicht wo ich so etwas erfahren könnte :)

Gruß Kolja
Persönliche Seite #1015397
Lesenswert?

Kolja Windeler wrote:

> Mein Problem ist es jetzt wie man in C (++) unter Linux Daten an die
> S-ATA Schnittstelle senden kann.
> Könnt ihr mir da weiterhelfen?
> Gibt es so eine Art dll die man einbinden kann die einem dann eine Art
> Funktion Write_to_Sata() zur Verfügung stellt?

Kann es sein dass Du Dich da ein bisschen uebernimmst? Also 
Grundkenntnisse in Linux waeren fuer so ein Vorhaben sicherlich nicht 
verkehrt.
#1015441
Lesenswert?

Hi Michael,
das Gefühl habe ich auch ;) aber vielleicht ist es gar nicht so schlimm 
wie es sich jetzt anhört. C Kenntnisse habe ich durchaus und auch mit 
Linux klappt es an sich recht gut. In der Tat habe ich vom Ansprechen 
von externer Hardware unter Linux in C noch keine Ahnung, aber zum Glück 
arbeite ich ja nicht alleine an dem Projekt. Genau genommen bin ich ja 
nur der HiWi, wohingegen 2 andere wirkliche Mitarbeiter den Großteil der 
Probleme erledigen.
Ich dachte mir nur, das es super wäre für mich nur wenn ich ein Beispiel 
Programm hätte das mir prinzipiell sagt wie so etwas abläuft damit ich 
ungefähr weiß wonach ich suchen kann/muss.
Gruß Kolja

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