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