Iec-ata

  • Hello Skern Thanks for the update :rolleyes: . I flashed my IEC-ATA but I constantly get a blinking Error(Rot) light and deleting files from the hard drive seem to hang and do not delete.


    Any Ideas what i did wrong?


    Sorry for the English


    Thanks

  • Hello Skern Thanks for the update :rolleyes: . I flashed my IEC-ATA but I constantly get a blinking Error(Rot) light and deleting files from the hard drive seem to hang and do not delete.


    Dasselbe Problem tritt auch bei mir auf. Die rote LED blinkt dauernd bis das Directory zum ersten Mal aufgerufen wird, danach ist es in Ordnung. Files scratchen funktioniert nicht, die Festplatte und die grüne LED gehen in "Dauerlauf". Den ATMEGA habe ich 2x extern geflasht und keinen Fehler feststellen können. :nixwiss:

  • In der 1.34 habe ich das löschen wieder in die Urspüngliche Form gebracht, da das ausmaskieren des Teiles , was hängen bleibt, kein echter bugfix ist.
    in der 1.35.0 ist das wieder


    void deleteFile (char *pattern) {


    struct dirEntryStruct *entry;


    entryIndex_t entryIndex = 0;



    while ((entry = getEntry (entryIndex++))) {


    /* only process non-deleted files */


    if (entry->startBlock) {


    /* only delete files that match pattern */


    if (filenameMatch (entry->fileName, pattern)) {


    /* only delete non-locked files */


    if ((entry->fileType != DIR) && !(entry->readOnly)) {


    block_t tmpBufferBlock;


    bufferSize_t tmpBufferPtr;


    /* get inode of file to delete */




    tmpBufferBlock = entry->startBlock;


    // ataGetBlock (tmpBufferBlock, tmpBuffer);


    tmpBufferPtr = 0;


    /* free all blocks belonging to file */


    while (entry->fileSize) {


    // if at the end of inode, get next inode


    if (tmpBufferPtr == (BLOCKSIZE / sizeof (block_t)) - 1) {


    freeBlock (tmpBufferBlock);


    tmpBufferBlock = ((block_t *)tmpBuffer)[tmpBufferPtr];


    // ataGetBlock (tmpBufferBlock, tmpBuffer);//get next block


    tmpBufferPtr = 0;


    }


    // free block


    freeBlock (((block_t *)tmpBuffer)[tmpBufferPtr++]);


    entry->fileSize--;


    }


    /* free last inode block */


    freeBlock (tmpBufferBlock);



    /* remove entry from directory */


    deleteEntry (entry);



    flushDirBuffer();


    flushFreeBlockList();



    /* begin counting at 0 because direntries may have been moved */


    entryIndex = 0;


    }


    }


    }


    }


    }
    Nur das holen, der infos von der platte ist ja nötig.
    ich hab den geasammten Quellcode noch angehängt.

  • Ich hab weiter rumprobiert und dabei ist folgendes herausgekommen:


    IECATA an C64 A, Firmware 1.34:
    - bei Start oder IECATA-Reset rote LED Dauerblinken, nach Aufruf Directory i.O.
    - kein Dateilöschen möglich (Dauerlauf)
    - auf IECATA kopierte Dateien beim Neustart nicht mehr vorhanden
    - Fehlerkanal auslesen, kein Fehler, 00 ok 00 00
    - Unterverzeichnis anlegen nicht möglich.
    Nun ersetzte ich den ATMEGA mit dem früher ausgebauten, dort funktionierenden Baustein (Firmware 1.3).
    Genau die gleichen Fehler und Fehlerkanal i.O :grr:


    Dann habe ich das IECATA an einen anderen C64 angeschlossen.
    IECATA an C64 B, Firmware 1.3 :
    - bei Start oder IECATA-Reset rote LED Dauerblinken
    - Fehlerkanal auslesen, Fehler 74 :roll:
    - nun habe ich die Festplatte neu formatiert und es funktionierte alles :@1@:
    - nachdem der ATMEGA mit Firmware 1.34 wieder eingesetzt war funktionierte auch alles
    - zur Probe Unterverzeichnis angelegt, Directory ausgelesen, alles i.O.


    Nun wieder IECATA an C64 A angeschlossen:
    - alles funktioniert, kein Dauerblinken usw.
    - Unterverzeichnis angelegt, i.O.
    - Datei auf IECATA kopiert, Datei wieder gelöscht, alles i.O :freude


    Wie nun dieses Fehlverhalten zustande kommt ist mir ein Rätsel,da vor Einsatz der Firmware 1.34 auch alles funktioniert hat
    (Im Soft-/Hardware-möglichen Bereich)


    (Never change a running system?)

  • Danke für das Angebot das Projet ist schon auf einem SVN Server.
    Wer mitarbeiten möchte bitte bei mir melden.


    Was das nichtblinken angeht, vermute ich, das der AVR auf externen Takt umgestelt ist und dadurch einfach nicht weiterläuft.

  • mmmh, ich hab grad mal die platine bestückt und blink.hex geflashed ... und es blinkt nicht :/ wenn ich reset abziehe geht die rote LED an und leuchtet, das wars. (das gleiche passiert allerdings auch wenn ich die firmware flashe). MUSS da was am ide anschluss hängen damit das blink dingen funktioniert? oder was könnte es sonst noch sein?


    *ratlos*

  • Wenn es im AVR ankommt, dieser neu startet (laeuft), dann sollte die LED blinken. Das mit dem Blink-Programm hatte bei mir geklappt, nachher die Firmware nicht mehr.
    Hast Du mal den AVR neu gestartet ? - z.B. Stromversorgung trennen.


    Fuer diesen Blinktest muss nichts am Controller haengen.


    Ich koennte immer wieder die Pocken kriegen, wenn ich eine Platine mit AVR bekomme, dieser aber nur ueber einen Umweg programmierbar ist, damit man die ISP-Schnittstelle einsparen konnte. btw wo findet man die aktuellste Firmware ?


    Michael

  • Quote


    Hast Du mal den AVR neu gestartet ? - z.B. Stromversorgung trennen.


    ja klar


    Quote


    Fuer diesen Blinktest muss nichts am Controller haengen.


    ok, das dachte ich mir eigentlich auch


    Quote


    wo findet man die aktuellste Firmware ?


    ich hab das file von der dienstagstreff seite genommen, keine ahnung ob das aktuell ist....für den anfang würde mir reichen wenn *irgendwas* passiert :)

  • Ich habe mal an meine Platine einen ISP gehaengt und zwei der aktuelleren Firmware-Versionen aus diesem thread verwendet. Das Ergebnis war mit meinen aelteren ATA1-3 Platten ernuechternd : manchmal geht die rote LED aus, aber irgendwie kommt nichts an der HD an. Format-Versuche bleiben irgendwie in dem AVR. Dummerweise kann man kaum wissen was in dem Stein so vor sich geht.
    Manchmal stirbt der Bus ab, beide LEDs leuchten, die rote leuchtet in verschiedenen Blink-Frequenzen, alles in Allem : nichts.


    Ich werde mir bei Gelegenheit mal einen CF-Card<>IDE Adapter besorgen. Vielleicht bewirkt das dass lange erhoffte Wunder.


    Michael

  • Wenn man die Software auf eine AVR bringt hat man immer darauf zu achten das die Fuses richtig gesetzt sind.
    Beim flashen mit dem c64 ist das automatisch richtig.


    Wenn das blink.hex nicht blinkt, ist meist der interne Takt ausgeschaltet.


    Wenn das durch das flashen mit dem c64 nicht zu beheben ist, ist ein Paralel-flash nötig oder der Chip ist defekt.
    In Beiden Fällen bitte den Chip zu mir schicken.
    Ich schicke dann umgehend einen funktionstüchtigen zurück.

  • Ich habe gesehen das sd2ata jetzt Jiffy Dos (und die hoche geschwindigkeit die damit kommt) unterstutzt. Kann Iec2Ata das auch oder ist das noch nicht implementiert ?


    Ich muss mein Iec2Ata noch zusament basteln, ich hoffe naechstes wochenende.... :)


    TC

  • jiffy dos ist auf jeden Fall geplant. Ich habe eine vorab Version davon hier und meine LL Version hatte das auch.
    Das Problem ist ja, das ich nicht C programmieren kann und nur Erweiterungen und Schönheitsreparaturen einbauen kann.


    skern: Die Fusebits fuer den Takt sind : 0010:CKSEL = 0010 "Internal Osci. 8 Mhz" .
    im Makfile steht :avrdude -c bsd -p m162 -U flash:w:$(PRG).hex
    und sonnst flash ich mit dem c64

  • hrm, ich hab das dingen so wie du es dienstag gefixt hast jetzt mal an meinen c64 gehängt und es geht.... nix :/


    die grüne LED leuchtet bei eingesteckter CF karte, die rote wenn ich die karte rausziehe... das ist wohl soweit richtig? (interessanterweise ist es egal ob der reset jumper gesetzt ist oder nicht)


    ansonsten geht allerdings nix, ich hab jetzt directory laden von 10 und 11 probiert (toll das nirgendwo steht was richtig ist =P) ... und wie müssen eigentlich die jumper stehen damit was passiert?


    eine 1541 funktioniert natürlich an dem c64, also sollten kabel und iec bus etc schon in ordnung sein ...


    ...also äääh? wie jetzt? das dingen ging doch? irgendwie hatte ich mehr als ein "device not present" erwartet :/

  • Ich habe es auch mal mit einem CF-IDE Adapter versucht. Mit drei verschiedenen CF-Karten kam ich auch zum Ergebnis : nix.


    Einmal hat es immerhin die bestehende Formatierung zerstoert. Ich habe mehrfache Formatversuche mit CBM- und Jiffy-DOS gemacht. Ein- Aus-Schalten, Drohen, Fluchen, Betteln ;) ... nix.


    Michael