Hallo Besucher, der Thread wurde 4,9k mal aufgerufen und enthält 22 Antworten

letzter Beitrag von Diddl am

echtes TCP/IP für C64

  • Tach,


    hab vor ner Weile mal embedded Chips von Wiznet gesehen, die einen integrierten IP-Stack haben und dazu recht leicht an einen 8-Bit Bus zu basteln gehen. Nach bisschen Info- und Gedankenaustausch zum Timing mit Jens Schönfeld hab ich mir dazu mal ein fertiges Modul zum spielen geholt und das ganze mit ziemlich geringem Aufwand an den Clockport meines RetroReplays gebastelt (kleine Platine mit Stecker, 3,3V Wandler und 2 Kondensatoren, paar LEDs). Ergebnis: Ich kann prima auf alle Register zugreifen, das Ding mit ein paar Registerzugriffen konfigurieren und pingen. Noch paar mehr Zeilen Code und schon war ein Paket darüber versendet. Im Gegensatz zu dem bisher verwendeten CS8900 kann man hier tatsächlich beliebig auf dem Paketpuffer rumschreiben und somit sein Paket ausserhalb des C64-Speichers zusammenbauen und auch noch bis vor den finalen Versand verändern, ein wahlweise zuschaltbarere Autoincrementer hilft bei größeren Datenmengen. Auch der Registerzugriff ist etwas leichter, da der Chip einen 8 und nicht einen 16 Bit Bus hat. Heisst also deutlich weniger Overhead und ist gerade für mein 64net Gebastel ideal, da man nun die Vorteile von TCP/IP nutzen kann und nicht mehr auf UDP basierter Kommunikation rumfroschen muss. Datendurchsatz ist ähnlich groß wie mit dem RRNet, jedoch etwas weniger Overhead für die Paketvorbereitung notwendig. Demnach sollte mein Videostreamingkram gleichschnell bis noch schneller laufen. Ich denke auch für viele andere Anwendungen dürfte dieser Chip interessant sein?


    Bitbreaker/Metalvotze

  • @ace: 64net geht doch, ich arbeite ständig damit, über Netzwerk, Laden, Speichern, Diskimages mounten, Porno-streamen, alles tut. Bin aber gerade dabei das komplett from Scratch zu schreiben, dann auch mit einem eigenen passenden Protokoll für diesen Wiznetchip.
    Neue Kalender, uff. Ich erwäge ggf. Poster oder Sticker, da ist man nicht so unter Zeitdruck und auf den Jahresrhythmus festgelegt :-)
    Diddl: Das Ding läuft am Clockport, so wie er auf jedem RetroReplay eben ist. Ggf. also auch interessant für andere Geräte mit ebensolchem Port. Gilt es auszuprobieren.


    Bitbreaker/Metalvotze

  • sein Paket ausserhalb des C64-Speichers zusammenbauen und auch noch bis vor den finalen Versand verändern


    *das* klingt ja mal richtig geil! Gilt das auch für Pakete, die gerade reingekommen sind? Also wäre theoretisch ein Weiter-Versand eines eingehenden Paketes möglich, indem man nur den Header anpasst? Und.. was ist mit Checksumme - macht der Chip das alles allein?


    IRQ war ja auch son Thema, der CS8900 hat nen buggy IRQ im 8-Bit Mode, deswegen wurde vom Chip-Hersteller empfohlen, den IRQ nicht zu verwenden. Auf dem Retro Replay und anderen Clockport-Implementationen von mir habe ich die IRQ-Leitung mit NMI verdrahtet - kann der Chip sinnvoll IRQs auslösen und in einem Register mitteilen "ich war's"? (also für shared-IRQ geeignet)?



    Jens

  • *das* klingt ja mal richtig geil! Gilt das auch für Pakete, die gerade reingekommen sind? Also wäre theoretisch ein Weiter-Versand eines eingehenden Paketes möglich, indem man nur den Header anpasst? Und.. was ist mit Checksumme - macht der Chip das alles allein?


    IRQ war ja auch son Thema, der CS8900 hat nen buggy IRQ im 8-Bit Mode, deswegen wurde vom Chip-Hersteller empfohlen, den IRQ nicht zu verwenden. Auf dem Retro Replay und anderen Clockport-Implementationen von mir habe ich die IRQ-Leitung mit NMI verdrahtet - kann der Chip sinnvoll IRQs auslösen und in einem Register mitteilen "ich war's"? (also für shared-IRQ geeignet)?

    Ersteres müsste ich mal austesten, sollte aber machbar sein, je nachdem wie man seinen input + output Buffer konfiguriert addiert man halt andere Offsets um an sein Paket zu kommen, generell liegt das aber alles in einem linearen Speicherbereich rum.
    Sprich:
    0x0000-0x0800 Inputbuffer Socket 0
    0x0800-0x1000 Outputbuffer Socket 0
    ...


    Header anpassen wird aber ggf. schwierig, weil je nach Kommunikationsmodus nur die Nutzdaten im Puffer liegen, gibt aber auch einen RAW Mode, denke da kann man dann alles ab Mac-Adresse von Hand reinwursten.
    IRQ tut, NMIs hab ich schon ausgelöst damit, gibt auch entsprechende Register um IRQs zu maskieren und IRQ Events auszulesen.


    Bitbreaker/Metalvotze

  • Atarileute [...] gescheitert. Man musste da irgendwelche Mindestmengen von den Chips abnehmen.


    wundert's Dich? Die Atari-Szene ist meines Wissens nach deutlich kleiner als die Commodore-Szene. Und Mindestmengen muss man bei solchen Chips immer abnehmen, glücklicherweise sind das üblicherweise nur "ein paar hundert". Wiznet ist allerdings schon ne dicke Hausnummer was den Preis pro Chip angeht - wenn das Teil aber so cool ist wie Bitbreaker meint, werde ich aber gern mal meinen Chip-Broker drauf ansetzen.


    Jens

  • Wiesel:


    WIZNet gibts doch einzeln als Modul, beim M052 für KC85 wurden auch nur rund 50 benötigt. Kannst gern enrico im http://www.robotrontechnik.de Forum fragen, wo er die her hat. Wie ich schonmal meinte, das Ding wär auch was für den Cameleon, die KC-Leute (incl. meinereiner) sind jedenfalls begeistert davon.


    Als Ergänzung macht sich dann der Vinculum als USB-Datenträger Sklave gut, der wird derzeit in den Kernal des KC85 integriert um native damit arbeiten zu können. Was beim KC allerdings einfacher ist, als beim C64, da hier kein Wildwuchs an Schnelladern existiert.

  • So ein fertiges Embeddedmodul wie ich es zum Testen verwendet hab kriegt man für knapp 20 Euro:
    http://www.shop.display3000.co…ernet-adapterplatine.html
    Man muss es halt noch auf einen Clockport adaptieren, dazu muss man aber eigentlich nur alles passend verdrahten und nen 3,3V Regler dazubauen (darum hatt ich mir da ne Platine zu rausgelassen). Mit etwas Logik (74ls139) um das r/w in ein /iord und /iorw umzuwandeln + Logik für passende Adressierung geht das auch direkt am Expansionport, so hatt ich das nämlich zuerst gestestet.
    Schöner wär es natürlich sowas direkt wie ein RRNet an einem Stück auf den Clockport sitzen zu haben. Momentan hab ich eben ne Adapterplatine gemacht die auf dem Clockport kommt und auf der dann das Wiznet 812 sitzt, etwas unhandlich.
    Hatte ursprünglich eigentlich Überlegungen gemacht, ob man es nicht so gestalten kann, dass man es direkt im C64 verbauen kann. Dachte mir, so ein C64 mit Netzwerkbuche fest eingebaut hätte wirklich Charme (z.B. als Zwischensockel am 6510, aber de fehlen nette Dinge wie IO1/IO2), da ich da aber auf keine vernünftige Idee kam, hab ich es eben erstmal auf den Clockport adaptiert.


    Bitbreaker/Metalvotze

  • Man muss es halt noch auf einen Clockport adaptieren, dazu muss man aber eigentlich nur alles passend verdrahten und nen 3,3V Regler dazubauen (darum hatt ich mir da ne Platine zu rausgelassen)


    Wenn man es schon am Clockport anpassen muss, dann sollte man gleich einen kleinen AVR vorsehen. Der kann das meiste handling mit dem Protokoll übernehmen und Standardaufgaben übernehmen. Das würde den C64 stark entlasten und die Implementierung auf ein Minimum reduzieren.


    Wenn man das vernünftig macht könnte man das auf alle Commodore Computer anwenden, vom VC-20 bis zum CBM720.


    Da würde sich zb. der Userport oder der Kassettenport anbieten, der ist bei allen Commodore gleich ...

  • Ächz, wozu für allen Quark immer gleich ne AVR oder CPLD Keule? Das einzigste was ein C64 mit so einem Modul noch machen muss, ist Daten von und zur Netzwerkkarte schaufeln, da kann einem auch kein AVR helfen. ARP, TCP Connection Handling, all das nimmt der Chip schon ab. Alles was man macht ist ein Socket zu beliebiger IP aufmachen und Daten empfangen und senden. Das ist mal wirklich simpel. Bisher ist ja schon fast das ganze RAM für einen IP-Stack verballert, das kann man sich hieralles komplett sparen, da das alles in diesen Chip gegossen ist. Genau das unterscheidet das ja groß von so Lösungen wie dem CS8900, die nur RAW Pakete verschicken und empfangen kann.


    Bitbreaker/Metalvotze

  • Das ist mal wirklich simpel. Bisher ist ja schon fast das ganze RAM für einen IP-Stack verballert, das kann man sich hieralles komplett sparen, da das alles in diesen Chip gegossen ist. Genau das unterscheidet das ja groß von so Lösungen wie dem CS8900, die nur RAW Pakete verschicken und empfangen kann.


    Ja dann entwickle es weiter bis man es fertig anwenden und nutzen kann. Wir bauen es dann nach und feiern dich. :thumbup:

  • was genau fehlt dir denn noch? post nummer 13 sagt doch quasi alles :)


    Mir, als blutigem Laie, sagt das eher wenig. :)
    Ich finde das gut, dass sich jemand Gedanken macht und daran bastelt. Bevorzugen würde ich entweder eine interne Lösung oder am Userport, weil bei mir am Expansionsport schon was dranhängt.


    flowerking

  • mag sein, aber für einen elektronikbastler wie diddl ist das mehr als genug info. der rest ist eine fingerübung :)


    Ist im Grunde schon richtig. Trotzdem bevorzuge ich fertig käufliche Lösungen. Oder zumindestens eine fertige PCB.



    Und wenn ich es selbst machen würde, dann mit AVR am Userport mit minimalem Umbau des Kernel.