Guten Morgen, mein erster Beitrag in diesem Forum, daher möchte ich mich kurz vorstellen. Ich bin kfm. Angestellter und lese seit einigen Monaten in diversen Internetforen. Dieses hier gefällt mir am besten und hat mir viel Hilfestellung zu meinem geplanten Projekt gegeben. Leider gibt es da einen Punkt an dem ich einfach nicht weiterkomme. Ich möchte ein 27C256 Eprom in einer Zielschaltung mit einem SRAM ersetzen. Soweit recht einfach... Die Stromversorgung erfolgt über den Epromsockel (da liegt ausreichend Strom an). Per Bluetooth soll das SRAM neu beschrieben werden können, jedoch muss ich dazu die Busleitung für diesen Augenblick vom Zielsystem trennen, weil es sonst zu Konflikten am Adress und Datenbuss kommen wird. Meine Frage, gibt es einen IC, der die Busleitung per Signal trennen kann? Ein Latch wird mir dabei wohl nicht helfen, weil die doch getaktet werden müssen um Signale weiterzureichen. Der Zugriffstakt ist mir nicht bekannt oder besser gesagt, weiß ich nicht wo ich den abgreifen müsste. Zweiter Plan wäre: Das Zielsystem solange im RESET zu halten, bis das SRAM beschrieben ist. Ich denke aber, daß dies nicht über den Epromsockel des Zielsystems möglich ist, oder? Für positive Antworten möchte ich mich vorab bedanken, Martin
Hallo 74hc245 ist dafür geeignet. Du wirst aber um das neue Program starten zu können einen Reset machen müssen.
Hallo, vielen Dank. Werde mir mal das Datenblatt genau anschauen... Im Zielsystem ist ein 68HC11 verbaut der das eigentliche Programm vom Eprom holt. Meine Annahme ist, daß das Zielsystem solange versucht vom Eprom zu lesen, bis es eine Antwort bekommt. Ist aber nur eine Vermutung. Zur Not werde ich wohl einen Draht zum /RESET des Zielsystems löten müssen, würde es aber gerne vermeiden.... Danke, Martin
Hm, interessante Aufgabenstellung. Scheint mir nicht unmöglich, aber ein wenig Fummelarbeit ist das schon.... da hab ich erst mal ein paar grundsätzliche Designfragen allgemeiner Art: Was ist "das Zielsystem" (Prozesor, Funktion etc)? Wofür wird das EPROM in der orginal Schaltung genutzt? Es wird ja irgendeine Funktion und Inhalt haben, welche ist das (vermutlich irgendein code) ? Kann denn das Zielsystem "solange im Reset" bleiben wie der Schreibvorgang dauert, oder gibt das irgendwelche Nebeneffekte? Einen Reset Anschluß hast du an dem Eprom nicht, den mußt du irgendwo anders an der Schaltung abgreifen. HAst du dazu die Möglichkeit, irgendwo einen Draht anzulöten oder anzuklemmen (z.B. weil es bereits einen reset-Taster in der orginal Schaltung gibt? Vielleicht hat die orginal Schaltung ja auch einen Watchdog timer, der das System nach einer gewissen Totzeit selbsständig einen reset verpasst, den könnte man ggf. dazu nutzen / zweckentfremden Wie was wird das SRAM gefüttert? Übertragungsstrecke via BT, das sagtest du, aber wer sendet da was, und wer empfängt was? Gibt es derartige HArdware- und Software Komponenten schon oder gehören die auch zur Aufgabenstellung? Muß der Inhalt des SRAM gepuffert werden (er verliert ja sonst direkt seinen Inhalt nach Spannungs-Abklemmung!!!) Wieso muß es denn überhaupt ein SRAM sein? Wieso kann es denn nicht ein EEPROM sein? Wenn da nur code drauf ist, würde ein byteweiser lesender Zugriff doch gar nicht notwendig sein, sondern eher ein komplett löschen/neu beschreiben "im Block", oder sehe ich das falsch? Wäre denn die folgende Konstruktion für dich verwendbar(er) ? Eine Adapterplatine wird anstelle des ursprünglichen EPROM eingesetzt, welche folgenden Aufbau hat: "doppelsockel" Orginal Eprom und zusätzlich ein EEPROM "irgendeinen" u-Controller drauf mit BT-Schnittstelle Adress- und Datenleitung mit einem 245 umschalten ist wahrscheinlich gar nicht notwendig, möglicherweise reichen bereits entsprechende Chip-Select-Eingänge oder Output-enable-Eingänge der betroffenen Speicherbausteine. "irgendein" Zugang zu einer Reset-Leitung, welche auch zu der Adapterplatine gelegt wird oder dort erreichbear ist (siehe Hinweis mit dem watchdog). "Sendeprogramm" auf einem Win-PC (vermute ich mal) "Empfangsprogramm" im Controller Da kann ich mir dann verschiedene Steuerkommandos vorstellen auf dieser Strecke, z.B. :: übertrage <Inhalt neu> zum Adapter :: erzeuge Reset auf Adapter (ohne weitere Funktion) :: schalte um auf orginal Speicher (incl. reset) :: schalte um auf neu Speicher (incl. reset) :: ermittle den aktuell aktiven Speicher und übersende diese Info zum PC :: ermittle Versionsnummer/prüfsumme/was weiß ich des neuen Speichers und übersende diese Info zum PC Du brauchst mit diesem "Design" nicht das ganze WSystem still zu legen, sondern überträgst/lässt "brennen", und zum Zeitpunkt x erfolgt "schmerzfrei" der Umschaltvorgang zwischen den Speichermodulen
Hallo, ich versuche mal ein paar Details aufzuführen. Das Zielsystem hat einen 68HC11 Prozessor der sein Programmcode aus dem Eprom ausliest. Schrittweise sollte die Schaltung folgendes tun: 1. Zielsystem im Reset halten 2. Daten des Eproms (ist dann ein 29C256) ins SRAM kopieren 3. Reset aufheben 4. Gerät kann normale funktion wieder aufnehmen. 5. Zielsystem in Reset schalten. 6. per Bluetooth neuen Daten senden (Ich möchte zu Übungszwecken keinen PC, sondern ein kleines Handgerät mit AVR + LCD + BT bauen) 7. Daten in das Eprom schreiben. 8. -> 2. Das SRAM ist bei dieser Anwendung eigentlich nicht notwendig, aber wird vermutlich für spätere Zwecke noch sinnvoll sein. Gruß, Martin
Kann leider nicht editieren... hab noch vergessen zu schreiben: das Zielsystem sollte keine Nebeneffekte haben, wenn es im Reset ist. chip-select hat das 27C256 und auch das 29c256 nicht. Falls das aber mit /oe möglich sein sollte, um so besser... Gruß, Martin
HI >chip-select hat das 27C256 und auch das 29c256 nicht. >Falls das aber mit /oe möglich sein sollte, um so besser... Bei EPROMs nennt sich das CE Chip Enable. MfG Spess
27C256 wird durch 29C256 plus SRAM ersetzt, oder wie? Also eine "reprogrammierbare" Lösung, oder wie muß man das verstehen? Aber warum mußt du dann den Inhalt des Eprom oder Flash Speichers ins SRAM kopieren? Was macht es da? IN deinem obigen Ablauf schaltest du nicht aufs SRAM um ... Das klingt irgendwi wie "Motortuning-Steuergerät frisieren" .... ist es daswas du da bauen möchtest?
Also erstmal, der geneigten Fachwelt leuchtet noch nicht so recht ein was der Grund ist diesen aeh...ungewohnlichen Aufwand zu treiben. :-) Zweitens das was du suchst war so vor 10-20Jahrem mal aktuell und nannte sich Eprom-emulator. Das war eine Schaltung welche man anstelle eines Eprom in den Sockel gesteckt hat und wo man die Daten vom PC aus ueber eine (wie auch immer geartete!) serielle Schnittstelle reingeschoben hat. Mit der Erfindung des Flashroms ist das aber ausgestorben. Wenn du also irgendwas neues baust so klopp deine IDee in die Tonne und nimm einen modernen Prozessor mit Flash. Wenn es um die Wiederbelebung von Altsilizium im Rahmen kultureller Werterhaltung geht, dann besorg dir halt so einen alten Emulator oder nimm wenigstens so eine Schaltung als Vorlage. Ich meine mich zum Beispiel ganz schwach zu erinnern die Elektor haette dazu mal eine Bauanleitung gehabt. (Hiess Pieps? Peps? Pups? oder so aehnlich.) Hey...gibbet sogar im Netz. Dabei haette ich das hoechsten auf Tabellenpapier mit Stachelradloechern am Rand erwartet: http://www.prof80.de/peps.html http://www.engelmann-schrader.de/peps.html Ups..war auch garnicht Elektor sondern c't. Aber die elektor hatte auch mal soetwas. Aber wer weiss wie das hiess... Olaf
Martin S. schrieb: > Im Zielsystem ist ein 68HC11 verbaut der das eigentliche Programm vom > Eprom holt. Meine Annahme ist, daß das Zielsystem solange versucht vom > Eprom zu lesen, bis es eine Antwort bekommt. Ist aber nur eine > Vermutung. Die falsch ist. Die CPU ließt immer ein, ob da Mist anliegt, ist ihr wurscht. Ein Lösung wäre, wärend der Programmierung einen NOP-Befehl auszugeben. Dann werden zumindest nicht irgendwelche Ports auf verbotene Pegel gesetzt und die Hardware zerstört. Die Resetleitung zu nehmen, könnte die Hardware drastisch vereinfachen. Mußt mal im Datenblatt Deiner CPU nachschauen, ob die Pins während Reset hochohmig sind. Dann kannst Du die CPU immer am Flash lassen und brauchst kein Multiplexer-Grab. Die Programmier-CPU kann immer am Flash bleiben, sie kann sich ja hochohmig schalten, bevor sie den Reset Deiner Ziel-CPU ausschaltet. Ansonsten such mal nach "EPROM Emulator", da gibts massig Schaltungen. Und man sollte es kaum glauben, es gibt sogar immer noch Anbieter von fertigen Emulatoren. Die kosten allerdings einiges, da keine Massenware (braucht ja fast keiner mehr). Wenn Deine CPU gesockelt ist, wäre das allereinfachste, sie gegen einen heutigen Typ mit internem Flash und Bootloader zu tauschen. Peter
Hallo, danke für die zahlreichen Beiträge... Grundsätzlich ist die Schaltung ein Epromemulator, jedoch möchte ich mit gewonnen Erfahrungen, Erkenntnissen usw. die Schaltung später erweitern, deshalb werde ich das SRAM brauchen. Vielleicht reicht es aber auch aus einfach den 27C durch ein 29C oder sonst was zu ersetzen und /CE zu nutzen. Mal sehen... Der 68HC11 schaltet im Reset, meinen Recherchen nach, nicht in den hochohmigen Zustand und dewswegen möchte ich den Bus in diesem Schritt trennen. Dazu wird das 74HC245 sehr nützlich sein. Den AVR kann ich in diesem Moment einfach an den betreffenden PINS als Eingang schalten. Die genau Bezeichnung der CPU ist 68HC11HG. Dazu habe ich noch kein Datenblatt finden können... deswegen gehe ich vom "worst-case" aus. Die Idee NOP's zu senden finde ich sehr gut und sollte sich auch einfach realisieren lassen. Die Epromemulatoren von Elektor, c't und auch der 4Flash habe ich mir genau angeschaut, aber scheinen für mein Vorhaben noch nicht ganz ausreichend zu sein, bzw. noch Aufwendiger in der Umsetzung als meine Idee.... Der 74HC245 scheint zunächst erstmal die erste Wahl zu sein. An dieser Stelle erst einmal vielen Dank für Eure Informationen! Ich werde jetzt erst mal eine neue Schaltung zeichnen und vielleicht hat ja noch jemand später Lust einen Blick darauf zu werfen (auch wenn es bei der Zielhardware um ein Steuergerät geht)? Gruß, Martin
Hallo Martin, wahrscheinlich liessen sich alle deine Wünsche und noch einige mehr erfüllen, wenn du einen "In Circuit Emulator" für 68hc11 auftreibst (gabs z.B. von Lauterbach). Mit meinem für Z80 (von Hitex) konnte ich Emulatorspeicher an beliebigen Adressen einblenden und vom PC (DOS!) aus schreiben und lesen, dazu Speicherinhalte überwachen und Programmablauf und Programm in Einzelschritten ausführen usw. usw. Übrigens läuft er durchaus noch mit DOSBOX. Die Dinger haben zwar soviel gekostet wie ein schönes Auto, aber das kann dir ja egal sein, wenn du sowas bei ebay für ein paar Euro findest. Gruss Reinhard
Martin S. schrieb: > Der 68HC11 schaltet im Reset, meinen Recherchen nach, nicht in den > hochohmigen Zustand Sicher? Dem erstbesten Datasheet eines 68HC11 nach zu schliessen könnte es von den MODx Pins beim Reset abhängen, ob die Anschlüsse als Portpins (Inputs) oder als Adress/Datenleitungen konfiguriert sind.
nochmal zu meinem Verständnis: der 27er ist doch ein eprom mit CE. Er geht doch hochohmig wenn er "disabled" ist, oder nicht? und die vorgeschlagenen 29er oder SRAM typen, gibts da kein OE oder CE oder CS?? Ich unterstelle mal, daß die Treiberleistung des vorhandenen 68HC11HG ausreicht für beide Speicherhbausteine, wenn deise parallel angeklemmt sind und nur anhand der CS CE ORE Leitungen selektiert werden. Aber wozu braucht es denn dann noch ein Umschalten der Adress- und/oder Datenleitungen? Das bringt doch nur zusätzliche nicht benötigte Bauteile sowie unnötige Latenzzeit in die Leitungen und ins Timing rein, oder sehe ich das falsch? Das mit den NOP während der Ladezeit scheint mir auch etwas ... aufwendig. RAM oder Flash vollpumpen, und dann - schwups - auf diesen vollgepumpten Speicher umschalten scheint mir wesentlich einfacher ....
Hallo, ich vermute das Problem darin, daß die CPU sofort nach dem Code aus dem Eprom fragt und wie hier auch geschrieben wurde eine Adresse anlegen wird und kurz darauf auf Daten wartet. Spricht das denn nicht dagegen gleichzeitig das SRAM/Eprom über den Datenbus bzw. den Adressbus zu füllen? Reicht da ein /CE Signal um das zu unterdrücken? Durch das beschreiben des SRAMS schicke ich doch auch Daten über den Datenbus und die würde der 68HC11 falsch interpretieren und wenns ganz schlimm kommt die Zielhardware beschädigen. Anders,wenn ich die 74HC245 dazwischen schalte und in den hochohmigen Zusatnd bringe. Dann sollte die Zielhardware kein Eprom finden und würde damit keinen Schaden anrichten können. Andere Überlegung: Es gibt beim 68hc11 einen Reset-Vektor. den ich mit NOP's vorgaukeln könnte. Ist das SRAM voll einfach einen Reset auslösen. Einzige mir bekannte Möglichkeit das zu umgehen wäre den Adress- und Datenbus über den AVR zu schleusen. Aber dann müsste das ganze irgendwie synchronisiert funktionieren... Vielleicht mit einem externen Interrupt?! Gruß, Martin
Hallo du mußt die Systeme trennen wenn du das RAM beschreibst. Fall1: RAM neu beschreiben, heißt RAM ist nur für das ladende System verfügbar. Fall2: Programm ausführen, heißt Ram ist nur für Zielsystem verfügbar. Wenn du auch noch das Eprom im System hast mußt du dieses auch trennen, was mit /OE geht.
Hi Solange du nicht mal weisst, welchen 68HC11 du hast und das Memorymap kennst, ist diese Diskussion ziemlich sinnfrei. MfG Spess
Hallo, ich habe mir das Datenblatt des 27C256 noch mal genauer angeschaut und dabei ist mir aufgefallen, daß der /oe Pin eine fallende und steigende Flanke haben sollte, wenn Daten ausgegeben werden sollen. Haltet Ihr es für möglich, daß ich bei einer fallenden Flanke von /oe eventuell mit dem INT01 Interrupt die anliegende Adresse mit dem AVR auslese. Die Daten werden dann aus dem internen Flash geholt und über ein Latch an die Zielhardware übergeben? Das scheint mir eine ganz gute Lösung zu sein um die Trennung der Bussysteme zu gewährleisten und es ist noch nicht mal mehr ein externer Speicher notwendig. Theoretisch halte ich das für machbar, allerdings muss das alles dann doch sehr schnell gehen. Hab ich hier einen Denkfehler? Gruß, Martin
Hallo /OE ist ein statischer Eingang der den Ausgang von Tristate auf Aktiv schaltet. Solange /CE dauernd aktiv ist werden die Adressen intern vom 27c256 ausgewertet und bei /OE auf den Ausgang geschaltet.
Hallo, entschuldigt meine blöden Fragen, aber ich versuche das alles richtig zu verstehen. Ich hab mal einen Auszug aus dem Datenblatt angehängt. verstehe ich das richtig, daß bei fallender /CE Flanke eine gültige Adresse anliegt und mir dann etwas weniger als 90ns bleiben um die Daten auszugeben? Oder bleibt /ce immer aktiv? Gruß, Martin
Hallo Martin S. suche mal nach einem EPORM-Simulator ... ELV hatte mal sowas ... entspricht genau deinen Anforderungen, nur das RAM wurde über eine LPT beschrieben, kann aber entsprechend angepasst werden z.B. LPT-USB-Adapter. Gruss Ralf
Hallo, bei elv gibt es sowas im Programm, allerdings ohne Bild, ohne Alles... Hilft mir leider nicht weiter. Wenn ich eure Hilfe überstrapazieren sollte, bitte ich um Entschuldigung. Die Sache ist, daß eben mein Emulator auch ohne Computer lauffähig sein soll. Einmal verbauen und dann nur noch über Bluetooth die gewünschten Änderungen vornehmen. Bei anderen Emulatoren, deren Schaltung ich auch kenne, bin ich an der MCU des Zielsystems gebunden, usw... Wenn ich einen Takt am Epromsockel abgreifen könnte, wäre das für mich die Lösung :-) Dann könnte ich den AVR dazwischen klemmen und die Daten wie gewünscht an das Zielsystem ausgeben. Vielleicht kann mir jemand sagen, ob ich den Auszug aus dem Datenblatt komplett falsch verstanden habe, oder ich über /ce und/oder /oe vielleicht weiter komme.... Vielen Dank, Martin
Martin S. schrieb: > Bei anderen Emulatoren, deren Schaltung ich auch kenne, bin ich an der > MCU > des Zielsystems gebunden, usw... Hallo Martin, ich fürchte, du hast noch nicht einmal die Grundlagen wie Speicher, Prozessor usw. auch nur annähernd verstanden. Der Zweck eines Eprom-Simulators war und ist ja gerade die Tatsache, dass man ihn mit beliebigen CPUs verwenden kann. Gruss Reinhard
@ Martin.s das Eprom macht erstmal nix. Die Steuersignale kommen von der restlichen Schaltung. Durch /CE wird das Eprom aktiviert. Sonst macht es nix. Wird /CE aktiv werden im Eprom die Adressen ausgewertet und die Daten an den Ausgangspuffer gelegt. Mit /OE werden die Daten dann auf den Datenbus geschaltet.
@karadur: hab ich es jetzt richtig verstanden, daß /oe getaktet wird und /ce immer aktiv ist? Oder ist /oe auch immer aktiv? @Reinhard Kern: Ja, ich bin völliger Beginner und muß noch sehr viel lernen. Speicher, CPU, etc kann ich auseinanderhalten, aber ein externes Eprom hab ich noch nie ausgelesen... werde wohl daran scheitern... Gruß, Martin
Hallo das hängt von der Anwendung an. Ich verwende z.B. ein Eprom um die Daten für eine IR-Autoschliessanlage zu senden. Die Adressen werden von einem Zähler generiert und /CE und /OE sind fest auf GND. Wie ich schon schrieb: Ein Eprom ist ein Speicher dessen Daten durch den Adressbus und /CE ausgewählt werden. /OE aktiviert nur den Ausgang.
Hallo, danke für die Antwort! Für mich sah es im Datenblatt des 27C256 anders aus, deswegen auch die Frage. Von einem Amerikaner, der eine ähnliche, aber viel komplexer Schaltung gebaut hat, habe ich eben erfahren, daß wenn der Datenbus "gefloatet" wird ein Reset im Zielsystem erzeugt wird und der Puffer solange beschrieben werden kann. Wenn ich jetzt verstehen würde was floaten eines Busses ist, wäre ich schon mit meiner Planung fast fertig... Mal sehen, ob er es mir mit einfacheren Wörtern beschreiben kann. Das richtige Datenblatt hat er mir auch zur Verfügung gestellt. Vielleicht hilft das auch weiter. Gruß, Martin P.S. falls mir jemand sagen kann, was floaten bedeutet... Ich lerne gerne dazu.
>Von einem Amerikaner, der eine ähnliche, aber viel komplexer Schaltung >gebaut hat, habe ich eben erfahren, daß wenn der Datenbus "gefloatet" >wird ein Reset im Zielsystem erzeugt wird und der Puffer solange >beschrieben werden kann. Was für ein Schwachsinn;) Wenn ein Reset erzeugt wird, floatet in der Regel der Daten und Adressbus. Man kann aber nicht Daten und Adressbus zum floaten bringen und damit einen Reset auslösen. Naja, vieleicht schon, aber eher ungewollt;)
Hi, hab ich da schon wieder etwas falsch verstanden? To program my EERPOM with new maps, my board holds the HC11 in reset (which floats the HC11 data bus, but not the HC11 EPROM address bus and EPROM control signals) during the entire programming cycle. Since I only burn new maps when the ECU gets initially turned on with the ignition key, it is not a problem to wait another second or two to burn the flash before the ARM allows the HC11 to run. With this approach, all I needed was a bus buffer to float the HC11 address bus, and EPROM control signals. I used an 18-bit bus buffer just to get everything buffered in one ASIC. Gruß, Martin
Hi! Dein HC11 sollte RS232/SPI und Ram onbord haben. Warum lässt du ihn das Laden des Ram's nicht selber erledigen -> Bootloader. Man kann auch EProm und Ram gleichzeitig am Bus haben. Reset springt mach $FFFF wenn normal Single Chip oder normal Expand. In Special Bootstrap wird nach $BFFF gesprungen und der Bootloader aktiviert, welcher im Stande ist in und aus dem internen Ram zu arbeiten. Du kannst den Bootloader auch ins externe EEprom brennen, dann kannste machen was du willst. Ich würde jedenfalls das Ram nicht extern beschreiben und wenn, dann nur wenn der Prozi etwas davon weiss und die Finger davon lässt. Einen HC11HG kenne ich übrigens nicht.. irgendeine Sonderanfertigung? Das Memorymap wäre wirklich sehr aufschlussreich. Na dann, viel Erfolg, Uwe
Hallo Uwe, ich habe mich bei der Bezeichnung der CPU vertan. Die richtige Bezeichnung lautet MC68HC11G5. Im Anhang findest du ein Eprom-Image. Gruß, Martin
>Die Sache ist, daß eben mein Emulator auch ohne Computer lauffähig >sein soll. Einmal verbauen und dann nur noch über Bluetooth die >gewünschten Änderungen vornehmen. MEGAROFL bei deinen Kenntnissen;)
Hi >Die richtige Bezeichnung lautet MC68HC11G5. Entweder uralt oder auch falsch. >MEGAROFL bei deinen Kenntnissen;) Ein wahres Wort. MfG Spess
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.