Forum: Mikrocontroller und Digitale Elektronik USB - Ide - PC-Adressen


von F.H. (Gast)


Lesenswert?

Ich habe einen USB zu Ide Adapter , leider wird nur der USB Treiber
angezeigt,nicht die pysikalischen Adressen,gibt es ein Programm,welches
den Adressraum anzeigt,welches ein USB Gerät nutzt ? MFG F.H.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es benutzt keine physikalischen Adressen, daher können die auch nicht
angezeigt werden.

Nur in sehr seltenen Ausnahmefällen werden physikalische Adressen auf
ein USB-Gerät abgebildet, so etwas macht beispielsweise der Selbstbau
USB-Parallelportadapter von Henrik Haftmann (dessen Gerätetreiber fängt
I/O-Zugriffe auf die Adressen der Parallelschnittstelle ab).

Was hast Du vor?

von F.H. (Gast)


Lesenswert?

Moin,ich möchte die Leitungen eventuell auch physikalisch nutzen,also
per Adresse ansprechen,zum Beispiel eine Leitung eischalten,siehst Du
da ne Möglichkeit ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, da gibt es keine Möglichkeit.
Die gibt es übrigens auch nicht bei USB-Parallelport-Adaptern, mit
Ausnahme des von mit erwähnten Selbstbauprojektes von H. Haftmann*.
Das verhält sich weitestgehend genau so wie eine "echte"
Druckerschnittstelle.

Übrigens lässt auch die normale IDE-Schnittstelle keine Zugriffe zu,
die definiert einzelne Leitungen auf bestimmte Pegel legen; die
IDE-Schnittstelle ist nichts anderes als ein (recht kastrierter)
Prozessorbus, mit Adress- und Datenleitungen und noch etwas
Steuerungskram drumherum.

Um an irgendwelchen Leitungen zu wackeln, empfiehlt sich ein
FT245/FT232 im Bit-Bang-Modus (nicht per VCP-Treiber, aber mit den
FTDI-DLLs zu erreichen).


*)
http://www-user.tu-chemnitz.de/~omat/bastelecke/Rund%20um%20den%20PC/USB2LPT/

von F.H. (Gast)


Lesenswert?

Moin,jede Schnittstelle

 lässt Lese ,bzw. Schreibzugiffe zu , sofern die Adressen bekannt sind,
wenn zum Beispiel ein Ide Gerät am Bus hängt, wird es ja auch
gemultiplext angeprochen, leider gibt es ja vermehrt nur Teiber oder
DLL's ,dessen Funktion nicht bekannt sind,aber im Grunde wird die
Orginalfunktion,also der Direktzugriff nur emuliert,oder liege ich da
falsch ?

von Michael U. (Gast)


Lesenswert?

Hallo,

das stimmte aber nur solange, wie die Hardware keine eigene Intelligenz
mitbrachte.
Wenn z.B. der I/O-Baustein am Parallel-Port nur die Möglichkeit bietet,
ein Byte in ein Register zu schreiben und dann automatisch intern das
Timing für die Quittungsleitungen erzeugt, kannst Du garnichts
machen...
Warum sollte ein USB-IDE-Adapter dem Host irgendwelche physikalischen
Adressen seines Prozessors mitteilen? Es würde doch über die serielle
USB-Verbindung sowieso keinem nutzen. Der Treiber sagt dem Adapter doch
sowieso nicht: "jetzt lege die Daten an D0-D15 des IDE, jetzt setze CS
auf L, jetzt setze WR auf L,...".
Wann sollte da das Byte auf der Platte sein?
Der Treiber schickt den Bufferinhalt, das Kommando schreib den Kram mal
in Sektor 1345 der Platte.
Wie der Kram da hin kommt (Steuerbyte anlegen, LBA-Adresse senden,
Sektor-Write senden usw.), erledigt doch sowieso die Intelligenz des
USB-IDE-Adapters.

Gruß aus Berlin
Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich weiß nicht so ganz, worauf Du da hinauswillst oder was Du Dir da im
einzelnen vorstellst, nur musst Du schon zwischen einer
Busschnittstelle wie der IDE-Schnittstelle und so etwas wie dem
Parallelport unterscheiden. Das hat mit Treiberarchitekturen, DLLs oder
ähnlichem erst mal gar nichts zu tun.

Während es durch geeignete Programmierung der Parallelporthardware
durchaus möglich ist, beispielsweise ein bestimmtes Bitmuster dauerhaft
an den Datenleitungen anzulegen, ist das bei der IDE-"Schnittstelle"
rein physikalisch ein Ding der Unmöglichkeit, genauso, wie es beim ISA-
oder auch PCI-Bus nicht möglich ist, einzelne Leitungen
"anzusprechen".

Bei Zugriffen auf IDE-Geräte wird auch von der
Windows-Treiberarchitektur nichts emuliert, sondern der Treiber führt
sehr wohl I/O-Zugriffe auf die Hardware-I/O-Adressen der Schnittstelle
aus; Anwendungsprogramme greifen auf diese I/O-Adressen sowieso nicht
zu.

Eine Emulation findet unter Windows nur dann statt, wenn DOS-Programme
vermeintlich direkte Hardwarezugriffe auf Standardhardwarekomponenten
der PC-Architektur (Schnittstellen, Interruptcontroller,
Timerbausteine, DMA-Controller etc.) durchführen - in diesen Fällen
wird dem DOS-Programm nur vorgegaukelt, es würde direkt mit der
Hardware kommunizieren.

Aber auch das hat nichts mit Deinem Wunsch

> ich möchte die Leitungen eventuell auch physikalisch nutzen,
> also per Adresse ansprechen,zum Beispiel eine Leitung eischalten

zu tun.

Du musst Dich von der Vorstellung trennen, daß Schnittstellen in PCs
mit Portleitungen von Microcontrollern vergleichbar wären.

von F.H. (Gast)


Lesenswert?

Du musst Dich von der Vorstellung trennen, daß Schnittstellen in PCs
mit Portleitungen von Microcontrollern vergleichbar wären.

Moin,von dieser Vorstellung würde ich mich nur unschwer trennen,denn,
wenn ein Bus oder eine Leitung pysikalisch da ist kann man das auch
nutzen, im Grunde ist ein PC ja nix anderes als ein etwas grösserer
Micro, leider werden die Funktionen lediglich versteckt,und müssen
mühselig herausgefunden werden,mfg F.H.

von *.* (Gast)


Lesenswert?

Es ist ein USB-Gerät, es hängt am USB-Controller.

Dann fang mal mit den Addressen des USB-Controllers an :D

von F.H. (Gast)


Lesenswert?

Genau,wenn die verwendeten DLL'`s hierfür offenliegen würden,hätte man
ja die Möglichkeit auf seine Hardware problemlos zuzugreifen,die
Datenbreite der Prozessoren  nimmt stetig zu, aber eine Hardware, wie
z.B. eine diekte 32 oder 64 Bit Parallelschnittstelle gibt es
nicht.F.H.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Was würde es dir bringen, dir einen Treiber selber zu schreiben?

von André K. (freakazoid)


Lesenswert?

Mann bist Du stur. Glaub Rufus doch.
Wenn Deine USB2IDE-Bridge nicht gestattet einzelne Leitungen zu setzen,
kannst Du das vergessen.

Der PC sagt nur:
Ich hab da einen Datenblock für die Platte. Der soll nach xxxxx.
Die Bridge setzt das intern um um die IDE-Platte zu bedienen und
antwortet dem PC.
DU KOMMST NICHTMAL IN DEI NÄHE DER IDE-LEITUNGEN !

Grüße, Freakazoid

von Dominic R. (dominic)


Lesenswert?

USB mass storage Protokolle verwenden SCSI Kommandos, die von der
USB2IDE Bridge dann in IDE Zugriffe umgesetzt werden. Der IDE (auch
ATA) Bus ist dabei, wie schon erwähnt, ein Prozessorbus - das ATA steht
für AT attachment, also ein Anhang an den ISA Bus der AT Rechner. Und
ein Prozessor-Bus ist nun mal kein GPIO Interface - du kannst zwar über
GPIO ein Bus Protokoll emulieren (-> langsam), aber eben nicht
andersrum.

Auch ein 64-bit Prozessor hat, sofern er noch über P-ATA (parallel ATA,
also "IDE") Schnittstellen verfügt, einen 16-bit breiten Bus vom
Controller zur Festplatte. Ausserdem geht der Trend nicht zu breiteren
Bussen sondern zu seriellen Bussen mit nur wenigen Datenleitungen,
siehe USB, PCI-E und S-ATA.

Zum Thema eigene Treiber: Kaum zu glauben, aber sowas gibt es :-P
Mittlerweile 15 Jahre alt, erfreut sich steigender Beliebtheit, nennt
sich Linux, und du findest für (fast) jedes Gerät Treiber im
Quellcode.

Gruesse,

Dominic

von Philipp B. (philipp_burch)


Lesenswert?

Besorg dir von TI einen USB-Controller als Sample (TUSBxxx), die haben
einen 8051 integriert, da kannst du dann deine Leitungen setzen. Da
gibt's auch einen, der eine integrierte ATA(PI)-Schnittstelle hat
(TUSB6250). Hat halt 80 Pins, also löten solltest dazu schon können.

Nochmal zu den Datenleitungen von einem BUS: Bei einem Bus gibt es im
Normalfall HARDWARE, die die BUS-Zugriffe steuert. Wie auf den
Datenleitungen des BUSses schlussendlich rumgeklimpert wird
interessiert nur die Hardware und was die damit macht kann der
steuernde Proz eben NICHT bestimmen. Der kann sich nur darum kümmern,
dass die Daten bis zum BUS-Treiber und von da wieder zurück gelangen.

von F.H. (Gast)


Lesenswert?

Irgendwie habe ich mich wohl unklar ausgedrückt,also noch einmal:

Angenommen , ich kaufe mir einen USB Chip,diesen Chip kann ich
natürlich mit der beiliegenden Software ansprechen,Port für Port

Jetzt kaufe ich mir einen USB - Ide Adapter, den kann ich nur nicht
ansprechen,weil, Protokoll unbekannt,meine Frage war lediglich ,kennt
jemand eine Möglichkeit diesen per USB anzusprechen.


Ich denke,ich habe eine Lösung gefunden.

von André K. (freakazoid)


Lesenswert?

> Angenommen , ich kaufe mir einen USB Chip,diesen Chip kann ich
> natürlich mit der beiliegenden Software ansprechen,Port für Port
Was ist ein USB-Chip?
Ein USB-Controller, der am yC/PC-Bus hängt?
Ein Chip, welcher per USB angebunden wird (z.B. USB2IDE, USB2RS232,
...)?
Ein ...?

> Jetzt kaufe ich mir einen USB - Ide Adapter, den kann ich nur nicht
> ansprechen,weil, Protokoll unbekannt
Protokoll wird wohl SCSI über USB sein. Ist im Datenblatt bestimmt
beschrieben. Wenn es so unbekannt wäre, müßte jede USB2IDE-Bridge den
eigenen Treiber mitbringen. Microsoft liefert aber einen
'Universaltreiber' mit.

> Ich denke,ich habe eine Lösung gefunden.
Okay. Welche? Würde mich jetzt ein wenig interessieren.

Grüße, Freakazoid

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das Protokoll ist in der Spezifikation der "USB Mass Storage Device
Class" beschrieben. Das wird nicht nur von USB-IDE-Adaptern, sondern
auch von USB-Kartenlesern und USB-"Sticks" verwendet. Auch
USB-SCSI-Adapter (wie der alte Adaptec USB Connect 2000) verwenden
dieses Protokoll.

"Port für Port" lässt sich aber auch damit nichts ansprechen.

Auch an einer nicht über USB angeschlossenen IDE-"Schnittstelle"
lässt sich nichts "Port für Port" ansprechen, ebensowenig, wie es bei
einem PCI-Slot möglich ist, die einzelnen Leitungen "Port für Port"
anzusprechen.

Wenn das verwendete USB-Protokoll bekannt ist, dann kann unter Umgehung
eines Devicetreibers mit libusb bzw. dessen Win32-Portierung mit dem
Gerät kommuniziert werden - aber auch hier nicht "Port für Port".


Um mich nochmal zu zitieren:

   Du musst Dich von der Vorstellung trennen, daß
   Schnittstellen in PCs mit Portleitungen von
   Microcontrollern vergleichbar wären.

Deine Antwort darauf zeigt, daß Dir an entscheidenden Stellen
Grundlagenkenntnisse zu fehlen scheinen:

   Moin,von dieser Vorstellung würde ich mich nur unschwer
   trennen,denn, wenn ein Bus oder eine Leitung pysikalisch
   da ist kann man das auch nutzen,
   im Grunde ist ein PC ja nix anderes als ein etwas grösserer
   Micro, leider werden die Funktionen lediglich versteckt,
   und müssen mühselig herausgefunden werden,mfg F.H.

Nein. Bei busorientierten Architekturen (da muss man gar keinen PC für
hernehmen, jeder Mikroprozessor ohne integrierte Peripherie genügt
vollends) ist ein programmgesteuerter Zugriff auf einzelne Leitungen
des Busses nicht möglich. Da ist nichts verborgen oder mühselig
herauszufinden, das ist einfach nur ein anderes Funktionsprinzip.

Sieh Dir beispielsweise mal an, wie ein 8080, Z80 oder 6502 mit der
Außenwelt kommuniziert. Da werden nur Adressen auf einen Adressbus
gelegt, mit ein paar Steuerleitungen herumgewackelt und Daten auf den
Datenbus gelegt oder von diesem gelesen. Was anderes geschieht nicht.

Und die Funktion bestimmter Peripheriebausteine ist festgelegt und
nicht frei programmierbar - ein VGA-Anschluss lässt sich nicht durch
irgendwelche Ports dazu bringen, irgendetwas anderes zu machen.

von Läubi (Gast)


Lesenswert?

Rufus das wäre aber doch ein Ausweg aus der "kein Parrallelport"
Missere! Einfach nen Programmer für den bei Notebooks meist vorhandenen
VGA Ausgang und los kann das lustige programmieren gehen. Man muß nur
rausfinden wo die Funktion versteckt ist um einzelne "ports" des VGA
Ausgangs zu setzen oder einzulesen LOL

von inoffizieller WM-Rahul (Gast)


Lesenswert?

und man bräuchte auch einen USB-RS232-Umsetzer mehr, da man den
VGA-Ausgang auch noch als serielle Schnittstelle benutzen kann. ;)

von Läubi (Gast)


Lesenswert?

Logisch! hat ja auch viel mehr pins als son popeliger LTP könnte man
glatt als µC Ersatz verwenden!!!!!!!!!!!!!!!!!! :D

von F.H. (Gast)


Lesenswert?

Naja,wer Ahnung hat, kann problemlos die VGA Signale decodieren und als
Steuerbus verwenden,aber das wäre ein neues Thema,aber da bei dem
eigentlichem Thema schon nichts rausgekommen ist,verläuft wohl auch
dieses im Sande,mfg F.H.

von Dominic R. (dominic)


Lesenswert?

Die VGA Signale sind analog - klar kannst du die dekodieren (genau das
mache ich im Moment, da weder meine Grafikkarte noch mein Monitor sich
auf digitale DVI Signale verstehen), aber zur aktuellen Diskussion
trägt das nur soweit bei, wie dich die Teilnehmer auf die Schippe
nehmen wollen.

Gruss,

Dominic (nich mehr ganz nüchtern, meints aber trotzdem so)

von F.H. (Gast)


Lesenswert?

Moin Dominic,von meiner Seite sollte auch nur ein Witz sein,aber durch
die Unwissenheit hier nehmen sich die meisten Teilnehmer ja schon
selbst auf die Schippe

von Profi (Gast)


Lesenswert?

Auf dem VGA-Interface gibt es sehr wohl auch digitale Signale. Ist Dir
noch nicht aufgefallen, dass Dein PC Hersteller und Typ Deines Monitors
weiß?

So weit ich weiß, ist es eine I2C auf Pins 12 (SDA) und 15 (SCL).

von Dominic R. (dominic)


Lesenswert?

Noe. Der VGA Standard kannte noch kein DDC, das wurde erst mit VESA VGA
eingeführt ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.