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