Forum: Mikrocontroller und Digitale Elektronik Funktionsweise eines RTL8019AS


von Sepp (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Sepp (Gast)


Lesenswert?

Hab gesehen, dass einfach an A0-A19 die Adresse 0x00000 angelegt wird. 
Danach werden die Daten angelegt und das ReadToggle gesetzt. Schreib ich 
also immer auf 0x00000 und das passt?

von Sepp (Gast)


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?

von Harald K. (Firma: egnite GmbH) (haraldkipp) Benutzerseite


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.

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.