Projektvorstellung: xlink -- Datentransfer PC <> C64 über usb/parport für x-dev und mehr

Es gibt 99 Antworten in diesem Thema, welches 25.276 mal aufgerufen wurde. Der letzte Beitrag (6. August 2022 um 20:47) ist von bigby.

  • Hallo!

    Danke für die Infos!
    Ich werde heute Abend nochmal ein anderes Kernal File vorbereiten, vielleicht hab ich da irgend was falsch gemacht.
    Werde mich auch noch mit dem Ultimate 1541 Timing spielen.

    Bei

    Code
    xlink ping


    bekomme ich ein ein timeout. Wie wird der ping beantwortet? Macht das der uController, oder der Kernal des C64?

    Code
    xlink bootloader

    funktioniert, und versetzt den uController in den bootloader Modus

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • tulan: Gehst du zum Patchen von einem originalen Kernal-Image aus? Also

    Code
    $ xlink kernal original.rom xlink.rom


    Ein Jiffydos Kernal hätte z.B. keinen Platz mehr für xlink, da beide den Platz für die Tape-Routinen verwenden. Da käme kein funktionierender Kernal mehr bei raus.

    Falls du es mit dem Kernal nicht schaffst, nimm erstmal ein prg:

    Code
    $ xlink server server.prg


    Dann server.prg auf die Ultimate kopieren und als einfaches Programm starten.

    Dass der Adapter auf Befehl in den bootloader wechselt zeigt, dass die USB-Verbindung schonmal funktioniert. Hast du auch die anderen von mir genannten Befehle ausprobiert? Kriegst du da ein "no response from server" oder etwas anderes?

    Der Ping wird durch den Server (C64 code im Kernal oder im standalone-PRG) beantwortet. Man will ja nicht wissen, ob der Adapter da ist, sondern ob der Server antwortet. Ein fehlender Ping weist entweder auf das Fehlen des Servers, auf eine fehlende Verbindung des uC zur CIA (beteiligte Leitungen FLAG und PA2, im Schaltplan als STROBE und ACK bezeichnet) oder eine defekte CIA hin. Eventuell mal prüfen, ob R12 und R13 die richtigen Werte haben, also die Leitungen mal durchmessen.

    Ich gehe ansonsten jetzt mal davon aus, dass du den Bausatz korrekt zusammengebaut und überprüft hast.

  • @Henning: ich habe ein kernal ROM File aus dem VICE verwendet, vielleicht ist das das Problem.
    Ich werde es nochmal mit einem anderen ROM ausprobieren bzw. mit dem server.prg

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Also ich hab das Kernal Image nochmal geprüft. Es ist das gleiche wie kernal.901227-03.bin auf zimmer.net.
    Hab mal das original mal probiert, das funktioniert auch mit der Ultimate II.

    Dann habe ich den alternativen Kernal wieder ausgeschaltet. (also Kernal vom C64-II)

    server.prg geladen, dann sollte ja was im Hintergrund laufen.

    Ich hab auch die Schaltung nochmals kontrolliert, schaut alles soweit gut aus.
    Ich kann auch ein Foto von dem Board posten, wenn ihr mal schauen wollt.

    Leider funktioniert xlink ping dann wieder nicht :(

    Hab mir die Signale mal mit dem Oszi angeschaut.
    Das einzige was ich messe ist ein kurzes auf low gehen beim 820 Ohm Widerstand von 5V auf ca. 2,5V für ca. 2us.

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Bei einem alten C64 Rechner habe ich:

    Code
    $ xlink ping
    received reply after xxxms
    $ xlink identify
    error: unknown server (does not support identification)
    $ xlink benchmark
    $ error: transfer timeout (0 of xxxx bytes transferred)

    Hier ist wohl die CIA2 teildefekt :(

    Bei dem vorher genannten C64 II geht nicht mal der Ping durch. :(

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Mach bitte trotzdem mal ein (hochauflösendes) Foto...

    Meine Projekte:
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Hier an paar Fotos (hoffe die Auflösung passt)

  • Dieser Lötkleks muss doch dort bestimmt nicht hin?

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Nein muss er nicht, er macht aber auch nichts, weil er nur auf der Massefläche ist.
    Hab ich schon alles 3x durchgemessen.

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Eine Frage hätte ich zum STROBE bzw. /FLAG.
    Das ist ja scheinbar ein Eingang beim CIA, der durch den uController kurz auf GND gezogen werden soll.
    Warum wird der beim C64 II nur kurz auf ca. 2,5V gezogen?
    Ist das vielleicht zu wenig bzw. zu kurz?
    Oder kann hier auch eine defekte CIA schuld an dem komischen Signal sein?

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Zum Thema Ultimate II habe ich noch was raus gefunden:

    - alternativer XLINK KERNAL via U-II.
    - Laden einer Disk über das U-II Menü, geht nicht
    - Mounten einer Disk über das U-II Menü, und dann LOAD "*",8,1 per Hand geht aber
    Das ist irgendwie seltsam, oder?

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Hab das Gefühl hier wird an zu vielen Baustellen gleichzeitig gearbeitet.

    * Du kannst die Platine auch ohne Kernal testen: Mit "xlink reset" sollte sich der C64 resetten lassen. Da dies direkt über die CPU auf der Platine geschieht, ist kein Kernal nötig. Pin 25 an der CPU und Pin 3 am Userport gehen hierbei kurz auf Low-Pegel.

    * Sind auf der Platine alle Vias durchkontaktiert? Oder fehlen hier noch Drahtbrücken von der Ober- zur Unterseite?

    * Hast Du mal Flip installiert und kannst selbst auf die CPU zugreifen und evtl. neu flaahen?

    * Sind 5V an Pin 31 und 32 der CPU dran?

    Wenn "xlink reset" klappt, würde ich davon ausgehen, dass die CPU die richtige Firmware drauf hat. Dann erübrigt sich die Sache mit Flip. Trotzdem bitte mal alle anderen obigen Punkte checken...

    Meine Projekte:
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Die USB-Funktionalität ist gegeben und der uC ist korrekt programmiert, sonst käme es garnicht soweit, die jeweiligen Befehle (ping, identify, benchmark) abzusetzen, sondern der client würde schon mit "could not open usb device /dev/xxxxx" abbrechen.

    Die VIAs sind bei der Herstellung der Platine schon durchkontaktiert, es sind dort keine Brücken mehr nötig. Kritisch sind dabei erstmal auch nur die VIA für VCC, die ja offensichtlich in Ordnung ist. Sollte die VIA in der Resetleitung defekt sein, würde lediglich "xlink reset" nicht funktionieren. Die beiden anderen VIAs in D7 würden lediglich den manuellen Einsprung in den Bootloader verhindern, sollten sie defekt sein.

    Die Kontakte vom uC zu den Leiterbahnen habe ich alle nochmal kontrolliert, bevor ich die Bausätze verschickt habe. Könnte trotzdem nicht schaden, nochmal bei strobe/flag und den Datenleitungen nachzumessen, ob die Verbindung tatsächlich bis zum Pin des uC geht. Die Tatsache, dass bei einem Rechner der Ping durchgeht weist allerdings stark darauf hin, dass die Verbindungen gegeben sind.

    Das Fehlerbild legt also eine defekte CIA nahe. Bitte überprüfe das erstmal mit einer CIA, von der du weißt, dass sie funktioniert. Alles andere (Ultimate & Kernal) ist da eher nebensächlich.

  • Freak:
    - an die Vias hätte ich auch schon gedacht, aber die sind durchkontaktiert
    - das mit dem Reset werde ich mal probieren, dass sollte auf alle Fälle funktionieren

    @Henning:
    - auf dem USB Bus tut sich was. Der uController wird in den 2 Modis jeweils richtig erkannt (dene firmware haut hin)
    - nur wie gesagt das Strobe Signal schaut sehr komisch aus.
    Wenn ich ein CIA wäre würde ich das nicht als low Signal werten ;)

    Ich werde es mal mit einem anderen Board ausprobieren. Bei den 2 C64 von gestern in die CIA fix eingelötet. Ich probiere es vorher mit einem anderen.

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Also der Reset funktioniert problemlos.
    Dauert ca. 1,3 sec. Das Reset Signal geht in dieser Zeit ca. 13x auf low?

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • Ja und? dass der Reset geht war ja anzunehmen.

    Keine Ahnung was du da misst... Kannst ja mal einen Blick in den Sourcecode werfen, dann siehst du, was beim Reset tatsächlich passiert.

    Hast du es denn jetzt man mit einer funktionierenden CIA ausprobiert?

    Ansonsten bitte keine Mutmaßungen, seltsamen Messungen, "was ich machen würde wenn ich eine CIA wäre", nebensächliche Ultimate-Fehlfunktionen mehr, bitte. Das ist hier nicht dein persönlicher Support-Thread. Liefere die Informationen, die notwendig sind, oder lass es bleiben.

  • So schaut das FLAG2 / STROBE signal aus auf 3 verschiedenen C64.
    Nachdem ich ein Ping Kommando abgesetzt habe.
    Ich habe das xlink Platine nur schon 3x durchgeklingelt, keine Lötfehler. Wird vielleicht der uController sein?
    Edit: Ich werde noch einen 4. Cevi testen...
    Edit2: beim 4. Cevi habe ich das gleiche Verhalten!

    Bilder

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • So schaut das Reset Signal aus. Einwandfrei!
    Da hab ich mich gestern etwas verschaut. Das war ein anderer Pin.

    Bilder

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • @Henning: Welchen avr-gcc verwendest du zum Kompilieren der Firmware?

    >avr-gcc --version
    avr-gcc (GCC) 4.8.1

    Wem ein leeres EPROM fehlt, braucht ein EPROM-Lösch-Gerät

    Mein GitHub: Bitte melde dich an, um diesen Link zu sehen.
    EasyFlash3 DIY: Bitte melde dich an, um diesen Link zu sehen.

    Mein Discogs: Bitte melde dich an, um diesen Link zu sehen.

  • So schaut das FLAG2 / STROBE signal aus auf 3 verschiedenen C64.

    Nachdem ich ein Ping Kommando abgesetzt habe.

    Wenn Du die Zeitbasis mal auf 100ns gesetzt hättest, könnte man auch etwas erkennen...

    Also: Am Pin 5 kommt bei einem Ping ein einwandfreies Rechteck raus, negative Pulsdauer so zwischen 200ns und 300ns (hab das nicht gespeichert...). Dann kommt der Widerstand R12 (bei mir 1k, bei Dir 820 Ohm) und dann geht das rundgelutschte Signal zum Userport. Die Flanken sind hier wesentlich runder und bei mir geht der Pegel nur bis ca. 0,5V runter.

    Das kommt daher, da im C64 an diesem Pin ein C nach Masse hängt, der macht das Signal rund. Und es gibt einen Pullup-Widerstand von 3,3K. Wenn Dein R12 zu groß ist, dann wird das nichts mit "Pegel-Runterziehen"...

    Also: Nicht nur Leiterbahnen durchklingeln, sondern auch Bauteile prüfen!

    Ist Dein Widerstand unter 1K?


    @Moderator:
    Kann man das nicht zu einem eigenen Thread umbauen: "Reparatur-Thread". Das verwässert den eigentlichen Thread doch extrem!

    Gruß,
    Thomas

    Meine Projekte:
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.