EPROM AM27C400-120DC programmieren - funktioniert nicht

    • Offizieller Beitrag

    Hi,

    ich benötige die Hilfe von Amiga Kennern, die schon mal erfolgreich ein Kickstart ROM durch ein EPROM AM27C400 ersetzt haben. Das funktioniert bei mir nicht, und ich habe keinen Schimmer was da schief geht :(


    Ziel: ich möchte für meine Amigas ein Diagnostik-EPROM erstellen und Kickstart Patches ausprobieren (bitte keine Copyright Diskussion - die Kickstart EPROMS für meine Amigas habe ich bisher bei Vesalia oder Amiga*Kit gekauft, ich unterstütze natürlich die Läden)


    Voraussetzung:

    • Ich habe zwei Amiga 600 Platinen, die mit Kickstart 3.1 EPROMs von Vesalia ausgestattet sind und über die IDE-Schnittstelle mit einer 3.1 Workbench (ebenfalls original Vesalia :) ) auf Compact-Flash einwandfrei booten. Bei den Kickstart EPROMS handelt es sich um AM27C400-150DC
    • Ich habe einige ungebrauchten EPROMs AM27C400-120DC Baujahr 1997 erstanden. Diese lassen sich mit meinem Galep 5 auslesen und programmieren.
    • Zum Test, ob alles grundsätzlich funktioniert, habe ich das original Kickstart 3.1 EPROM mit dem Galep 5 ausgelesen, als Datei gespeichert und einen AM27C400-120DC damit programmiert. Das funktioniert alles ohne Fehlermeldung.
    • Den Inhalt des programmierten EPROMS habe ich ausgelesen und mit dem Inhalt des zuvor ausgelesenen original Kickstart EPROMs verglichen. Die Inhalte sind identisch.

    Problem:

    • Mit dem Kickstart EPROMs AM27C400-150DC laufen die Amiga 600 einwandfrei. Mit den identischen Kopien gibt's nur einen roten Screen. Ich habe mehrere EPROMs durchprobiert - das Ergebnis ist bei allen Kopien gleich.
    • Ich gehe davon aus, dass die 120ns EPROMs genau so gut funktionieren sollten, wie die 150ns EPROMS.

    Was, zum Teufel, mache ich falsch?

    Kann es sein, dass die EPROMs zwar im Galep programmiert werden können dann aber trotzdem nicht im Amiga laufen? Warum ?

    Könnte jemand evtl. ein oder zwei Exemplare meiner EPROMs ausprobieren, ob die bei Ihm funktionieren? Evtl. habe ich ja doch 'faule' Exemplare erwischt.

    Gibt's sonst noch was zu beachten?

  • Komisch, die AMD AM27C400 finde ich in meinem beeprog gar nicht mit 120ns. Da gehts bei 150 los. Kannst du beim Galep 120er auswählen oder hast du als 150er gebrannt ? Wenn die 150er mit dem gleichen Hexdump im Amiga gehen, gibts ja nur 2 Möglichkeiten. Entweder schreibt der Galep die 120er nicht sauber, wovon ich nicht ausgehe, es sei denn du hättest sie zB als 150er gebrannt bzw. der Programmer kann erst ab 150, ich weiss es beim galep nicht...oder der Amiga arbeitet einfach nicht mit diesen Eproms..

    • Offizieller Beitrag

    Danke für Deine Uberlegungen :)

    Mit 120ns bzw. 150ns wird ja nur die max. Geschwindigkeit des EPROMs angegeben also z.B. 'ChipEnable to Output Delay' <= 120ns bei einem AM27C400-120. Die Programmieralgorithmen sind laut Datenblatt in allen Geschwindigkeitsklassen identisch. Es gibt keine Notwendigkeit, bei dem Baustein, die Geschwindigkeitsklassen im EPROM-Programmiergerät zu unterscheiden.

    Es gibt übrigens die folgenden Varianten:

    pasted-from-clipboard.png

    Im Amiga 600 mit 7MHz sollten alle Geschwindigkeiten < 150ns funktionieren.

    • Offizieller Beitrag

    Das Rätsel ist gelöst.


    Der Galep 5 liest reproduzierbar in der Speicherzelle $34C1 des Original 3.1er EPROM den Wert $A5. In dem 3.1er ROM muss da aber $25 drinstehen. Das Bit 7 des Bytes wird vom Galep als 1 erkannt, müsste aber 0 sein.

    Im Amiga wird die Speicherzelle aber meistens als $25 gelesen, denn der bootet ja in der Regel - manchmal hatte ich auch den Effekt mit dem roten Screen, wegen der vielen Versuche ist mir das aber nicht aufgefallen


    Wenn ein EPROM programmiert wird, schreibt der Galep natürlich $A5 in die Speicherzelle und damit bekomme ich immer nur einen roten Screen. Beim Vergleich der beiden EPROM Inhalte auf dem Galep sind die natürlich identisch.


    Ich gehe davon aus, dass das Original EPROM tatsächlich eine Macke hat. Ein neues AM27C400-120 programmiert mit dem

    korrekten Inhalt funktioniert in allen Kombinationen einwandfrei.

  • Na, nach sowas kann man aber lange suchen :(

    Wie bist Du denn darauf gekommen? Du wirst ja nicht jede Speicherzelle einzeln verglichen haben.


    Für kritische Fälle hat mir übrigens jemand mal den Tipp gegeben, das Eprom mit Unterspannung und Überspannung auszulesen und dann zu vergleichen - dann wäre es evtl. aufgefallen. Da bin ich aber jetzt auch nicht drauf gekommen, weil ich den Fehler halt auch nicht im Original vermutet hatte.

    • Offizieller Beitrag

    Ich habe das auf die unsportliche Art erledigt :)

    Ich habe ein 3.1er Image von einem Helferlein zur Verfügung gestellt bekommen. Das habe ich mit meinen Image verglichen - und voila, da war das unterschiedliche Byte. Ich habe dann einen meiner AM27C400-120 mit dem neuen Image programmiert - das funktionierte dann auf Anhieb im Amiga.

  • Ja, das mit dem high voltage und low voltage verify ist schon richtig. Ich denke, sein Galep als Programmer der Preisklasse macht das automatisch ?!

    Jedenfalls eine interessante Geschichte mit dem verwechselten Byte. Da muss man erstmal drauf kommen... :)


    Zum Vergleich der hexdumps nehme ich ganz gerne das Tool hexcmp nur zum Vergleichen. Und wenn ich vergleichen muss, etwas ändern und die Prüfsumme neu berechnen muss in verschiedenen Fällen, nehme ich gerne das Tool HxD. Diese Tools sind kostenlos und die haben mir schon oft gute Dienste geleistet bei der Reparatur von Fzg.-Steuergeräte-Software und auch im Computerbereich. Nur eine kleine Empfehlung an dieser Stelle, falls unbekannt..

    • Offizieller Beitrag

    Im Amiga 600 mit 7MHz sollten alle Geschwindigkeiten < 150ns funktionieren.

    Rechnet man das so? Also alle 140,05ns ein Zugriff? Ist das wirklich so? Ich dachte beim Amiga ist nur jeder 2. Zyklus RAM/ROM, weil sich das mit dem Chipset geteilt wird? Oder falsch verstanden? Oder doch nur alls 280,1 ns ein ROM Zugriff?


    7,14 MHz
    7140000 Hz
    0,0000001400560224 s
    140,0560224 ns
    • Offizieller Beitrag

    Rechnet man das so? Also alle 140,05ns ein Zugriff? Ist das wirklich so? Ich dachte beim Amiga ist nur jeder 2. Zyklus RAM/ROM, weil sich das mit dem Chipset geteilt wird? Oder falsch verstanden? Oder doch nur alls 280,1 ns ein ROM Zugriff?

    Na ja, WENN der Rechner mit 7MHz auf die EPROMs zugreift, benötigt man welche <= 140ns. Das ist für mich nur der theoretische Daumenwert da ich mich nicht damit beschäftigt habe, wie der Amiga genau den ROM Zugriff macht.

    Ich habe mich nur auf die Tabelle mit den erhältlichen EPROM Typen bezogen und behauptet, dass alle Typen mit Zugriffszeiten <= 150ns im 7MHz Amiga funktionieren.

    Die 255ns Typen könnten natürlich auch funktionieren , wenn der Rechner nur mit halben Takt darauf zugreift.

  • Die Frage ist auch, wann die Antwort des EPROMs da sein muss. Wenn das EPROM in einem Takt die Adresse und _CS_ bekommt und dann im übernächsten Takt die Daten liefern muss, dann würden 255ns tatsächlich reichen. :nixwiss:

    :tuschel: Suche: BeBox, Commodore 900, KIM-1 :tuschel:

    • Offizieller Beitrag

    So langsame hab ich auch gar nicht da. Ich hab die Tage mal eines mit 105 und mit 150ns Zugriffszeit gebrannt und es funktionieren beide. Ob das reicht, um eine generelle Empfehlung für 150ns auszusprechen, weiß ich nicht. Oder ob vlt das mit 150ns zu sporadischen Abstürzen führt, weil es eben womöglich sehr an der Grenze ist, falls man rechnerisch wirklich 140ns braucht.

  • Da ein 68000er 4 Zyklen für einen Ram-zugriff (lesen oder schreiben) benötigt, ist die effektive Taktrate für den Ramzugriff ca. 1,8 MHz. Die würde theoretisch eine minimale Zugriffszeit von ca 550ns erfordern. Die Dauer der CS und R/W Signale ist aber viel kürzer als 550ns. Für CS ist das ca. 140ns bei 7,2MHz. Um die genauen Grenzwerte für das Timing zu errechnen muss man nun aber zum Einen das Timing der Roms und zum Anderen das Timing der CPU inklusive Verzögerungen durch die dazwischen liegende Logik berechnen. Das ist leider alles andere als einfach.... beim Amiga sind für gewöhnlich 120ns-160ns ausreichend. (der 4000 hat sogar einen Jumper um zwischen 120ns und 160ns zu wählen).


    Timings für AM27c400



    -Jonas

  • Danke Jonas!


    Braucht man nicht beim 1200er dann doppelt so schnelle ROMS wie beim A500, weil er mit 14Mhz läuft?

    Ich glaube Turbokarten beeinflußt das nicht, weil das "ich lese aus dem ROM" immer mit 7 oder 14 Mhz läuft?

    Das hängt von der 'glue' ab. Das ROM ist ja nicht direkt an die CPU drangeflanscht. Wenn dort ein delay eingebaut ist, dann ist das beliebig. Der 1200 und 4000 haben sehr stark optimierte ASCIs für Ram/Rom-Zugriff. Es kommt also immer auch darauf an, was zwischen CPU und RAM/ROM ist. Der Teufel steckt da im Detail. Daher nimmt man ja auch solche 'Erfahrungswerte', da man sonst zu viel rechnen muss.


    Hinsichtlich 150ns Roms die nicht funktionieren:

    EPROMs haben nur eine begrenzte Lebensdauer was das Überschreiben angeht (manchmal sogar nur um 100 mal). Da kann es mit dem Alter und wiederholtem Überschreiben auch zu seltsamen Effekten kommen. Ich habe aus einer Ebay-Auktion ca. 50% der 120ns AM27C400 wegschmeißen können, nachdem die den Stresstest im programmer nicht überlebt haben.


    Mein Tip: Die EPROMs nach dem Löschen in einem Backofen bei ca. 120°C zwei Stunden lang backen. Danach langsam im Backofen abkühlen lassen. Manchmal hilft das.


    -Jonas

  • Daher nimmt man ja auch solche 'Erfahrungswerte', da man sonst zu viel rechnen muss.

    Ist denn der "Erfahrungswert" für alle Amiga gleich? Du erwähntest den Jumper beim A4000. Der scheint ja auch max. 120ns zu brauchen.

    Der 4000 hat eben einen Jumper um auch 160ns ROMs verwenden zu können (eventuell sogar langsamer). Wie das bei den anderen Amigas genau aussieht kann ich im Detail nicht sagen. 150ns sind soweit ich weiss überall verwendbar. Mit dem Jumper auf 120ns im A4000 ist der Romzugriff natürlich schneller.


    -Jonas

  • Ich habe gerade nochmal herumgesucht, wie oft man den AM27C400 löschen kann. Leider gibt es da wohl keine Angaben ausser 'several thousand times'. Laut verschiedenen Publikationen ist die Anzahl der möglichen Löschvorgänge abhängig von der einstrahlten Energie auf die Isolationsschicht des Chips. Das bedeutet: je öfter oder stärker das UV-Licht, desto kürzer die Lebenszeit der Chip. Das wusste ich bis jetzt noch nicht. Mein EPROM-Löscher kann den 27C400 in 30-40 Sekunden löschen (laut Datenblatt sollten es >20 min sein). Eventuell frittiere ich mir hier also die Chips... kein Wunder, dass ich so viel Ausschuss habe :fp:


    -Jonas

  • Ein paar Minuten mehr Höhensonne schadet Deiner Haut ja auch. OK, ich weiss, es ist ein billiger Vergleich aber die UV Strahlung eines Löschgerätes möchtest Du überhaupt nicht auf der Haut haben. Diese Strahlung beschädigt auch den Halbleiter.

    Also: nicht länger Löschen als unbedingt nötig.

    Früher gab es "lahme" Löschgeräte, da dauerte es tatsächlich sehr lange, aber die modernen haben so intensives Licht, dass eine Minute völlig ausreicht.

    Ob intensiv und kurz mehr Schaden macht, als lahm und lange... kann wohl keiner sagen.


    Noch ein Tip (fand ich mal mehr zufällig heraus): helles Tageslicht auf das Fenster löscht zwar nicht das EPROM, kann aber die Leseverstärker blockieren. Gibt dann Aufbauten, welche *manchmal* nicht funktionieren.

  • Ich habe schon Kickroms für viele Amigas gebrannt. Eproms ware -120 oder-150. Hatte noch nie Probleme damit

    Egal welcher Amiga, egal welches Eprom.


    Allerdings würde ich nur noch Kickrom 3.1.4 nehmen. Kostet nicht viel und ist super.

    Zum Brennen nehme ich immer einen TL866. Ist günstig und brennt die Teile ohne Probleme. Allerding benötigt man einen Adapter.

  • Kick 1.3 macht beim A1200 / A3000 / A4000 und selbst beim A600 aus meiner Sicht keinen Sinn, da die Festplatten nicht booten.

    Am A500 /A2000 würde ich mir ein Kickromumschalter mit Kick 1.3und 3,1 (3.1.4) einbauen sowie eine 512kb Speichererweiterung mit Schalter zum Deaktivieren.

    Dann sollten die meisten Games laufen. AGA- Spiele logischerweise nicht :S

    • Offizieller Beitrag

    @ Birne: Du kannst Dir Dein 1.3 umbauen, das man booten kann.


    Zur Diskussion um die Zugriddzeit erlaube ich mir mal den Amiga Guru "Matze" aus dem Nachbarforum zu zitieren:


    "

    Ein 68k-Amiga mit 7 MHz braucht 140ns pro Takt. Ein Speicherzugriff (egal wo) braucht midestens 4 Takte, wovon nur drei Takte mit gültigen Daten- und Adress-Steuersignalen versehen sind. Daher ist die nötige Zugriffszeit im A500 140ns*3=420ns. So langsame ROMs gibt es nicht [Blockierte Grafik: https://www.a1k.org/forum/images/smilies/05.gif]



    Im A1200/3000/4000 erfolgt der Zugriff in minimal drei Systemtakten, wobei wieder ein TAkt nur für das "eingrooven des Busses" dient, also hat der Bus eher zwei Takte Zeit die richtigen Daten zu liefern.



    Bei den 14Mhz des A1200 bedeutet das 2*70ns= 140ns. Da damals so schnelle ROMs schweineteuer waren, hat Commodore da einen Wartetakt eingeführt, also 3*70=210ns Zugriffszeit.



    Beim A3000/4000 mit 25Mhz Systemtakt ist ein Takt 40ns lang. Daher haben die zu den 2 minimalen Takten entweder 2 Wartetakte (4*40ns = 160ns) oder 3 Wartetakte (5*40ns=200ns).


    "