mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8051 Reset Vector Frage


Autor: H-G Sch (haenschen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Ich bräuchte ein paar Informationen zum Reset-Vector des 8051, speziell 
des 80c32x2 von Philips.

Ich weiss dass an der Adresse 0000h des internen SRAM wohl ein 
drei-Byte-großer Sprungbefehl zum Beginn des eigentlichen Hauptprogramms 
stehen soll. Das wäre der sogenannte Reset-Vector.

Nun beabsichtige ich aber externen EEPROM-Programmspeicher zu benutzen.


Da stellt sich mir die Frage wie das jetzt ist mit diesem 
Interrupt-Vector.
So wie ich das verstehe steht dieser Vector im internen SRAM. Auf diesen 
kann ich ja nicht zugreifen wenn der erste Befehl aus dem externen 
EEPROM kommt (EA-Pin auf Low).

Kann ich den Reset-Vector-Eintrag ignorieren und einfach mein 
Hauptprogramm im externen EEPROM ab 0000h durchgehend stehen lassen ?
Ist dieser Reset-Vector im internen SRAM vielleicht für Software-Resets 
?

Autor: Georg G. (df2au)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Reset Vektor steht nicht im RAM sondern im ROM.

Autor: Lothar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal abgesehen davon, dass der 80c32x2 veraltet ist und ein akteller 8051 
mit Flash und On-Chip RAM dringend zu empfehlen wäre z.B.

http://www.silabs.com/products/mcu/8-bit/Pages/efm8.aspx

Beim 8051 gibt es drei Speicher: internes RAM (IRAM) externes RAM (XRAM) 
und Programmspeicher (ROM/EEPROM/Flash) dementsprechend gibt es die 
Adresse 0 auch dreimal.

Programme werden aus dem Programmspeicher ausgeführt, dort ist also bei 
Adresse 0 auch der Reset-Vektor. Das Programm kann dort direkt losgehen 
(erster Befehl) oder eben ein Jump zum Programmanfang.

Allerdings war es unüblich, jedesmal das EEPROM neu zu brennen, 
stattdessen wurde das Programm im XRAM ausgeführt. Dazu wurde im EEPROM 
ein Bootloader gebrannt, der dann über die serielle Schnittstelle das 
Programm ins XRAM geschoben hat z.B.

https://www.pjrc.com/tech/8051/paulmon2.html

Dafür müsste dann an den 80c32x2 ein kleines EEPROM für den Bootloader 
und wenigstens ein 32K RAM angeschlossen werden:

Beitrag "Mikrocontroller 8031 ROM/RAM"

Autor: H-G Sch (haenschen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> Der Reset Vektor steht nicht im RAM sondern im ROM.

Oha ... dann stehen da wohl auch die ganzen Interrupt-Vektoren.

Am besten wird wohl sein einen Sprungbefehl an 0000h bis 0002h des 
externen EEPROM zu setzen und ein paar Byte für die Interruptvektoren 
freizulassen.

Danke dir !


@Lothar: Code per Bootloader booten werde ich wohl beim Folgeprojekt.

: Bearbeitet durch User
Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MCs mit internem Flash gab es erst ab ~1993 von Atmel (AT89C51) und 
ISP-Flash noch einige Jahre später.
Davor hat man in den PROM einen Monitor gebrannt, der die 
Interruptvektoren weitergeleitet hat:
  org      0h
  ljmp 08000h
  org     03h
  ljmp 08003h
  org     0Bh
  ljmp 0800Bh
  ;usw.
Nach Ende des internen PROM führte der 8051 dann Code aus externem PROM 
aus, wo man aber auch einen SRAM anschließen konnte.

Ich würde da einfach nen Flash-8051 mit UART-Bootloader einsetzen, z.B. 
P89C51RD2 oder AT89C51RD2.
Die alten Downloadtools der Entwicklungsboards dürften unter 
64Bit-Windows eh nicht mehr laufen.

: Bearbeitet durch User

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.