Hallo Leute,
ich bastele an einem C++ Kernel und hab schon ein paar Sachen ans laufen gebracht (gdt, idt, konsole, tastatur, maus, uhr, PCI)
Jetzt versuche ich seit Tagen, auf's Netzwerk zuzugreifen. Ich erzeuge zZ einen hartkodierten Ethernet Frame II, mit hartkodierten IP und ICMP-Ping Daten und
schicke den (wie in
http://www.lowlevel.eu/wiki/AMD_PCnet beschrieben) an den virtuellen AMD am79c973 chip (PCnet FAST III ethernet), den VirtualBox bietet.
Ich bekomme auch ein paar Antworten (z.B. den Interrupt mit CSR0 | 0x0100 - der vermeldet, dass der Chip jetzt initialisiert ist), aber die Daten, die ich schicke, gehen
einfach nicht raus. Vor allem kommt der Interrupt mit (CSR0 | 0x0200) nicht, der vermelden würde, dass die Daten raus geschickt wurden, also kann es m.E. schon nicht
an fehlerhaften Inhalten im IP, ICMP oÄ liegen.
In
http://www.lowlevel.eu/wiki/Datei:Am79C973.pdf finde ich auch keine Anhaltspunkte, was ich falsch mache.
Ich bin so langsam echt am Ende mit meinem Latein.
Hat von Euch jemand Erfahrung mit dem Chip?
Muss ich vielleicht die CRC32 vom Ethernet Frame manuell anfügen? Die sollte mE vom chip angefügt werden, so wie die OSI Layer 1 Geschichten - Preamble,
start-of-frame delimiter, inter packet gap... vor lauter Verzweiflung hab ich schon versucht, die ganzen Sachen auch noch manuell mit zu schicken...
Ich bin kurz davor, auf QEMU zu wechseln, weil man da einen virtuellen RTL 8139 chip hat, der (anscheinend) sehr viel angenehmer anzusteuern ist...