ne2000 - odbiór pakietu

Witam.

Po kilku dniach ślęczenia udało mi się w końcu wysłać i odebrać pinga do karty sieciowej na układzie um9008 i AVRka.

Ale mam pytanie odnośnie zapisu/odczytu pakietu w buffer ring.

Wszędzie w dokumantacji pisze, że przed pakietem wstawiane są cztery bajty:

1- status 2- next_ptr_nieodebrany - numer strony następnego pakietu 3- liczba odebranych bajtów Lo 4- liczba odebranych bajtów Hi 5 - ........ pakiet

Nie wiem dlaczego, ale u mnie jest to prawdziwe tylko dla pierwszego odczytu tzn: przy inicjalizacji karty ustawiłem rejestry tak:

RBCR0 = 0x0 RBCR1 = 0x0 RSAR0 = 0x0 RSAR1 = 0x0 PSTART = 0x40 PSTOP = 0x80

BNDRY = PSTART

CURR = PSTART + 1 (jak ustawiałem CURR=BNDRY= PSTART to karta wogóle nie chciała czytać chyba traktowała to jako przpełnienie bufora)

next_ptr = PSTART + 1 (numer strony nieprzeczytanego pakietu) itd.......

przed pierwszym odczytem (remote read) dma ustawiam: RBCR0 = 0xFF RBCR1 = 0xFF RSAR0 = 0x00 RSAR1 = next_ptr_nieodebrany itd.......

po odczycie pierwszego pakietu ustawione jest niby dobrze

next_ptr = next_ptr_nieodebrany (PSTART + 2) BNDRY = PSTART + 1 CURR = PSTART + 2

przed drugim odczytem znów ustawiam: RBCR0 = 0xFF RBCR0 = 0xFF RSAR0 = 0x00 RSAR0 = next_ptr_nieodebrany itd.....

i już przy tym drugim i następnych odczytach wszystko jest jakby przesunięte o jeden bajt do dołu tak jakby RSAR0 trzebaby ustawiać na 0x01.

1- jakiś bajt ........... 2- status 3- next_ptr - adres następnego pakietu 4- liczba odebranych bajtów Lo 5- liczba odebranych bajtów Hi 6 - ........ pakiet

Nie wiem co to jest ten jakiś bajt czy ta moja karta coś dodaje o czym nie piszą w dokumentacji?

Może miał ktoś do czynienia z takim czymś i wie gdzie robię błąd?

Serdeczne dzięki za pomoc Pozdrawiam Pawełr

Reply to
invalid unparseable
Loading thread data ...

On Mon, 29 Aug 2005 07:27:57 +0200, "Pawełr" snipped-for-privacy@poczta.onet.pl> wrote: [.....]

Nie wiem czy to ma znaczenie (pewnie ma), ale rezerwujesz całą pamięć kontrolera na bufor ramek przychodzących. Może to się kłóci z funkcją wysyłającą ramki.

[.....]

Czyli chcesz odczytać 64k z bufora o pojemności max. 16k? :-) Te rejestry najlepiej (i bardziej elegancko) jest wypełnić rzeczywistą ilością bajtów do odczytania. No, od biedy mogłoby być: RBCR0 = 0xFF RBCR1 = 0x00

Zassaj sobie źródła Ethernut-a

formatting link
W pliku nicrtl.c znajdziesz działający sterownik do RTL8019 - również NE2000 compatible.

Regards, /J.D.

Reply to
Jan Dubiec

Oczywiście pomyliłem się przy pisaniu posta w programie mam PSTART = 0x46, PSTOP=0x80 (lub 0x60)

Próbowałem już różnych wartości ale efekt za każdym razem jest ten sam nawet jak czytam tylko pierwsze 4 bajty czyli status, next_ptr, liczba odebranych bajtów Lo liczba odebranych bajtów Hi., to i tak następnym razem jest wszystko przesunięte.

Zassałem, ale jak dla mnie to tam jest taka "kasza" że zrezygnowałem po pół godzinie. Poprostu nie potrzebuję takiego kombajna.

W necie jest kilka przykładów bardziej czytelnych np: uIP-AVR. Ale nie wiem też dlaczego w tym projekcie są źródełka dla dwóch chipsetów zgodnych niby z ne2000: RTL8019 i ax88796. Jaka to zgodność skoro trzeba pisać inne źródła dla innego chipsetu?

Pozdrawiam Pawełr

Reply to
invalid unparseable

Bo sa kompatybilne "wstecz" (z NE2k), ale kazdy z nich ma inne "ficzersy" ;-)

m.

Reply to
Marcin Lukasik

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.