Hallo, habe folgendes Problem und hoffe, dass ich hier kompetente Tipps bekomme: Ich habe ein neues 80C517A-Entwicklungsboard mit 32kB externem RAM und dem Keil-Monitor 10FF0 auf einem EPROM. Das Ding muss ich laut Beschreibung im Lieferzustand in Harvard-Architektur betreiben (nach Durchtrennen einer Leiterbahn und Einlöten eines Jumpers sowie eines 2. ROM-Bausteins ließe es sich auch auf v.-Neumann-Adressierung umstellen...). Die Adressierung des externen Speichers ist dabei laut Datenblatt folgende: ROM0 (Monitor-EPROM/Code): 0x0000-0x7FFF RAM1 (XData): 0x8000-0xFFFF Speicheraufteilung im Keil-Compiler: Code: Start 0x8000, Size 0x2000 XData: Start 0xA000, Size 0x8000 Das RAM dient als Speicher für Code & XData, d.h. der Keil-Monitor lädt das Programm aus der Entwicklungsumgebung komplett ins RAM, so dass ein Debuggen über serielle Schnittstelle am PC möglich ist. Das ist ja alles ganz schön, funktioniert auch soweit (serielle Schnittstellen, I/O-Ports etc.) - bis auf die Interrupts! Deren Vektoren liegen nämlich im Speicherbereich, der vom EPROM belegt ist, der beschreibbare Code-Bereich geht aber erst ab 0x8000 los. Eine andere Speicherkonfiguration funktioniert nicht! Beim kompilieren einer fehlerfreien! Serviceroutine (hier für Interrupt 2) erscheint nun: *** WARNING L5: CODE SPACE MEMORY OVERLAP FROM: 000BH TO: 7FFFH Beim Übertragen des entsprechenden Programms meldet der Keil-Monitor: MONITOR ERROR 22: NO CODE MEMORY AT ADDRESS 000DH Meine Frage an die Experten ist nun: gibt es eine Möglichkeit, wie ich auch ohne zusätzliche Hardware wie nichtflüchtigen Speicher auf die Interrupt-Requestadressen zugreifen könnte (ich programmiere in C mit Keil µVision3) oder habe ich die bloss die Speichereinstellungen in µVisions "Options for Target" versemmelt? Hoffe, das war einigermassen verständlich... 1000 Dank für eure Bemühungen, bin für jeden Tipp dankbar!
Du mußt dem Compiler nur sagen, daß die Interruptvektoren umgeleitet sind: c51 INTVECTOR(0x8000) ... Aber mal im Ernst, wer benutzt denn noch solche Dinosaurier-Boards aus den 8051-Urzeiten ? Das wurde damals in den 80-ern entwickelt, d.h. "neu" kann man dazu nicht mehr sagen. Heutzutage gibts doch reichlich Flash-8051-er mit Bootloader, also alles in einem Chip. Ich hab jedenfalls keine Lust mehr, meine Layoutzeit damit zu verschwenden, bei jedem neuen Projekt externes Latch+Flash+SRAM ranzupappen, ganz abgesehen von den damit verlorenen 18 IO-Ports. Nen MAX202 ranpappen und gut is. Peter
Super, das war's! Danke für die schnelle Hilfe! <quote>Aber mal im Ernst, wer benutzt denn noch solche Dinosaurier-Boards aus den 8051-Urzeiten ?</quote> g ich... Zum Experimentieren & Erlernen der Grundlagen (bin kein Profi) reicht das völlig aus. Außerdem war's billig und fertig aufgebaut!
Ja, zum lernen ist es o.k. Bloß zum Bau von eigenen Geräten sollte man was einfacheres, moderneres nehmen. Peter
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.