Forum: Mikrocontroller und Digitale Elektronik AT89LP51ED2 (8051) Problem beim erstellen der Keil FlashMon Hex-Datei


von Dominique T. (dome29)


Lesenswert?

Hallo alle miteinander,

ich hoffe ihr könnt mir helfen:
ich habe hier einen Atmel AT89LP51ED2 und versuche über den Keil uVision 
5 Debugger mithilfe des Monitor-51 Drivers eine Verbindung herzustellen, 
welche auch funktioniert.
Lediglich das Programm kann ich nicht starten mit der Fehlermeldung 
"MONITOR ERROR 22: NO CODE MEMORY AT ADDRESS 07BFH".
Nun denke ich, dass ich die Monitor.Hex Datei falsch angepasst habe.
Könnte mir dabei jemand behilflich sein?
Ich schaffe es einfach nicht mir aus dem Datenblatt die richtigen 
Informationen zusammenzustellen.

Weitere Daten:
Bauform: PDIP-40
Takt: 20Mhz
Hex Datei mit Atmel Flip hochgeladen via RS232 (allerdings den 
AT89C51ED2 als Vorbild genommen, da der AT89LP51ED2 nicht gelistet 
ist... Eventuell liegt hier auch eine Fehlerquelle? Falls ja, mit 
welcher Software ladet ihr die Hex Dateien auf den AT89LP51ED2?)

Folgende Angaben werden benötigt: (in Klammern meine, wo ich denke, dass 
diese richtig sind)
XDATA_START:
CODE_START:
INT_ADR_OFF: (0000H)
DEF_PC_VAL: (0000H)
SERIAL
BAUDRATE
X_UART_CLK
EX_UART_ADR
CPU_CLOCK
CPU_X2 (20000000)
_AO (0)
_EXTRAM (0)
_XRS (5)
_M0
FLASH_PAGESIZE (128)
FLASH_MAXBYTES (65536)

Vielen Dank schon mal.

von Joerg L. (Firma: 100nF 0603 X7R) (joergl)


Lesenswert?

Welches Board?
Mit Flip lädt man ins Flash des Controllers. Dort dann üblicherweise ab 
Adresse 0.
Der Keil-Monitor will meines Verständnisses nach aber ins Ram des Boards 
laden, das er als Programmspeicher benutzt. An welcher Adresse liegt das 
Ram bei diesem Board? Diese Ram-Adresse dann vorher im Linker eingeben.

von Dominique T. (dome29)


Lesenswert?

Vielen Dank erst mal für die schnelle Antwort.
Es ist kein Board, sondern nur der Chip und die benötigten Komponenten.
Später soll mit dem Chip mal ein Arduino Uno nur mit 8051 Architektur 
entstehen.

Bezüglich dem Monitor: es kann in den RAM geladen werden, aber muss 
nicht. Entsprechendes Zitat von der Keil Homepage:
,, For targets using von Neuman code memory, FlashMON51 works like the 
MON51 monitor. Program code is downloaded into RAM and breakpoints are 
set by replacing instructions in RAM code space.

For targets using Flash memory, FlashMon51 downloads user programs to 
on-chip In-Application Programmable (IAP) Flash memory and sets/clears 
software breakpoints using the same IAP calls for debugging.''

Vielleicht hat jemand schon mal eine monitor.hex Datei für den 
at89lp51ed2 erstellt und kann mir diese zur Verfügung stellen?

von Joerg L. (Firma: 100nF 0603 X7R) (joergl)


Lesenswert?

Wenn es kein Board mit "von Neumann" EXTERNEM RAM ist, dann kannst Du 
den Monitor vergessen. Das interne RAM des 8051 ist nie als "von 
Neumann" verschaltet.
Nimm Deine Hex-Datei, und lade sie mit Flip hoch. Fertig. Geht nicht 
anderst.
Die Startadresse 0 ist für Flip richtig.
Wenn es beim ED2 auch ein BLJB gibt, dieses beachten. Ich habe hier nur 
AC2/AC3, dort ist es wichtig. Die CPU startet nicht bei 0, wenn das Bit 
falsch gesetzt ist.

von Dominique T. (dome29)


Lesenswert?

Dem muss ich widersprechen.
 In dem Zitat von der Keil Homepage steht ausdrücklich, dass man den 
Flash Speicher vom Chip nutzen kann... Vorausgesetzt ist dort nur IAP.
Vielleicht noch ein Zitat damit es noch deutlicher wird:,, Typically, 
debugging with a target monitor requires that target systems include von 
Neumann memory for downloading software and for setting software 
breakpoints. FlashMon51 removes that requirement and uses the on-chip 
Flash found on many 8051-based devices.`` (wichtig ist der letzte Satz)

Kurz es ist möglich. Ich kann auch die debugging Session starten... 
Lediglich spreche ich nicht die entsprechenden Adressen an.

Danke aber für den Tipp mit dem BLJB..werde ich mir mal anschauen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Dominique T. schrieb:
> Hex Datei mit Atmel Flip hochgeladen via RS232 (allerdings den
> AT89C51ED2 als Vorbild genommen, da der AT89LP51ED2 nicht gelistet
> ist...

Das ist korrekt, ich habe auch kein PC-Tool für den LP51 gefunden.

Dominique T. schrieb:
> For targets using Flash memory, FlashMon51 downloads user programs to
> on-chip In-Application Programmable (IAP) Flash memory and sets/clears
> software breakpoints using the same IAP calls for debugging.''

Klingt möglich, aber auch sehr langsam. Es lassen sich ja immer nur 
ganze Pages löschen und beschreiben.
Für die Settings im Monitor und im Flip (SBV usw.) mal bei Keil 
nachfragen.

von Joerg L. (Firma: 100nF 0603 X7R) (joergl)


Lesenswert?

Dominique T. schrieb:
>  In dem Zitat von der Keil Homepage steht ausdrücklich, dass man den
> Flash Speicher vom Chip nutzen kann...

Aha, dann muß aber zuerst der Monitor irgendwie ins Flash des Chips 
reinkommen. Vmtl mit Flip. Und danach kann man mit dem Monitor das 
Hex-File ins Flash nachladen. Dazu muß man aber die freie Flash-Adresse 
nach Ende des Monitors kennen, und diese dem Linker mitteilen, damit das 
Hex nicht den Monitor zu überschriben versucht.
Hier kann ich Dir nicht mehr helfen, ich kenne nur Boards mit dem 
Monitor im Rom und das RAM mit "von Neumann". Da Du aber erfolgreich und 
zielsicher aus der Keil-Doku zitierst, wirst Du dieses kleine Detail 
bestimmt sehr schnell finden.

von Dominique T. (dome29)


Lesenswert?

Joerg L. schrieb:
>
> Aha, dann muß aber zuerst der Monitor irgendwie ins Flash des Chips
> reinkommen. Vmtl mit Flip. Und danach kann man mit dem Monitor das
> Hex-File ins Flash nachladen. Dazu muß man aber die freie Flash-Adresse
> nach Ende des Monitors kennen, und diese dem Linker mitteilen, damit das
> Hex nicht den Monitor zu überschriben versucht.

Das würde ein Phänomen erklären, welches ich hatte: nach jedem erneuten 
Starten des Debuggers, schienen Teile von der Monitor Datei 
überschrieben zu sein. Wunderbar, das hilft sehr!


Joerg L. schrieb im Beitrag #5545859
> Hier kann ich Dir nicht mehr helfen, ich kenne nur Boards mit dem
> Monitor im Rom und das RAM mit "von Neumann". Da Du aber erfolgreich und
> zielsicher aus der Keil-Doku zitierst, wirst Du dieses kleine Detail
> bestimmt sehr schnell finden.

Leider habe ich gefühlt alles von Keil zum Thema gelesen. Aber eventuell 
ist es gar nicht wichtig in der monitor Datei anzugeben welchen Bereich 
man für diese hex benutzt, sondern lediglich im Linker (hoffentlich 
gibt's da eine Option in keil) einträgt, welche er nicht nutzen darf... 
Muss ich morgen gleich mal ausprobieren!


Ansonsten bleibt mir nur noch keil zu kontaktieren.

: Bearbeitet durch User
von Dominique T. (dome29)


Lesenswert?

Hallo noch einmal.
Der Stand hat sich nun etwas verändert:
Ich habe es geschafft eine lauffähige Monitor.hex zu erstellen und diese 
auch in die richtigen Bereiche abzuspeichern  und auszuführen. 
Dementsprechend kann ich einmalig ein Programm via debugger hochladen. 
Lediglich bekomme ich es nicht hin, dem Linker via BL51 mitzuteilen, 
dass bestimmte Bereiche für ihn verboten sind und dementsprechend nicht 
beschrieben werden dürfen... Weiß jemand eventuell wie man da genau 
vorgeht? Ich mach bestimmt etwas falsch.

Wenn Interesse besteht kann ich natürlich euch auch verraten, wie man 
FlashMon51 auf einem 8051 Atmel ausführen kann.

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
Noch kein Account? Hier anmelden.