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.