Funktionsweise eines RTL8019AS

Gast #787968
Lesenswert?

Hallo,

ich hab mir gerade den rtl8019as ein bißchen angescahut. Leider verstehe 
ich dessen Funktionsweise, bzw dessen Ansteuerung nicht. In manchen 
Shcaltungen findet man, dass Adressleitungen nur von SA0 bis SA4 gezogen 
werden. Der Rest ist auf GND. Wieso das? Warhscheinlich brauche ich eben 
nciht mehr Speicherplatz?!
Aber wei sende Ich Daten? Lege ich einfach auf den Datenbus etwas an und 
schreibe das auf welche Adresse im rtl8019as?
Bin ratlos. Das Datenblatt hat mir da auch nciht viel geholfen.
Moderator Persönliche Seite #788016
Lesenswert?

Schau dir doch den Sourcecode bestehender Treiber für sowas an.
Gibt's für alle möglichen Betriebssysteme (naja, wahrscheinlich
nicht gerade für Windows).

Ist schon eine Weile her, dass ich meinen letzten Ethernettreiber
geschrieben habe (und der ging noch über den Parallelport :).  Das
Prinzip ist, dass diese Chips intern eine Reihe von Registern
haben, die über den Bus multiplexiert werden.
Gast #788177
Lesenswert?

Ok. Das war gerade Mist was ich erzählt habe. Glaub ich.

Mit SA0-SA4 kann man also 0x00 bis 0x1F adressieren. Was genau den 
Speicherbereich jeder Page entspricht. Pages gibt es 4 die jeweils mit 
dem Bit6 und Bit7 der Datenleitung angesprochen werden können. Soweit 
bin ich mir schon sicher. Nur warum haben die Leute von Ethernut hier 
http://www.ethernut.de/pdf/enut130g-s3.pdf 16 Adressleitungen gezogen? 
Komisch. Und warum ist BD5 und 7 angebunden. Doch nur weil dort ein 
Speicher simuliert werden soll, oder? Brauch ich das zwingend?
(Firma: egnite GmbH) Persönliche Seite #790843
Lesenswert?

Der RTL8019 enthält einen Adressdekoder. Wenn man diesem alle 16 
Leitungen zuführt, tauchen die Register nur einmal im Adressraum auf.

Wenn Du nur SA0-SA4 verkabelst, dann würden sich die Register im Abstand 
von 32 wiederholen. Fügst Du SA5 hinzu, nur noch alle 64 Bytes usw. Beim 
Ethernut 1 tauchen die Register nur einaml von 0x8000 bis 0x801F auf, 
alle anderen Adressen dürfen von anderen Devices belegt werden.

A15 wurde übrigens negiert, um 0x8300 (statt 0x0300) als Basisadresse zu 
bekommen.

Natürlich brauchst Du trotzdem nicht alle Adressleitungen zum Realtek 
führen. Wenn Du z.B. nur SA0-SA4, SA14 und SA15(neg) belegst, SA8 und 
SA9 fest auf high und den Rest auf low legst, bleiben die Adressen 
0xC000 bis 0xFFFF zur freien Verfügung.

Eine reichlich komplizierte Geschichte ist übrigens die zusätzlich 
Verwendung von A13 und A14 zur EEPROM Simulation. Neben der Möglichkeit 
ein echtes EEPROM zu bestücken, kann man auch Portbits dafür nehmen, was 
die Software erheblich vereinfacht. Du kannst den Pin EDO auch einfach 
auf high legen, nur kannst Du den Chip dann nicht in den Half Duplex 
Modus schalten. Der RTL8019AS ist sehr alt und macht den Link Aufbau im 
Full Duplex Mode nicht nach gültigem Standard, was dann zu Ethernet 
Kollisionen führt.

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