PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATA IDE Spezifikationen



FirstCoder
03.05.2005, 22:13
Also, vorerst.. ich bin brandneu hier, und von dem was ich hier schon lesen durfte bin echt begeistert. Viele nützliche Infos, interessante Themen und Ideen..
Ich bin die letzten Tage beim rumgooglen öfter hier ins RoboterNetz geflogen und habe mich jetzt halt auch mal angemeldet weil ich natürlich ein konkretes Anliegen habe.
Ich habe es über die Suchfunktion schon versucht, bin aber nicht fündig geworden.

Ich habe schon einiges gefunden, wo Leute z.B. mit einem PIC manuell eine Festplatte ausgelesen oder beschrieben haben..
Ich möchte das anders herum haben. Quasi einen PIC an die IDE im PC hängen, und der soll dann auch als Laufwerk erkannt werden. Als Festplatte oder CDRom würde auch vorerst reichen.

Hat hier jemand vielleicht sowas schon mal gemacht, oder Erfahrungen in dem Bereich?
Also wenn jemand wenigstens Quellen zu Spezifikationen hat, wie das z.B. mitm PC Bios abgehandelt wird oder so, dann wäre ich schon mal echt dankbar.
Bei google habe ich nicht wirklich sinnvolle Infos gefunden.

Marco78
04.05.2005, 18:03
Ein Storage Device selbst bauen? Ich weiss nicht ob das ohne weiteres geht.
Evtl kann ich dir was anderes Vorschlagen? DiskOnChip (DOC) von M-Sys.
Ein Flashspeicher der am ISA-Bus als Laufwerk erkannt wird.
Vielleicht hilft dir das bei der Lösung deines Problems.

Wenn nicht wünsch ich dir weiterhin viel Erfolg!

FirstCoder
04.05.2005, 20:10
Hmm... danke erst mal..
ich habe es mir angeschaut, aber damit komme ich leider nicht weiter.

Ich denke aber nicht, dass es übermässig schwierig ist so etwas selbst zu realisieren, da es ja auch zu beiden Seiten hin Busy-Signale hin gibt. Ich denke selbst wenns recht langsam ist, sollte es aber dennoch funktionieren. mir fehlen halt nur die Ansätze, was die Laufwerkserkennung zum Bios hin angeht.. irgendwie müssen die sich ja austauschen.

ICh habe auch schon darüber nachgedacht das vielleicht aus zu sniffen.. aber das würde auch nicht ganz leicht werden, da das ja auch alles recht fix abgehandelt wird...

Falls noch jemad ne Idee hat, würde ich micht echt freuen..

Marco78
04.05.2005, 20:19
Eine andere Idee hätte ich noch.
Windows XP setzt sich ja Kraft eigener Arroganz über's BIOS. Forsch doch mal nach wie XP die Laufwerke erkennt. Evtl braucht man da das BIOS nicht. (Außer wenn es primary Master werden soll)
Oder Infos suchen wie Mircochip (PIC) und Atmel (AVR) die Festplatten anzapfen.

Sandro
05.05.2005, 10:53
Hallo FirstCoder

Du hast dir damit ganz schön was vorgenommen. Deinem Rechner ne Festplatte vorzugaukeln sollte aber schon realisierbar sein. Aber du hast eine ganze Menge Code zu schreiben.


Wenn du Informationen zum ATA-Standard suchst ist http://www.t13.org/#Standards immer die erste Anlaufstelle.

Festplatten erkennt das BIOS mit dem "IDENTIFY DEVICE"-Kommando.
Erhält eine Festplatte diesen Befehl bereitet sie einen 256 Word Buffer mit Informationen vor. Darin sind die Seriennummer, Festplattenname, Größe, etc. enthalten.

Wenn du das wirklich machen willst solltest du dir zuerst mal den gewünschten ATA-Standard durchlesen.
Danach bildest du ihn einfach komplett nach. Dann wird dein BIOS den Controller auf jeden Fall als Festplatte erkennen.



Ps.
Wozu brauchst du das eigentlich?
Willst du dir deinen eigenen Massenspeicher bauen?

FirstCoder
06.05.2005, 09:50
@Marco78
Dein Gedankenansatz ist gut mit XP, wobei ich mich da ja immernoch auf der falschen Seite bewege, ich müsste das dann noch umdenken..
Ähm.. das Bios nicht brauchen.. ich denke wenn XP meine Hardware als Laufwerk erkennt, wirds das Bios auch verstehen.
Ich wüsste nicht dass Amtel oder Microchip in der Richtung ihre Chips im Einsatz haben (habe schon versucht bei Microchip etwas zu finden), werde aber dort auch noch weiter nachforschen, da es mir wirklich wichtig ist weiter zu kommen.

@Sandro
Hi Sandro, Dein Beitrag gefällt mir besonders gut.
Ich war gerade schon mal kurz auf der t13 Seite, und es sieht so aus als würde ich da weiter kommen.. und das Schlagwort: IDENTIFY DEVICE ist natürlich auch sehr nützlich.
Und wie gesagt, ich möchte es auf jeden Fall umsetzen.. Ist zum glück aber nicht so eilig, ich bin nur gerade sehr motiviert ;)

hmm, und wozu ich es brauche? Da kann ich leider noch nicht so viel zu sagen, da die Idee nicht von mir stammt. Ich wurde damit betraut eine Lösung zu finden diese Idee umzusetzen.
Aber wenn alles soweit sicher ist, dann werde ich bestimmt noch mal davon erzählen.
Dazu kommt, dass ich mir zimlich sicher bin, dass die Zielgruppe die echtes Intresse daran haben bestimmt nicht hier vertreten sind. Also mal vom rein technischen abgesehen recht uninteressant :)

Und danke noch mal für Deine Hilfe.

Marco78
06.05.2005, 10:13
Ein µC bietet ja auch nicht wirklich viel und wirklich schnellen Speicher. Ich denke mal das du zusätzlich ein externen Speicher anschliesst?

Das nicht mind. eine Zielperson hier vertreten ist wäre noch zu beweisen ;)

Mind. Atmel bietet die Möglichkeit eine Festplatte am Chip anzuklemmen und auszulesen! Wie weit Microchip da ist weiss ich nicht, aber ich glaube nicht das die sich gerne anhängen lassen.
Ich meinte damit, das der µC den Festplattencontroller darstellt und du evtl so was brauchbares findest. Aber ich denke ich das alles was bei T13 nicht gelistet ist auch nicht existiert :D

Weiterhin viel Glück und berichte mal den Einsatzzweck.

shadow-netz
06.05.2005, 12:29
Hallo!

Ich wollte noch etwas zu bedenken geben. Eine Festplatte mit einem Controller anzusteuern hat nur relativ wenig mit dem Anschließen eines Controllers an den ATA zu tun.

Denn im ersten Falle kann der Controller den Takt der Datenübertragung vorgeben und auch bestimmen, wie er die Festplatte ansteuert.
Im zweiten Falle ist jedoch der ATA Controller im PC, derjenige, der den Takt vorgibt und der Controller muss reagieren.
Stichwort: PIO, UltraDMA

Auch muss der Controller sämtliche Bus Protokolle mit Timings einhalten können, da er ja kaum alleine an dem Bus hängt.

Je nach Geschwindigkeit ist es daher auch möglich, dass es mit einem MC gar nicht zu schaffen ist, sondern Hardware benötigt.

Sandro
06.05.2005, 19:31
Je nach Geschwindigkeit ist es daher auch möglich, dass es mit einem MC gar nicht zu schaffen ist, sondern Hardware benötigt.

Dem stimme ich zu. Der µC alleine wird das wohl nicht schaffen.
Wenn ich mich richtig erinnere wird das Bussy der Platte nur vor einem Transfer getestet.
Mit einem schnellen RAM oder FIFO als Buffer wird sich dieses Problem aber bestimmt lösen lassen.

In der Festplatte steckt schließlich auch ein µC der den Transfer regelt. Dort wird es auch so gemacht das der Controller erst den Buffer vorbereitet und dann dem Rechner signalisiert das er sich die Daten jetzt abholen darf.

shadow-netz
07.05.2005, 12:56
[quote=shadow-netz]
In der Festplatte steckt schließlich auch ein µC der den Transfer regelt. Dort wird es auch so gemacht das der Controller erst den Buffer vorbereitet und dann dem Rechner signalisiert das er sich die Daten jetzt abholen darf.

mit dieser Aussage wär ich vorsichtig...
ich vermute eher, dass es ein stück dedizierte hardware ist, die kaum bzw gar nicht mehr programmiert werden kann.

Sandro
07.05.2005, 14:59
Ich bin natürlich kein Experte für Festplatten. Aber ich habe mich recht intensiv mit dem ATA3-Standard beschäfftigt.

Es existiert auch ein Befehl zum download von Mikrocode. Damit kann man die Firmware der Platte updaten.
Dies macht in meinen Augen nur Sinn wenn ein Controller in der Platte steckt der den Code auch ausführen kann. Ich gehe davon aus das es sich dabei um einen ASIC handelt. Also eine Mischung aus den beiden angesprochenen Meinungen.

Ein Controller alleine wird wohl bei der großen Busgeschwindigkeit nicht mitkommen. Da stimme ich dir zu. Aber mit der von mir oben angesprochenen Metode sollte es dennoch möglich sein so etwas zu bauen.

shadow-netz
07.05.2005, 15:26
Klar ist es ein ASIC.
Firmware können aber auch nur reine Parameter und kein ausführbarer Code sein. Von daher alles Spekulation.

Einzige wichtig ist, dass sich der "Controller" an spezielle Timings halten muss, da er nur Slave im Sinne des ATA ist und sein Takt vorgegeben bekommt.

Ich hab mal ein USB Slave in einem FPGA gebaut. Das ist so ähnlich. Ein kommandobasiertes Protokoll. Auf jeden Fall hab ich trotz genauster Spec einen Logicanalyzer gebraucht um Kleinigkeiten zu debuggen.

FirstCoder
07.05.2005, 22:18
So, ich musste jetzt erst mal nachschauen, was ein ASIC überhaupt ist :)

So ein Dingen wäre natürlich nicht schlecht, es würde ja einiges an arbeit einsparen, wenn ich das Teil quasi nur parametrieren müsste.

Nur habe ich das Gefühl, dass die lieben Hardwarehersteller diese Dinger nur für sich entwickeln, und nicht nach aussen hin verkaufen.. Ich müsste einfach mal ein paar Chips von Festplatten notieren und bei deren Herstellern mal nachforschen.
Vielleicht finde ich dort ja etwas passendes..

Und nochmal danke für die zahlreichen Anregungen.

shadow-netz
08.05.2005, 08:24
nun, alles was du in deiner bastelkiste als IC hast ist in dem sinne ein ASIC. ein chip geschaffen für eine bestimmte anwendung.

FirstCoder
09.05.2005, 22:32
ich habe jetzt mal anscheinend was konkretes gefunden.

So etwas meintet ihr doch, oder?

http://www.atmel.com/dyn/resources/prod_documents/doc2049.pdf

shadow-netz
10.05.2005, 08:08
jap. nur halt wahrscheinlich net für cd/dvd.
für was genau weiß nur der threadersteller ;)

Marco78
10.05.2005, 17:42
Fast genau das meinte ich. Nur halt für HDD (wenn das da nicht mit drin is. Sah aber nich so aus).