Ziel: Netzwerk-Treiber und -Protokolle



  • Einige Hardwaretreiber kriegt ihr ja relativ mühelos per CDI. Vermutlich ist es also sinnvoll, sich vor allem auf den TCP/IP-Stack zu konzentrieren.

    Was genau verstehst du unter "IRQ abliefern"? Aber 0xFF klingt irgendwie nicht so richtig hilfreich.


  • Mod

    Ja, das ist richtig. Bin gespannt, ob das wirklich gelingt mit der Übernahme.

    Was genau verstehst du unter "IRQ abliefern"? Aber 0xFF klingt irgendwie nicht so richtig hilfreich.

    Wir haben im pci-Scan folgende Passage, bei der wir die IRQ Nummer auswerten:

    if (pciDev_Array[number].irq!=255)
    {
        printf(" IRQ:%d ", pciDev_Array[number].irq);
    }
    else // "255 means "unknown" or "no connection" to the interrupt controller"
    {
        printf(" IRQ:-- ");
    }
    

    Ich habe das bisher nicht erlebt auf meinen Test-PC, aber bei tty lieferte die Netzwerkkarte diesen IRQ. Damit erhielt er keinen Interrupt und hörte auf an dem Thema weiter zu entwickeln. Dieser Schwachpunkt bei PCI wurde nicht verstanden und ist folglich auch noch nicht überwunden.


  • Mod

    @tty: was ergibt lspci -v unter Linux? Umstellung von IRQ im BIOS möglich? wirklich RTL8139? Was kam bei deinen Recherchen in Richtung Advanced Programmable Interrupt Controller (APIC) heraus?


  • Mod

    IRC-chat:

    <ifloop>inform me when tty continues with the network stuff i will support him (if he wants)

    Es wäre wirklich toll, wenn wir schrittweise weiter kommen könnten.
    Erster Meilenstein: Antwort auf das PING eines Fremdrechners


  • Mod

    Zuvor muss es gelingen, eine RTL8139 in einer VM zu simulieren.

    Mit qemu und openvpn (enthält TAP network devices) ist es mir bisher unter Win XP nicht gelungen.

    batch-datei:

    qemu.exe  -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1F,macaddr=00:12:12:12:12:12 -net user -localtime -usb -usbdevice disk:format=raw:dummy.bin
    

    In Netzwerkverbindungen (Win XP): TAP-Win32 Adapter V9 Verbindung hergestellt

    Als IP-Adresse habe ich dort schon die am Router statisch für 00:12:12:12:12:12 eingestellte IP als auch 10.0.2.2 (qemu) probiert.

    Ich teste mit Ping <IP>

    ==> Kein Empfang bei PrettyOS

    Ein Grund: EHCI und RTL8139 verwenden beide IRQ 11 (stellt man install... bei EHCI ab, so kommen erstmalig netzwerk-meldungen bei PrettyOS auf qemu)


  • Mod

    Inzwischen sind wir etwas weiter. Die doppelte Belegung des IRQ habe ich durch Veränderung der Addresse (0x1A anstelle 0x1F) bewirkt.

    Nützliche Links:
    http://www.cs.usfca.edu/~cruse/cs326/RTL8139_ProgrammersGuide.pdf
    http://www.lowlevel.eu/wiki/Ethernet
    http://de.wikipedia.org/wiki/Ethernet

    qemu simuliert die RTL8139, die Verbindung ins LAN erfolgt mittels TAP-Device, auf 10.0.2.2 befindet sich der qemu router.


  • Mod

    Das Thema "Netzwerk" ist nach längerer Durststrecke nun auf gutem Weg. Der RTL8139 Treiber wurde ergänzt um andere Treiber, z.B. RTL 8168 (noch im Aufbau) und pcnet (für VBox). Bei den Protokollen laufen bisher ethernet, IP, ARP, ICMP. UDP und TCP sind gerade im Ausbau begriffen. DHCP steht auf dem Plan. ehenkes, MrX und cefour arbeiten momentan parallel an diesem Thema. Damit ist der Erfolg gewährleistet. 👍


  • Mod

    Aus dem Thread http://www.c-plusplus.net/forum/251851

    Source     Dest        Source     Dest              Packet
       MAC addr   MAC addr    IP addr    IP addr           Description
       -----------------------------------------------------------------
       Client     Broadcast   0.0.0.0    255.255.255.255   DHCP Discover
       DHCPsrvr   Broadcast   DHCPsrvr   255.255.255.255   DHCP Offer
       Client     Broadcast   0.0.0.0    255.255.255.255   DHCP Request
       DHCPsrvr   Broadcast   DHCPsrvr   255.255.255.255   DHCP ACK
    

    So kann DHCP rudimentär ablaufen.


  • Mod


  • Mod

    TCP incl. erste Netzwerk-API funktionieren. Beispiel: starwars.elf.

    Dieser Thread wird nun geschlossen, da es einen parallelen Thread gibt.


Anmelden zum Antworten