Hallo zusammen,
ich hab mal ne Grundlagenfrage zu Compact Flash.
Wie schafft man es auf einer CF-Card Speichergrößen von über 64MB bereitzustellen/drauf zuzugreifen?
Laut Spezifikation hat eine CF-Card 16 Datenpins und 10 Adresspins.
Wenn ich jetzt ganz naiv Rechne komme ich auf (2^16)Bit = 64kByte, 64kByte * 2^10 = 64MByte. Mehr geht da nicht.
Ich komm einfach nicht dahinter. Hab mir auch die Spezifikation runtergeladen, aber ich bin nicht in der Lage diese Information da rauszuholen.
Gruß
Minesweeper XL
Fotografieren und Filmen 2.964 Themen, 18.474 Beiträge
Und was genau rechnest du da "ganz naiv"? Die xPins haben doch, soweit ich das verstanden habe[korrigier mich wenn ich falsch liege!], nichts mit der Anzahl der FlashSpeicherzellen, die die Dateninformation aufnehmen, zutun.
Diese Pinsangaben beziehen sich doch nur auf den Controler in der Karte.
Zitat:The CF Specification can support capacities up to 137GB
http://de.wikipedia.org/wiki/CompactFlash
http://www.informatik.uni-essen.de/SysMod/lehre/StudArbeiten/vNR/Texte/CPU-Chip.html
Ja, stimmt. Ich meine die Pins (und deren Belegung). Mir geht es nur darum zu erfahren wie man über den Controller auf die abgelegten Daten zugreifen kann. Mit meiner Rechnung hab ich nur festgestellt das der Speicherzugriff wohl nicht so einfach von statten gehen kann.
Ich gehe fest der Annahme das ein Bezug zwischen der Menge der Daten und Adresspins und der maximalen Speicherkapazität besteht.
Ich versuche rauszukriegen wie das Hostinterface agieren muß, um die "bis zu 137GB" (bin auch über die Zahl gestolpert) auszulesen.
Ich nehme an man kann nicht auf die Bits einzeln zugreifen, sondern immer nur Blöcke auslesen. Doch wie groß ist ein solcher Block?
Exakt, so ist es...
Doch wie groß ist ein solcher Block?
Schätze spontan eine Sektorgröße von min. 0,5KB, wobei wie bei Festplatten auch andere möglich sein dürften...
Da hab ich doch ein Bit übersehen.
Hab ganz übersehen das es 11 Adresslines sind. Das ändert zwar meine (nachvollziehbare maximale Kapazität), doch komme ich unter keinen Umständen auf die gigantischen 137GB.
Im Moment gehe ich dem Erkenntnis nach das die 11 Lines evtl. keine Adresslines sind, sondern nur der Ansteuerung des Controllers auf der CF dient.
D.h. Die 16 Lines werde für Daten und Adresse benutzt (wie bei einem normalen Bus). Ich denke das Daten und Adressen seperat über diese Lines in mehreren Schüben(Takten) purzeln.
Kann einer das Licht anschalten damit ich nicht die ganze Zeit im dunkel tappen muß?
Gruß
Minesweeper XL
Da geht noch mehr :-) Man kann die Adressen in mehreren Stücken hintereinander übertragen...
Btw. Bist Du mit den 10 Adresspins sicher das die wirklich zur Übertragung von Adressen benutzt werden? Bei IDE/ATA (das mehr oder weniger kompatibel ist) existieren gar keine eigenen Adressleitungen sondern nur 3 Adressbits und 2 Chip-Select Eingänge (die wohl zwischen oberen und unterem Adressteil umschalten)...
Früher waren die Adressangaben noch an der Plattengeometrie orientiert, das war fürs erste recht naheliegend. Das ganze wurde dann im Laufe der Jahre immer wieder erweitert und die Platten gaben eine _erdachte_ Plattengeometrie nach außen an die dann genutzt wurde. Irgendwann kam man nach dieser Methode mit dieversen Tricks aufs bis zu 28Bit. Da das jetzt auch zu wenig wurde hat man dann kürlich umgestellt auf die neue 48Bit Adressiereung (und das bei nur 40 Adern :-) ), die AFAIR ganz auf den Bezug zur Plattengeometrie verzichtet...
Gruß
Borlander
Kannst Du die evtl. mal verlinken? Danke!
Thx für die Antworten. Ich gehe der Sache mal nach.
Ich nehme mal an das du die CF-Specs verlinkt haben wolltest. Leider hab ich nicht die Möglichkeit gehabt die nochmal wo anders zu uppen, aber unter http://www.compactflash.org/specdl1.htm kommt man normalerweise dran (kost ja nix).
Gruß
Minesweeper XL
Hi!
ich kann noch den Hinweis beisteuern, dass man CF-Karten mit rechtw enig Aufwand (ein IC auf einer platine und passenden Steckern/Buchsen) als IDE-Festplatte betreiben kann. ich schliesse daraus, dass CF ein Transferprotokoll (das von IDE/SCSI abgeleitet ist) nutzt und keine direkte Speicheradressierung.
Da würde man Problemlos mit 10 Addressleitung und einem 16Bit-Interface für den Datentransfer auskommen.
Update: hab' gerade den Wikipedialink gelesen, der schreibt ja auch, dass das IDE-Protokoll zum Einsatz kommt. Das Bedeutet, es werden Befhele übermittelt, die dann die daten eines Sektors anfordern bzw. die Datein zum Speichern senden.
Falls die beschriebenen Adress- und datenleitungen die des CF-cardkontrollers für den Zugriff auf seinen Speicher sein sollen, so muss dass nicht immer der Fall sein. ;-)
Dadurch das ein IDE-Protokoll genutzt wird, besitzt die Karte einen kompletten Kontroller. So kann die jeweilige CF-Karte durchaus einen Speicherkontroller nutzen, der komplett anders aufgebaut ist, als der, den du jetzt quasi vorgibst und damit Specher bis 128Gbyte adressieren.
Bis dann
Andreas
[Diese Nachricht wurde nachträglich bearbeitet.]
Es gibt sogar Mainboards mit integrierte CF-Card-Slots:
http://www.viac3.de/vepd/produkte/mini_itx/epia_m2_specs.htm
Gruß, brezel
Ja, das mag ja sein, aber ich möchte eine CF-Karte selbst ansteuern - bzw deren Controller. Nur tappe ich im Moment noch im Dunkeln. Hat einer ein Datenblatt über IDE oder ein guten Tip wo ich solche Informationen (Datenblätter)über IDE oder auch ATA (evtl. auch PCMCIA) herbekommen kann?
Gruß
Minesweeper XL
Hi!
Das ultimative, dürfte man hier finden: ;-)
http://www.t13.org/
Das ist das Kommite, dass Atapi/IDE-Verwaltet (den Standard dahinter). Frag mich nicht nach Details...
Evtl. ist das nützlich: http://www.ata-atapi.com/mindrvr.htm
Bis dann
Andreas
Danke für die Unterstützung. Ich verstehe das so, das sich 32 bit Adressen durch zwei aufeinanderfolgende Übertragungen über die 16 Busleitungen zusammensetzen.
Gruß
Minesweeper XL