Forum: Mikrocontroller und Digitale Elektronik Keil memory overlap


von MarcoH (Gast)


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

von Mars (Gast)


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.

von MarcoH (Gast)


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

von Mars (Gast)


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.

von Mars (Gast)


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?

von MarcoH (Gast)


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

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