AT89C51RD2/ED2: Adresse des Startprogrammes?

Gast #271376
Lesenswert?
• ▲
▼
Hi,

wenn ich ein Programm in den AT89C51RD2 oder in den AT89C51RED2 laden
will, muss ich eine Startadresse angeben (ORG 0000h). Bei manchen µC
befindet sich bei 0000h ein fester ROM, den man nicht beschreiben kann.
Erst ab z. B. 4000h fängt der Flash EEPROM an, welchen man beschreiben
kann kann. Bei manchen Programmen ist es sogar so, dass man dem
Prozessor vorher manuell noch ein einen Befehl geben muss, damit er das
Programm ab einer bestimmten Adresse abarbeitet (z. B. go 4100h).

Weiß jemand, wo ich mein Programm beim AT89C51RD2/ED2 hinschreiben
muss, damit es z. B. gleich nach dem Einschalten ausgeführt wird? Wenn
es die Adresse 0000h ist, wo steckt dann der ISP Bootloader, der die
ganzen Befehle für das Beschreiben des Speichers annimmt?
Gast #271377
Lesenswert?
• ▲
▼
Hmm..

Nun JA die sache ist eigentliche einfach, nach der Startadresse fangen
ja bekantlich schon die Interrupt Einsprungadressen  an z.B. Timer 0
etc...

Ich mach es folgendermaßen:

org     0000h
        ljmp START

org     4000h    ; kann auch 1000h sein oder 2000h

START:
        MOV ...

         .
         .
         .
       sjmp $

END

Also von 00h - 07Fh 128 Bytes Unteres interne RAM und
von 80h - 0FFh   128 Bytes Oberes interne RAM dort sollte dein Programm
aufjedenfall nicht beginnen.

Ab 100h kannste schon dein Programm ablegen und Starten.

Der Bootloader von Atmel liegt in einem geschüzten Bereich von 2k

Ich benutze zum übertragen Flip von Atmel

MfG Klaus
#271378
Lesenswert?
• ▲
▼
"Also von 00h - 07Fh 128 Bytes Unteres interne RAM und
von 80h - 0FFh   128 Bytes Oberes interne RAM dort sollte dein
Programm
aufjedenfall nicht beginnen."

Ein 8051er hat eine Harvard Archtektur. Da haben Code und Datenspeicher
nichts miteinander zu tun (Außer man verwendet so ein Monitorprogramm,
das das Programm in den externen Ram bringt, der auch als
Programmspeicher beschaltet ist, was hier aber nicht der Fall ist).
Dein Programm kann also problemlos auch in den ersten 256 Byte
beginnen. Nur solltest du, wie von Klaus beschrieben, die
Interruptvektoren beachten.

Der Bootloader des RD2 liegt nicht am Anfang des Flashspeichers sondern
in einem eigenen ROM im Chip, das im fuer das ISP einfach eingeblendet
wird. Darum musst du dir also keine Sorgen machen.

Gruss Tobias
Gast #271379
Lesenswert?
• ▲
▼
Hallo Dieter,

das Programm muss bei Adresse 0000h starten. Wenn Du in Assambler
programmierst, solltest Du ,wie Klaus schon sagte, den unteren Bereich
überspringen, aber nicht nach 4000h sondern allerhöchstens nach 100h.
Du verschenkst sonst kostbaren Speicherplatz. Hast Du keine Interrupts
kann das programm gleich bei 0000h losgehen. Das gild aber nur für
eigenständig laufende Programme, die mit Flip übertragen werden. Läuft
auf deinem üC aber ein Monitorprogramm, dann muss die Startadresse auf
die des Monitorprogramms angepasst werden. Meist 4000h, weil dann das
Monitorprogamm das Programm startet.
Gast #271380
Lesenswert?
• ▲
▼
Hab mal ne Frage zu den ED2/RD2: Kann man das interne
ATMEL-Bootloader-Programm auslesen bzw. neu draufbrennen? Ich hab hier
zwei Stück, von denen es heisst, dass der Bootloader gelöscht ist.
Kann mir jemand den Bootloader von seinen RD2s auslesen und schicken?

Ralf

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.