Autor |
Flash EPROM Suche nach: eprom (644) |
|
|
|
|
BID = 3181
Benedikt Inventar
Beiträge: 6241
|
|
Hallo,
ich versuche seit ein paar Monaten ein Flash EPROM per Druckerport anzusteuern.
Mit der 28F Reihe geht es wunderbar, nur bei den 29ern habe ich Probleme:
Daten lesen funktioniert. Nur Schreiben geht nicht.
Ich versuche in den ID Mode zu kommen, um die Hersteller Infos zu lesen, aber er bringt mir immer die ersten beiden Bytes aus dem EPROM.
Anfangs hatte ich CE fest auf Masse, jetzt bekommt WE denselben Zustand wie CE, vorausgesetzt OE ist High.
Alle Timing Vorgänge genau wie im Datenblatt:
OE high, CE high, WE High.
Adresse einstellen
CE, WE low
Byte Senden
CE, WE high
nächste Adresse einstellen
Habe ich doch richtig gemacht oder ?
Ich bin wirklich am Verzweifeln, denn ich muss so ein Verflashtes BIOS aus einem Laptop wieder reparieren....
mfg
Benedikt
|
|
BID = 3184
Jornbyte Moderator
Beiträge: 7143
|
|
Schreibe mal den genauen Type her. |
|
BID = 3185
Electronicfox Schreibmaschine
Beiträge: 1634 Wohnort: hamburg
|
Mit welchen Gerät programmierst du den. Hatte sowas ähnliches mal mit dem PonyProg. Hatte auch einige EPROMs nicht richtig programmiert.
_________________
Es ist nicht mein Ziel mit dem Kopf durch die Wand zu gehen, sondern mit den Augen eine Tür zu finden. Also warum kompliziert, wenn’s einfach geht.
|
BID = 3186
Benedikt Inventar
Beiträge: 6241
|
Ich habe schon so ziemlich alles versucht:
Winbond, Silicon Storage, Atmel
Im moment habe ich den Atmel AT29C020 drin.
Adressen werden von 4040 Zählern gezählt.
Reset, Clock gehen zum PC, ebenso CE, OE und die 8 Datenbits. Damit ist der Druckerport voll belegt.
CE wird invertiert, und zusammen mit OE einem NAND Gatter zugeführt. Daraus wird WE erzeugt.
Dies ist die gesamte Hardware.
Software ist ebenfalls Eigenbau in QBasic.
mfg
Benedikt
|
BID = 3187
Jornbyte Moderator
Beiträge: 7143
|
Nun gibst du leider den Type nicht an.
Ich "Denke" das ist ein Timing-Problem.
Die Umschaltung zwischen den Adr's und der Steuersignale könnte zu klein sein.
Prüfe da mal die Zeiten.
|
BID = 3188
Benedikt Inventar
Beiträge: 6241
|
Was meinst du mit "Type" ?
Timing kann ich ausschließen, habe immer 1ms Delays ziwschen jeden Pegeländerungen, und da wo im Datenblatt 10ms stehen habe ich 100ms.
|
BID = 3200
Jornbyte Moderator
Beiträge: 7143
|
Man sollte richtig lesen. Der Type ist AT29C020.
Ist der neu? Wenn nicht, ist das Teil geschützt.Er hat einh SOFTWARE DATA PROTECTION Bit. Das muß gelöscht werden.
Wenn er da immer noch nicht will, die Spannung auf 4 bis 3,8V senken und den gesamten Flash löschen. Danach sollte es gehen.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 3201
Benedikt Inventar
Beiträge: 6241
|
Mein Problem ist, dass der Flash EPROM keinen Befehl von mir annimmt !
Er lässt mich weder die ID, noch den Zustand der Protection auslesen.
Er bleibt immer im Read Mode.
So komme ich auch nicht in den Chip Erase mode.
Was kann beim Senden eines Befehls schiefgehen ?
|
BID = 3202
Jornbyte Moderator
Beiträge: 7143
|
Senke die Spannung, so kommst du auch in den Erase modus.
|
BID = 3204
Benedikt Inventar
Beiträge: 6241
|
Was soll das Bringen wenn ich die Spannung senke ?
Ich kann die Spannung bis 2,5V runterfahren, ohne dass ich was ändert. Darunter wird das IC von den Datenleitungen versorgt.
Mein Problem ist nicht das Löschen, sondern, dass das IC nicht auf meine Befehle reagiert.
Also entweder stimmt was bei der Byte Write Prozedur nicht, oder ich habe keine Ahnung.
Die Prozedur habe ich genau laut Datenblatt....
|
BID = 3205
Jornbyte Moderator
Beiträge: 7143
|
Atmel stellt auch eine Reihe von µControlller mit Flashrom her. Auch da sind Lockbits drin. Bei einigen ist ein Neuprogrammieren nicht mehr möglich.
Wird die Spannung auf 4V gesenkt, geht es wieder.
|
BID = 3207
Benedikt Inventar
Beiträge: 6241
|
Wenn ich Befehle senden könnte, (bzw. wenn das Ding diese verstehen würde) dann könnte ich den Lock abschalten.
|
BID = 3208
Benedikt Inventar
Beiträge: 6241
|
Hier mal mein Quellcode:
SUB BWrite (add, Byte)
OE = 0: CE = 0: RW = 0
OUTD = (1 - Clock) + 2 * (1 - Res) + 4 * (1 - OE) + 8 * CE + RW * 32
OUT &H37A, OUTD
Delay 1
JumpTO Add
Delay 1
CE = 1
OUTD = (1 - Clock) + 2 * (1 - Res) + 4 * (1 - OE) + 8 * CE + RW * 32
OUT &H37A, OUTD
Delay 1
OUT &H378, Byte
Delay 1
CE = 0
OUTD = (1 - Clock) + 2 * (1 - Res) + 4 * (1 - OE) + 8 * CE + RW * 32
OUT &H37A, OUTD
Delay 1
END SUB
BWrite &H5555, &HAA
Delay 100
BWrite &H2AAA, &H55
Delay 100
BWrite &H5555, &H90
Delay 100
Clock = 0: Res = 1: OE = 1: CE = 0: RW = 1
OUTD = (1 - Clock) + 2 * (1 - Res) + 4 * (1 - OE) + 8 * CE + RW * 32
OUT &H37A, OUTD
Delay 1
Clock = 0: Res = 0: OE = 1: CE = 1: RW = 1
OUTD = (1 - Clock) + 2 * (1 - Res) + 4 * (1 - OE) + 8 * CE + RW * 32
OUT &H37A, OUTD
Delay 1
PRINT "Manufacturer Code: "; INP(&H378);
Noch ein paar Erklärungen dazu:
Ich steuere direkt die 8 Bit Daten des FlashEPROMs. Die Richtung der Daten der PC Schnittstelle wird mittels RW bestimmt. RW=1 ist lesen und RW=0 ist schreiben.
CE, OE sind bereits invertiert, d.h. CE=1 bedeutet Chip ist aktiviert.
Clock, Reset steuern die beiden 4040 Adresszähler. Ebenso das Unterprogramm JumpTO:
Es zählt bis zur angegeben Adresse.
Dies funktioniert ohne Probleme. Ich habe es mit einem extrernen Zähler überprüft.
Der Rest müsste auch passen, aber warum geht es nicht ?
Timingprobleme, Störungen wegen zulangen Kabeln usw. kann ich ausschließen. Ich habe es zwar über 5m angeschlossen, aber auch ohne Kabel geht es nicht.
|
BID = 3211
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Offenbar geht da etwas anders als Du glaubst.
Ich würde mal anstelle des PROMS ein paar LEDs in die Daten und Steuerleitung stecken und das Programm singlesteppen.
Vielleich kommste dann dahinter.
Die Adressleitungen kannst Du nicht mit LEDs kontrollieren, weil der 4040 ungepuffert ist und der Zähler dann wohl nicht mehr korrekt arbeitet.
Aber da interessiert ja eh nur ob die A0 zum richtigen Zeitpunkt umschaltet.
Dafür reicht ein DVM.
|
BID = 3214
Benedikt Inventar
Beiträge: 6241
|
Dast ist ja grad das seltsame:
Ich hab sogar ein Oszilloskop dran gehängt, und alles passt !
Naja, soweit wie ich es sehen konnte, denn ein Oszilloskop ist ja nur für periodische Signale.
Das allerselsamste ist aber, dass ein 28Fxxx in der Schaltung einwandfrei läuft !
|