mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89C51RD2/ED2: Adresse des Startprogrammes?


Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias Schneider (tobias)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus-Dieter Reimers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.