Hallo, ich möchte das EPROM eines 80C51 auslesen. Die genaue Bezeichnung ist 80C51BH-3 von Philips. Sieht aus, als wäre er maskenprogrammiert. Ob die Fusebits gesetzt sind oder nicht muss man halt sehen. Jetzt ist meine Frage, wie kann ich auf das EPROM zugreifen, also es auslesen? Ich stehe noch ziemlich am Anfang, was Mikrocontroller angeht. Habe mich durch das AVR-Tutorial gearbeitet, allerdings habe ich BASCOM AVR zur Programmierung benutzt... Aus dem Datenblatt werde ich nicht so recht schlau: http://www.keil.com/dd/docs/datashts/intel/80x1bh_87c51_ds.pdf Auf Seite 15 steht dass ich die jeweilige Adresse angeben muss und dann über Port.0 die Daten raus kriege, wobei P2.7 auf low liegen muss. Wie weise ich jetzt die Adresse zu? Was ist sonst noch zu beachten und wie mache ich aus den Daten, die ich da raus bekomme wieder ein .hex-File oder wie kriege ich sie beispielsweise in einen 89S51 oder 87c51?
Ein Maskenprogrammierter 80c51 hat kein Eprom. Das Programm wurde bei der Herstellung mit einer speziellen Maske im Silizium "verewigt". Hier dürfte es kaum eine Möglichkeit geben von "außen" auf das Programm zuzugreifen, da fehlt m.E. die ganze dazunötige "Hardware" im Chip selber, wozu auch? Bzw. es sicd halt die entsprechenden "Fuse-Bits" in der Maske gesetzt.......
Also: Wenn die FUSE-Bits nicht gesetzt sind, dann könntest du eventuell auf den internen Speicher zugreifen. Es sollte so funktionieren: Du legest /EA auf Masse und führst ein eigenes kleines Programm aus dem externen Speicher aus. Dieses Programm liegt über dem Speicherbereich, der vom internen ROM belegt wird. (/EA auf Masse, damit die Resetvektoren auf dein Programm zeigen) Danach muss dein Programm /EA auf Vcc legen, was den internen Speicher wieder einschalten sollte. Nun müsstest du ganz normal auf den internen Speicher zugreifen können. Sind die FUSE-Bits gesetzt, so wird der Zustand von /EA beim Reset gespeichert und kann nicht verändert werden. (siehe Datenblatt) Gruß, SIGINT
Hallo SIGINT, vielen Dank für Deine Antwort. Könntest Du mir einige Schritte vielleicht noch etwas detaillierter erklären? Das eigene Programm, von dem Du gesprochen hast, soll dann auf ein externes (E)EPROM oder wie verstehe ich das? Dazu bräuchte ich dann wohl noch ein Latch (welches?)? Was genau soll das Programm machen außer /EA wider auf Masse zu legen? Ich habe leider keine Möglichkeit EPROMs zu brennen. Ginge es auch mit einem AVR-µC (STK 500 ist vorhanden). Also praktisch dass der AVR-µC dem 80C51 ein EPROM vorgaukelt? Mit „ganz normal auf den Speicher zugreifen“ können meinst du so wie im Datenblatt unter verification beschrieben? Abschließend habe ich noch eine allgemeine Frage zur Programmierung von 89C51 bzw. 52 Controllern: Wenn ich einen 89C52 24PC programmieren möchte. Welche Software (möglichst freeware) eignet sich am besten dafür, das .hex-file auf den Chip zu übertragen und es auch wieder auszulesen, falls das mal nötig sein sollte. Laut Datenblatt gibt es wohl je nach Typ die Möglichkeit ihn high-voltage zu programmieren oder mit 5 Volt seriell (über RS232?). Könnte man das STK 500 für eine high-voltage Programmierung der 89C52 benutzen und wie müsste man es beschalten? Vielen Dank allen, die antworten! Christian
Standard 8051 benötigen einen richtigen Prommer, wie EPROM/Flash, d.h. alle Adressen, Daten, Steuersignale werden angeschlossen. Früher wurden oft auch 8051 mit veralteter Programmierung als ROM-less 8031 verkauft. Man kann also auch von 8031 manchmal etwas auslesen, was wie ein Programm aussieht. Nur neuere 8051 erlauben auch ein serielles Proggen oder haben einen Bootloader. Das steht dann im Datenblatt. Peter
Der Trick mit dem EA-Pin funktioniert nicht, wäre doch zu einfach den Code auszulesen! Der EA-Pin wird beim Reset(-Ende) gelatcht und dann ist der Pinzustand egal. Und wenn es nicht so wäre, nach dem Umschalten auf's interne Programm läuft dieses und das externe ist dann vollkommen egal!
Hallo! Wenn man ein eigenes Programm im externen Speicher unterbringt (Minimalmonitor), kann man versuchen durch EMV (Spannungseinbrüche, Störungen auf Signal- und Betriebsspannungsleitungen...) das interne Programm "abstürzen" zu lassen. Wenn man Geduld und Glück hat, rennt der Controller manchmal in das externe Programm. Und dann hat man Ihn!
@Codecracker: Siehe Datenblatt: "External Access Enable/Programming Supply Voltage: EA must be externally held low to enable the device to fetch code from external program memory locations 0000H and 0FFFH. If EA is held high, the device executes from internal program memory unless the program counter contains an address greater than 0FFFH. This pin also receives the 12.75V programming supply voltage (VPP) during EPROM programming. If security bit 1 is programmed, EA will be internally latched on Reset." Interesannt ist der letzte Satz. EA wird nur gelatcht, wenn das Security Bit gesetzt ist. Ich meine mich erinnern zu können, daß ohne gesetzem Security Bit der interne Speicher ohne Probleme ein- und ausgeschaltet werden kann. Zudem werden Programme ab 1000H aus dem externen Speicher ausgeführt, auch bei gesetztem Security Bit. (unabhängig von EA, soweit ich mich erinnere) Gruß, SIGINT
Hallo, können wir da nochmal kurz zurückspulen. Die Rede ist von einem 80C51BH, also nicht 80C31 (ROM.Less) oder 87C51 (EPROM/OTP). Der 80C51BH ist somit ein maskenprogrammierter ROM Baustein. Maskenprogrammiert bedeutet üblicherweise, in der Fabrik, während der Produktion werden bestimmte Verbindungen durch Metallmasken festgelegt und damit die Bits im ROM auf "1" oder "0" gelegt. Theoretisch ist es auch möglich zu diesem Zeitpunkt ein Sicherheitsbit zu setzten, welches das Auslesen verhindert. Gruß
Hallo, richtig. Es geht um den 80C51BH. Leider ist es in diesem Forum so, dass wenn man diesbezüglich eine Frage stellt, man immer von Antworten erschlagen wird in denen x-mal drin steht: Das geht eh nicht wegen der FUSEBITS, genau wie der vorherige... Das wusste ich von Anfang an. Deshalb habe ich auch geschrieben dass man halt probieren muss ob sie gesetzt sind oder nicht. Solche Beiträge halte ich für vollkommen wertlos weil sie auch nichts zum Thema beitragen. Umso mehr freut es mich dass hier ein paar Leute mal mit wirklichen Ideen eingebracht haben. Nur leider reichen meine Fähigkeiten (noch) nicht aus um das ganze um zu setzen. Deshalb noch mal die Frage (ausgehend davon, dass die Fusebits NICHT gesetzt sind): Dieses Programm von dem die Rede ist, was genau soll das machen und wie lese ich dann den Code aus? Schließe ich das externe EPROM mit dem Programm an und gleichzeitig eine EEPROM-Programmer zum Auslesen oder schließe ich zum Auslesen led’s an und gucke mir die einzelnen gesetzten oder nicht gesetzten bits an? Oder was könnte man sonst noch machen? Man bräuchte dann wohl auf jeden Fall einen E(E)PROM Progammer? Worauf sollte man bei so einem Gerät achten ( es sollte 8xc51 und 8xc52 und „normale“ EEPROMs auslesen bzw. vor allen beschreiben können)? Ließe sich sowas auch selber bauen? Was ist von den diversen Angeboten aus China zu halten? Ich stehe denen eher skeptisch gegenüber. Habe aber schon von Leuten gehört die damit richtig gute Erfahrungen gemacht haben und lasse mich gern eines Besseren belehren. Gruß Christian
moin moin, mach mal die Pinbelegung so wie auf S.14 in der Doku angegeben. Alle Adresspins legste auf 0. Nur wenn Du dann nach Enable etwas anderes als 0FFH an P0 auslesen kannst, macht es Sinn weiterzugehen.. Mit Gruß Pieter
@Christian: Vielleicht kann man den 8051, wie Pieter andeutet, mit einem EPROM-Brenner auslesen. Ich gehe aber nicht davon aus, da es sich ja um ein maskenprogrammierten Chip handelt. Deshalb zu meiner Idee: Du benötigst einen externen Speicher, den du an den 8051 anschließt. (als Programmspeicher) Dieser Speicher sollte größer sein als der interne ROM, damit die Adressierung einfacher ist. Der AT28C64 (EEPROM) sollte passen. Diesen kannst du ohne EPROM-Brenner, wie ein normales SRAM beschreiben. Du springst beim Resetvektor in dein Programm, das im Speicher hinter dem internen Speicher stehen. Also: $0000-$0FFF bei /EA=1 interner Speicher, bei /EA=0 externer Speicher $1000-$1FFF dein Programm im externen Speicher Nun muss wie folgt vorgegangen werden: 1) /EA auf 0,der 8051 startet dein Programm aus dem externen Speicher 2) Dein Programm muss /EA auf 1 setzen, wodurch der interne Speicher wieder eingeschaltet wird 3) Dein Programm kann nun mit movc den internen Speicher auslesen und z.B. auf der seriellen Schnittstelle ausgeben. 4) fertig. Gruß, SIGINT
Christian Kl schrieb: > Dieses Programm von dem die Rede ist, was genau soll das machen und wie > lese ich dann den Code aus? Schließe ich das externe EPROM mit dem > Programm an und gleichzeitig eine EEPROM-Programmer zum Auslesen oder > schließe ich zum Auslesen led’s an und gucke mir die einzelnen gesetzten > oder nicht gesetzten bits an? Das ist Quatsch. Hol Dir von Atmel das Datenblatt des AT89C51: http://www.atmel.com/dyn/resources/prod_documents/doc0265.pdf Da steht drin, wie Du den MC anschließen mußt und das Timing für "Read Code Data" (Seite 7). So kannst Du auch einen ungelockten 80C51BH auslesen. Die Programmierfunktionen gehen natürlich alle nicht. Am besten Du nimmst nen 2.MC, der die vielen Leitungen ansteuert. Mußt natürlich erst ein Programm dafür schreiben. Oder wie schon gesagt, gehst zu einem, der ein Programmiergerät hat (z.B. ein Galep). Peter
> Was ist von den diversen Angeboten aus >China zu halten? Ich stehe denen eher skeptisch gegenüber. Habe aber >schon von Leuten gehört die damit richtig gute Erfahrungen gemacht haben >und lasse mich gern eines Besseren belehren. Ich habe einen TOP2005 (China) und bin zufrieden. 80C51 auslesen geht sicher. Jetzt gibt es neuere, TOP2007.... für weniger als 100,-EUR.
Hallo, vielen Dank für eure Antworten. Habe gar nicht damit gerechnet. Es ist wirklich schön wie viele Leute sich hier mit konkreten Vorschlägen einbringen… Nachdem ich mir ein 6 MHz-Quarz besorgt habe, habe ich jetzt den Vorschlag von Pieter ausprobiert. Adressen auf low gesetzt und an P.0 mittels Transistoren LED’s angeschlossen. Leider gingen sie, nach dem ich /EA mit Hilfe eines Tasters auf 5V gesetzt habe, aus und blieben es auch. D.h. P.0 ist komplett auf low. Mit den anderen beiden Vorschlägen werde ich mich morgen näher befassen. Auf jeden Fall habe ich vieles gelernt über die 8051er und alleine das ist es schon wert es weiter zu versuchen. @Michael: Wie hast Du das dann mit dem Zoll geklärt und was kommt dann noch an Formalitäten auf einen zu? Gruß Christian
Hi Christian, ich fürchte es ist genau so wie Codecracker in der ersten Antwort schon geschrieben hat. Im Microcontrollerkochbuch von Andreas Roth steht, ich zitire:
1 | Während bei den Vertretern der 48iger Familie das interne ROM auslesbar war, ist das in der 51iger Familie aus Gründen des Softwareschutzes nicht mehr möglich. |
Beim 80C52 AH-Basic konnte man den kompletten Basicinterpreter der im ROM lag auslesen und über die serielle Schnittstelle ausgeben. Das lag aber daran, das man die internen Routinen vom Basicinterpreter selbst genützt hat. Gruß Gerd
>@Michael: >Wie hast Du das dann mit dem Zoll geklärt und was kommt dann noch an >Formalitäten auf einen zu? Vor einigen Jahren habe ich gesucht, und bei Eb.. Angebote auch aus DE gefunden. Eines für ca. 230,- EUR (Firma) und eines privat für 130,- EUR. Das billigere habe ich genommen, es steckte ein Chinese aus Köln dahinter. Heute würde ich aus China bestellen und abwarten ob sich der Zoll für die Umsatzsteuer (19%) meldet. Selbst dann ist es noch günstig. Ab 22 EUR Umsatzsteuer (Einfuhrsteuer) und ab ca. 130,- EUR Zollgebühren. Auf dem Finanzamt habe ich einmal gefragt, aber die hatten gar keine Ahnung!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.