Atmega32-vel Embedded web server+ videó interface
Remélem ez segít?!
http://members.home.nl/bzijlstra/softwa ... 8019as.htm
Ben egy Webtiger board-ra is csinált Bascom tutorialt, amiben egy ATmega128-al vezérli a Realtek8019-et.
Némi eltérést az jelent, hogy külső SRAM-ot is illesztett hozzá (74HC573-al), de remélem azért érthető lesz a lépésenkénti élesztés/leírás.
Üdv: Higgins
http://members.home.nl/bzijlstra/softwa ... 8019as.htm
Ben egy Webtiger board-ra is csinált Bascom tutorialt, amiben egy ATmega128-al vezérli a Realtek8019-et.
Némi eltérést az jelent, hogy külső SRAM-ot is illesztett hozzá (74HC573-al), de remélem azért érthető lesz a lépésenkénti élesztés/leírás.
Üdv: Higgins
Köszönöm a lnket, biztosan jó lesz, s ha lesz plussz időm át is nézem ezt a megoldást (tetszik a cimzés folymata) de most még erre gyúrok rá, mert nagy gond az én új címeimmel sem lehet, ARP kérés jön, csak utánna nem jön ujabb csomag, mert a
nem változik, olyan mintha csak ARP kérés lenne.
A "T_enetpackettype" hol változik a futás folyamán? Mert nem találom
Kód: Egész kijelölése
T_enetpackettype = &H0608
A "T_enetpackettype" hol változik a futás folyamán? Mert nem találom
Megnéztem a csomagokat, egyenlőre annyi a fejlemény, hogy valami hülyeséget küld vissza az AVR az ARP kérés válaszában, a protokoll tipsánál valami 0xCCCD hex érték van. Viszont a MAC cimét jól köldi el.
Higginsnek is köszönöm a linket, átírtam a mem.kezelést arra, amit ott szerepel, de a helyzet ugyanaz, ARP kérés, majd a válaszban csak a MAC van, már a protokoll tipusa sem jó.
Érdekes még az is, hogy az program ARP rutinjában a MYIP beírása sem jó, vagyis a MYIP változóban ott már nem az IP-m van, valahol futás közben kinullázódik, vagy elvesztődik, vagy nem tudom....Előtte kiíratom LCD-re a MYMAC-et, az stimmel, de az IP már nem, vagyis nem is kerül bele az RTLchip által elküldendő csomagba.
Amugy ahol lehet még hiba (vagyis ami másképp van, mint az eddigi moduljaimba):
-Address port felső 3bitjét másra is használom, de Robi javaslatára bitenkénti megfeleltetést használok, így látszólag jó
-Data port fordítva van beköte, igy byte tükrözéssel megy ill. jön az adat.
De ami arra utal, hogy ezekkel nincs baj , az az, hogy a SHOWREGS-et lefuttatva jók a visszakapott értékek!
u.i.Igazam, volt, jók a portbeállítások, a hiba az ARP rutinban volt, most tünt fel a PEEK, ami ha jól tudom a változó mem címére utal és az nem volt árírva
-3nap az életemből
Higginsnek is köszönöm a linket, átírtam a mem.kezelést arra, amit ott szerepel, de a helyzet ugyanaz, ARP kérés, majd a válaszban csak a MAC van, már a protokoll tipusa sem jó.
Érdekes még az is, hogy az program ARP rutinjában a MYIP beírása sem jó, vagyis a MYIP változóban ott már nem az IP-m van, valahol futás közben kinullázódik, vagy elvesztődik, vagy nem tudom....Előtte kiíratom LCD-re a MYMAC-et, az stimmel, de az IP már nem, vagyis nem is kerül bele az RTLchip által elküldendő csomagba.
Amugy ahol lehet még hiba (vagyis ami másképp van, mint az eddigi moduljaimba):
-Address port felső 3bitjét másra is használom, de Robi javaslatára bitenkénti megfeleltetést használok, így látszólag jó
-Data port fordítva van beköte, igy byte tükrözéssel megy ill. jön az adat.
De ami arra utal, hogy ezekkel nincs baj , az az, hogy a SHOWREGS-et lefuttatva jók a visszakapott értékek!
u.i.Igazam, volt, jók a portbeállítások, a hiba az ARP rutinban volt, most tünt fel a PEEK, ami ha jól tudom a változó mem címére utal és az nem volt árírva
-3nap az életemből
Az előző probléma uygebár megfoldódott, de jött egy újabb
Ha össze akarok állítani egy TCP csomagot (tegyük fel, hogy adott a cél IP és MAC is), hogy kezdjek hozzá?
Néztem a tutorialban a Send_tcp_packet-ot de elsőre elég kusza...html alapon megy a kommunikáció, vagyis a PC betőlt egy oldalt, amit frissít x secundumonként, de most az AVR kellene kezdeményezzen (kapcsolatot kellene léteíteni egy távoli adatbázissal). Csinált már valalki ilyet?
Köszönöm a segítségeket!
Ha össze akarok állítani egy TCP csomagot (tegyük fel, hogy adott a cél IP és MAC is), hogy kezdjek hozzá?
Néztem a tutorialban a Send_tcp_packet-ot de elsőre elég kusza...html alapon megy a kommunikáció, vagyis a PC betőlt egy oldalt, amit frissít x secundumonként, de most az AVR kellene kezdeményezzen (kapcsolatot kellene léteíteni egy távoli adatbázissal). Csinált már valalki ilyet?
Köszönöm a segítségeket!
C alapon van minta....
File Cserebere:
eth.zip néven. ENC28J60 esetén....
Működik:)
Alapelvek:
http://www.arduino.cc/cgi-bin/yabb2/YaB ... 44400223/5
http://code.rancidbacon.com/LearningAbo ... noEthernet
http://blog.thiseldo.co.uk/?p=329
File Cserebere:
eth.zip néven. ENC28J60 esetén....
Működik:)
Alapelvek:
http://www.arduino.cc/cgi-bin/yabb2/YaB ... 44400223/5
http://code.rancidbacon.com/LearningAbo ... noEthernet
http://blog.thiseldo.co.uk/?p=329
Köszi a linket, a C prog. alapján kezdem összeállítani a programrészletet, előszőr az ARP kérést.
Ezzel egyből van is egy kis baj, mert elsőre (Wireshark-al figyelve) valami nem ARP megy ki (mailformed packet).
Kis idő után helyreáll, s a protokoll ARP-ként jeleni meg, majd vált IP-re. Közben a program csak simán fut (max a beérkező csomagok zavarhatják, ami a routertől jön).
A cél IP-jét direkt az ARP-ben állítom, a cél MAC pedig szabványosan FF-ekből áll, de így is ez a helyzet. Egyenlőre az AVRWEB ARP-ját írtam át, lehet, hogy ott a baj!?
Itt van a prog.részlet:
Tudom, hogy ez így egy válasz ARP, de ennek is menni kellene.
Ezzel egyből van is egy kis baj, mert elsőre (Wireshark-al figyelve) valami nem ARP megy ki (mailformed packet).
Kis idő után helyreáll, s a protokoll ARP-ként jeleni meg, majd vált IP-re. Közben a program csak simán fut (max a beérkező csomagok zavarhatják, ami a routertől jön).
A cél IP-jét direkt az ARP-ben állítom, a cél MAC pedig szabványosan FF-ekből áll, de így is ez a helyzet. Egyenlőre az AVRWEB ARP-ját írtam át, lehet, hogy ott a baj!?
Itt van a prog.részlet:
Kód: Egész kijelölése
'Start the NIC
Call Write_rtl8019as(cr , &H22)
Call Write_rtl8019as(tpsr , Txtstart)
Call Write_rtl8019as(rsar0 , &H00)
Call Write_rtl8019as(rsar1 , &H40)
Call Write_rtl8019as(isr , &HFF)
Call Write_rtl8019as(rbcr0 , &H3C)
Call Write_rtl8019as(rbcr1 , &H00)
Call Write_rtl8019as(cr , &H12)
'Cél MAC -jelenleg ismeretlen-
T_enetpacketsrc0 = 255
T_enetpacketsrc1 = 255
T_enetpacketsrc2 = 255
T_enetpacketsrc3 = 255
T_enetpacketsrc4 = 255
T_enetpacketsrc5 = 255
Call Write_dest_mac
For I = 1 To 6
Call Write_rtl8019as(rdmaport , Mymac(i))
Next I
'Itt esetleg kellene valamilyen csomag?
Packet(&H16) = &H02
For I = 1 To 10
Hulp1 = &H0C + I
T = Packet(hulp1)
Call Write_rtl8019as(rdmaport , T)
Next I
For I = 1 To 6
Call Write_rtl8019as(rdmaport , Mymac(i))
Next I
For I = 1 To 4
Call Write_rtl8019as(rdmaport , Myip(i))
Next I
Call Write_dest_mac
'Cél IP címe
T_arp_sipaddr0 = 192
T_arp_sipaddr1 = 168
T_arp_sipaddr2 = 0
T_arp_sipaddr3 = 30
Call Write_rtl8019as(rdmaport , T_arp_sipaddr0)
Call Write_rtl8019as(rdmaport , T_arp_sipaddr1)
Call Write_rtl8019as(rdmaport , T_arp_sipaddr2)
Call Write_rtl8019as(rdmaport , T_arp_sipaddr3)
For I = 0 To &H11
Call Write_rtl8019as(rdmaport , &H00)
Next I
Byte_read = 0
Do
Hulp1 = Byte_read And Rdc
Call Read_rtl8019as(isr)
Loop Until Hulp1 = 0
Call Write_rtl8019as(tbcr0 , &H3C)
Call Write_rtl8019as(tbcr1 , &H00)
Call Write_rtl8019as(cr , &H24)
Kérdés / válasz az az IP-addressből derül ki:
Destination/Source
Én vagy kérek, vagy válaszolok.... Ha kapok egy csomagot (én vagyok a destination), akkor a TCP csomajazonosító-t meglesem (ARP), ekkor erre választ adok: destination-source csere és csomagot így rakom össze....
http://avr.tavir.hu/modules.php?name=Co ... &pid=52#13
Itt az ICMP-t lesd meg. Ez az EchoPacket....
A Tannembaum könyvet meg kéne keresni, abban ki van vesézve....
Destination/Source
Én vagy kérek, vagy válaszolok.... Ha kapok egy csomagot (én vagyok a destination), akkor a TCP csomajazonosító-t meglesem (ARP), ekkor erre választ adok: destination-source csere és csomagot így rakom össze....
http://avr.tavir.hu/modules.php?name=Co ... &pid=52#13
Itt az ICMP-t lesd meg. Ez az EchoPacket....
A Tannembaum könyvet meg kéne keresni, abban ki van vesézve....
Most esett csak le, hogy tényleg hülyeséget írtam, mert egyszerű eldönrteni (elvben), hogy ARP kérés vagy válasz jön-e.
Ha kérés akkor arra úgyis mindenki figyel, mert cél MAC-címnek FF-ek vannak megadva (Broadcast), ha meg csak az egyik, hálózaton lévő gép válaszol az AVR-nek, akkor arra a többi úgysem figyel, mert nem neki(k) címezték!
( a forrás cím/cél cím lényegével tisztában voltam...csak ez az ARP kérés/válasz zavart meg, mert olvastam valamit egy operation code-ról, ami megmondja, hogy kérdés-e vagy válasz az ARP...)
Egy kis pihenés után jól gondolom?
Ha kérés akkor arra úgyis mindenki figyel, mert cél MAC-címnek FF-ek vannak megadva (Broadcast), ha meg csak az egyik, hálózaton lévő gép válaszol az AVR-nek, akkor arra a többi úgysem figyel, mert nem neki(k) címezték!
( a forrás cím/cél cím lényegével tisztában voltam...csak ez az ARP kérés/válasz zavart meg, mert olvastam valamit egy operation code-ról, ami megmondja, hogy kérdés-e vagy válasz az ARP...)
Egy kis pihenés után jól gondolom?
Mondtam én, hogy még kell állítani valamit....
Ez lenne az az Operation code
Ha esetleg valaki ARP kéréseket akar árasztani:
Nem olyan elegáns, mint Ben ARP-je, de szerintem ha valaki nem csinált iylet, átláthatóbb!
Kód: Egész kijelölése
'arp_op1 = packet(&h16)
Packet(&H16) = &H01 'ARP kérés
'Packet(&H16) = &H02 'ARP válasz
Ha esetleg valaki ARP kéréseket akar árasztani:
Kód: Egész kijelölése
Call Write_rtl8019as(cr , &H22)
Call Write_rtl8019as(tpsr , Txtstart)
Call Write_rtl8019as(rsar0 , &H00)
Call Write_rtl8019as(rsar1 , &H40)
Call Write_rtl8019as(isr , &HFF)
Call Write_rtl8019as(rbcr0 , &H3C)
Call Write_rtl8019as(rbcr1 , &H00)
Call Write_rtl8019as(cr , &H12)
Call Write_rtl8019as(rdmaport , &HFF) 'Broadcast
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &H00) 'Saját MAC cím beírása
Call Write_rtl8019as(rdmaport , &H11)
Call Write_rtl8019as(rdmaport , &H22)
Call Write_rtl8019as(rdmaport , &H33)
Call Write_rtl8019as(rdmaport , &H44)
Call Write_rtl8019as(rdmaport , &H55)
Call Write_rtl8019as(rdmaport , &H08) 'Csomag tipusa (ARP=0806) '
Call Write_rtl8019as(rdmaport , &H06)
Call Write_rtl8019as(rdmaport , &H00) 'HW tipus, Ethernet esetén 0001
Call Write_rtl8019as(rdmaport , &H01)
Call Write_rtl8019as(rdmaport , &H08) 'Protokoll tipusa, IP esetén 0800
Call Write_rtl8019as(rdmaport , &H00)
Call Write_rtl8019as(rdmaport , &H06) 'HLEN
Call Write_rtl8019as(rdmaport , &H04) 'PLEN
Call Write_rtl8019as(rdmaport , &H00)
Call Write_rtl8019as(rdmaport , &H01) 'ARP kérés
Call Write_rtl8019as(rdmaport , &H00) 'Saját MAC cím beírása
Call Write_rtl8019as(rdmaport , &H11)
Call Write_rtl8019as(rdmaport , &H22)
Call Write_rtl8019as(rdmaport , &H33)
Call Write_rtl8019as(rdmaport , &H44)
Call Write_rtl8019as(rdmaport , &H55)
Call Write_rtl8019as(rdmaport , 192) 'Forrás IP
Call Write_rtl8019as(rdmaport , 168)
Call Write_rtl8019as(rdmaport , 0)
Call Write_rtl8019as(rdmaport , 85)
Call Write_rtl8019as(rdmaport , &HFF) 'Broadcast
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , &HFF)
Call Write_rtl8019as(rdmaport , 192) 'Cél IP címe
Call Write_rtl8019as(rdmaport , 168)
Call Write_rtl8019as(rdmaport , 0)
Call Write_rtl8019as(rdmaport , 30)
'Karakterek beírésa, hogy elérjük a minimális csomaghosszt
For I = 0 To &H11
Call Write_rtl8019as(rdmaport , &H00)
Next I
Byte_read = 0
Do
Hulp1 = Byte_read And Rdc
Call Read_rtl8019as(isr)
Loop Until Hulp1 = 0
Call Write_rtl8019as(tbcr0 , &H3C)
Call Write_rtl8019as(tbcr1 , &H00)
Call Write_rtl8019as(cr , &H24)