Forum: Mikrocontroller und Digitale Elektronik 8051 IAR C/C++


von Emil G. (emil_kruki)


Lesenswert?

Hallo Leute
Ich hab ein Problem mit dem IAR, nähmlich ich bearbeite ein sehr 
komplexes C++ Programm, und wenn ich Debug Session starte mit den 
folgenden Einstellungen:
Options->General Options->Target->CPU Core : Plain
                                ->Code Model : plain
                                ->Date Model : small
funktioniert alles schön, aber wenn ich Debug Session mit folgenden 
EInstellungen starte, dann findet der Compiler die Main Methode nicht, 
sondern läuft ganze Zeit rum....
Options->General Options->Target->CPU Core : extended1
                                ->Code Model : far
                                ->Date Model : small


Weisst jemand vielleicht woran es liegt, und wie man dieses Problem 
lösen könnte?
Gruß
Emil

: Verschoben durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> wenn ich Debug Session mit folgenden
> EInstellungen starte
> dann findet der Compiler die Main Methode nicht,
> sondern läuft ganze Zeit rum....

Was hat der Compiler mit dem Starten einer Debug-Session zu tun?

Was mag "läuft die ganze Zeit rum" bedeuten?

von Emil G. (emil_kruki)


Lesenswert?

In Debug Session sieht man was das Programm eigentlich macht, und die 
Arbeitsweise des Programms interpretiert Compiler....Bei den ersten 
Einstellungen sieht man wo der Einsprungsspunkt des Programms ist, 
nähmlich wo und wie die Main Methode aufgerufen wird, bei den zweiten 
Einstellungen sieht man das nicht....

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> und die Arbeitsweise des Programms interpretiert Compiler

Nö, das ist ein Debugger.

von Emil G. (emil_kruki)


Lesenswert?

Ok, es ist ein Debugger...
Wieso findet er die Mainmethode bei der zweiten Einstellungsvariante 
nicht?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Weil sich möglicherweise Dein Projekt mit den aufgeführten Einstellungen 
gar nicht übersetzen lässt? Weil es irgendwelche Fehlermeldungen gibt, 
die Du nicht beschreibst? Du bist Dir im Klaren darüber, daß ein 8051 
alles andere als eine für "sehr komplexe C++-Programme" geeignete 
Hardware ist?

von Peter D. (peda)


Lesenswert?

Emil Gracic schrieb:
> Options->General Options->Target->CPU Core : extended1
>                                 ->Code Model : far
>                                 ->Date Model : small

Du weißt als, daß Dein unbekannter 8051 vom Typ extended1 ist und Dein 
Board eine far Adressierung hat?

Oder entspricht Dein Post eher: "Ich hab an meinem Auto wahllos ein paar 
Kabel vertauscht und einige Teile abmoniert und nun fährts nicht mehr"?


Peter

von Thomas (Gast)


Lesenswert?

Vieleicht hilft es ja schon einfach mal in der Hilfe nachzuschauen
was extented1 bedeutet....
Auserdem kann die niemand helfen wenn du nicht angibst welche CPU
du nimmst.

Thomas

von Emil G. (emil_kruki)


Lesenswert?

wenn Ihr immer nur die arroganten Antworten zum Angebot habt, dann 
solltet Ihr nicht antworten....Beim Debug Session kann man auch 
Simulator nutzen und nicht unbedingt auf Hardware zugreifen, ist aber 
egal....Obwohl Deine Kritik sehr kreativ war, kann ich Dir leider nicht 
zustimmen....

von Emil G. (emil_kruki)


Lesenswert?

@Thomas: erstmal danke für die nette Antwort :)*
extended1 bedeutet, dass man noch zusätzliche 16 MBytes der externen 
Data Memory und Code Memory zur Verfügung hat....also geiegnet für 
grossere Programme....

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> wenn Ihr immer nur die arroganten Antworten zum Angebot habt, dann
> solltet Ihr nicht antworten

Ach, es sind arrogante Antworten, wenn bei Deiner Fragestellung 
Zweifel ob des grundlegenden Verständnisses und der Informationsdichte 
aufkommen?

Ja, solchen Zeitgenossen hilft man gerne.

von Peter D. (peda)


Lesenswert?

Emil Gracic schrieb:
> extended1 bedeutet, dass man noch zusätzliche 16 MBytes der externen
> Data Memory und Code Memory zur Verfügung hat

Da irrst Du.
Es teilt dem Compiler nur mit, daß der ausgewählte 8051-Typ das 
unterstützt und er entsprechenden Code erzeugen darf. Bei einigen 8051 
sind das Befehle, die mit 0xA5 anfangen.

Und dann guckt aber der Simulator schön blöd aus der Wäsche, wenn er 
Code ausführen soll, den Dein 8051 garnicht kann.

Deshalb sollte man von den Einstellungen, die der Compiler automatisch 
entsprechend dem ausgewählten 8051 vornimmt, die Finger lassen.

In der Regel weiß das der Compiler nämlich besser als Du.


Peter

von emil_kruki (Gast)


Lesenswert?

vielen Dank Peter.
Das Problem war, dass die vom Compiler automatisch vorgenommene 
Einstellungen mit CPU Core : plain etc... waren. Mit plain funktioniert 
nicht das ganze Programm, da  nicht genug Speicherplatz zur Verfügung 
steht, also nach paar Methoden bricht mein Debug Session ab...Deswegen 
hab ich versucht mit extended1 das Problem zu lösen. Und im Buch von IAR 
Compiler steht, dass man mit extended1 zusätzliche 16 Mbytes externer 
Data Memory und Code Memory bekommt...Aber auf jeden Fall danke.

von Peter D. (peda)


Lesenswert?

Nimm einen 8051-Typ, der mehr Speicher hat.
Z.B. der AT89C51RE2 hat 128kB Flash. Aber nicht über erweiterte Befehle, 
sondern über Banking.


Peter

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.