mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Keil memory overlap


Autor: MarcoH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich bearbeite gerade einen 8051(EZ-USB) mit Keil IDE.

Mein Code range ist  0x80 - 0x1FF
Mein xData range ist ab 0x2000

Bis her lief alles glat. Heute habe ich ein neues C-File hinzugefügt für 
eine Funktion.  Dabei nutze ich eine struct aus dem XData.
beim Kompilieren kommt nun die Warnung

CODE SPACE MEMORY OVERLAP
FROM 0003H
TO   0005H

auch wenn ich das File wieder rausschmeise kommt die Warnung noch. Wie 
kann ich sie beheben? Bin ziemlicher Einsteiger.

Gruß Marco

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht so aus, als hättest du einen Interrupt mehrfach in deinem Code.
Schau dir mal das *.M51 File an. In diesem findest du eine Memory-Map.

Autor: MarcoH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aaah stimmt.

hatte ja
#pragma NOIV auskommentiert.

nur warum darf man die Interruptvektoren nicht generieren?

und warum wird dieser Adressbereich für Code genommen wenn ich expliziet 
sage ab 0x80 ?

gruß Marco

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Cypress FX1/2 haben ein "AutoInterrupt"(oder so ähnlich) Feature. Du 
hast für die USB-Interrupts mehrere Funktionen, die sich wie ISRs 
verhalten. Nur musst du dem Keil mit #pragma NOIV mitteilen, dass er 
daraus keine ISR generieren soll.
Beim 8051 ist es nun mal so, dass die ISRs an bestimmten Stellen liegen. 
Und da legt der Keil die ISrs nun mal hin.

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Btw.: Code Range 0x80-0x1FF ist doch sehr klein für das Code-Segment. 
Und Offset 0x80 ist auch sehr komisch. Bist du dir da sicher?

Autor: MarcoH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir erstmal. Der Code range reicht erstmal, da der 8051 nicht 
wirklich viel zu tun hat. bei Bedarf passe ich das noch an. Der Offset 
war beim Firmwaregrundgerüst von Cypress so angegeben.Ich habe mir noch 
nicht wirklich Gedanken drüber gemacht, da der EZ-USb momentan nur als 
Testgerät dient.

Gruß Marco

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.