Hallo, also hab folgendes Problem: Möchte mit meinem Board (s.h. unten) im CW debuggen aber wie ich gerade festgestellt habe ist das bei mir nur beschänrkt möglich. Im Hi-Wave Simulator bekomme ich bei alle "LOKALEN" Variablen/Pointer auf Strukturen etc. die Meldung: "Not allocated". Durch das Betrachten des Disassembly stellte ich fest das die Daten nicht im Heap Abgelegt werden sondern im Stack. Das bedeutet ich die meisten Daten und ihre Werte nicht betrachten ausser in Zusammenarbeit des SP und der Memory Map..... sehr sehr lästig. Kann mit jemand sagen wie ich den Linker auffordere für die benutzen Daten Speicher zu allokieren?? Ein Bildausschnitt könnt ihr euch im Anhang dazu anschauen wie das so ungefähr bei mir aussieht. Hardware: Dragon-12 HCS12 Board mit S12DP256B µC Software: Metrowerks Codewarrior 3.1 SP 1
Hallo, das ist doch eigentlich völlig egal wo die lokalen Variablem liegen, auf dem heap sind die Daten außerhald der funktion auch nicht gültig und werden ggf überschrieben. Der Stack ist allerdings schneller, da der Stackpointer und die Push und Pull befehle im Prozessor integriert sind. Das ablegen auf dem Heap würde da länger dauern. Eckhard
... sieht so aus, als nutzt keiner diese Tools. Die Metrowerks CW Compiler sind grotten-kompliziert. Ich verwende für das "T-Board" vom Elektronikladen auch nur den ICC12 von imagecraft in Verbindung mit dem Monitorprogramm DBUG12. Das alles funktioniert einfach und prima. Eine eigene BDM Möglichkeit habe ich nicht. Mache allerdings nur kleinere "Testprojekte" mit dem Teil. Klaus
zu Eckhard: okay hast schon recht dennoch wieso sehe ich die lokalen Variablen nicht?? Ich befinde mich schon in der Funktion und betrachte die Variablen dieser Funktion. Ich denke eher der Klaus hat recht. Im allgemeinen ist es nicht gerade einfach den Assembler Code des Compilers immer zu folgen, jedenfalls für jemanden der momentan AARM-Compiler Code (LPC2148) sieht. Leider kann ich die Entwicklungsumgebung nicht wechseln da diese von meinem Prof bevorzug wird. Morgen hab ich ne Sprechstunde bei ihm und werd dann hier rein posten wenn er mir weiterhilft
Hallo, CW ist garnicht so schlecht wenn man sich erstmal dran gewöhnt hat. Ich nutze das aber eher im 8 Bit bereich. Kannst ja nochmal bei Freescale im Forum dein Glück versuchen. http://forums.freescale.com/ Eckhard
Ich vermute es liegt daran, daß der Compiler die Variablen wegoptimiert hat. Das habe ich bei Codewarrior / HiWave auch schon oft gehabt. Gruß, Marcus
Hi, ja das ist wahr ein paar Sachen gefallen mir beim CW schon, z.B. das man im Hi-Wave im Simulator Modus die LED anzeigen kann ob se blinkt oder net etc. Bin ja auch mehr oder weniger am Anfang ihn kennenzulernen. Mein Problem ist weiterhin beständig. Marcus hat ja nen Tipp gegeben: "wegoptimierung" leider hat er da Aufgehört weiter zu posten wo ich es nötig hab :-) mal sehen morgen weiß ich da vielleicht etwas mehr. Gruß Franjo
Die Variablen volatile machen, dann muss der Compiler die Variable bei jedem Zugriff neu laden und darf sie nicht in einem Register vorhalten/optimieren. Wenn das volatile stört (und du nicht ständig den Sourcecode ändern willst), dann kannste das ja durch ein Define ersetzen, das du z.B. nur bein Compilieren für Debugzwecke setzt. #DEFINE DEBUGVOLATILE volatile später dann: DEBUGVOLATILE uint16_t Variable; ----, (QuadDash).
Das mit dem Volatile gefällt mir sehr gut ^^ Also hab heute mit meinem Prof geredet. Es schaut so aus das der HCS12 ja ein 16 Bit Mikrocontroller ist allerdings mit den vorhanden Pages mit 24 Bit Adresse arbeitet. Also 16 Bit Adresse + 8 Bit Page Register. Mir reicht jedoch der ROM aus und daher habe ich in der LinkerCommand File (*.prm) einfach die Pages im Bereich Copy auskommentiert. Zustäzlich habe ich das Memory Modell von Banked auf SMALL gesetzt und siehe da ... Problem gelöst. Wie das ganze allerdings mit den Pages richtig funktionieren soll weiß ich nicht. Trotzdem danke an alle die gepostet haben
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.