Forum: Mikrocontroller und Digitale Elektronik IAR für ARM immer 8KB RAM


von IAR-Tester (Gast)


Lesenswert?

Hallo Profis,

ich hab grad was mit dem IAR für ARM rumgespielt (Simulator, 
Testversion) und hab dabei ist mir aufgefallen, wenn ich was Compile 
habe ich als Ausgabe z.B.

38 bytes of CODE memory (+ 20 bytes shared)
16 bytes of DATA memory

Das ist soweit klar, 38 Byte Prog, 16 Byte RAM ...

wenn ich jetzt ein "make" mache, dann habe ich unter der ausgabe vom 
linker (xlink.exe) auf einmal

412 bytes of CODE memory
8448 bytes of DATA memory
12 bytes of CONST memory

Wenn ich unter den Projektoptionen als Library "None" wähle, ist die 
Ausgabe auch weg. Was ist das für eine Library und warum braucht die 
direkt 8KB RAM ? Oder hat die Ausgabe damit nichts zu tun. Wenn ich die 
Library auf "None" mache funktioniert im übrigen der Simulator nicht 
mehr ..

Ich wollte eigentlich eien LPC2103 nutzen für eine kleines Projekt. Aber 
der hat ja "nur" 8KB RAM.

Hoffe ihr könnt mir helfen ...

von Dirk H. (arm-dran)


Lesenswert?

Hallo Tester,

hast Du oben (über workspace) mal nachgeschaut, wo Du das Programm 
startest?
Flash oder RAM ?

von Dirk H. (arm-dran)


Lesenswert?

Vorallem, hast Du den MCU Typ eingestellt ?

von IAR-Tester (Gast)


Lesenswert?

Ja .. ?? Wo sehe ich wo ich das Programm starte bzw. wo legt man das 
fest ?

Wie gesagt, derzeit nur im Simulator, hab noch nix sonst damit gemacht 
weil ich erstmal die IDE abchecken wollte.

von IAR-Tester (Gast)


Lesenswert?

Als Typ hab ich unter Project->Options->General Options->Target den 
LPC2103 gewählt

von Dirk H. (arm-dran)


Lesenswert?

Welche IAR EWARM Version hast Du?
Typ vom JTAG-Adapter ??? J-LINK ???

von IAR-Tester (Gast)


Lesenswert?

Version ist 4.41

als JTAG Adapter wollte ich eigentlich einen Wiggler in Verbindung mit 
H-JTAG nutzen (oder funzt das nicht?). Der J-Link kostet ja richtig was 
(im Vergleich zum parallel Wiggler) ;)

Ich arbeite allerdings noch nicht mit irgendeiner Hardware, sondern hab 
nur ein paar Zeilen Code geschrieben und wollte die im Simulator testen. 
Das funktioniert auch soweit. Nur gibt mir der Linker immer 8KB belegtes 
RAM aus.

von Dirk H. (arm-dran)


Lesenswert?

Diese Version hab ich auch.
Bei mir ist der J-LINK allerdings fest ausgewählt.
Als Ziel MCU hab ich die TMS470 ARM7TDMI Serie von Texas Instruments.

Mein Adapter gibt mir oben die Auswahl FLASH / RAM

Scheint so, als würde Dein Compiler,Linker  das Programm im RAM 
ausführen lassen. Ist aber von hier aus schwer zu beeinflussen.
Könntest mal nen Schreenshot von der Hauptseite als Bild anhängen

von IAR-Tester (Gast)


Angehängte Dateien:

Lesenswert?

Anbei der Screenshot vom IAR.

Also wählen kann ich nix zwischen Flash / Ram. Was ist das denn 
überhaupt für eine Library?

von Dirk H. (arm-dran)


Lesenswert?

Schau mal links oben unter Workspace, da steht DEBUG.
Kannst DU dort noch was anderes auswählen (im DropDown Menü) ?

Das Programm wir für den DEBUG Modus rübergesendet.
Hat nix mit ner Library zu tun.

von IAR-Tester (Gast)


Lesenswert?

Ja da kann ich Release wählen. Ändert allerdings nichts an der Ausgabe 
vom Linker.

Aber scheinbar hat es doch mit irgendeiner Library zu tun, denn wenn ich 
auf project->options und "General Options" auf Library Configurationen 
gehe, dann steht da "Library:Normal", ändere ich das von "Normal" auf 
"None" ist die Ausgabe vom Linker ok, aber der Simulator macht nix mehr 
..

Das ist der Quelltext den ich teste. Kannst du denn denn mal bei dir 
einfach in ein neues Projekt reinmachen und compilen / linken. Evtl. 
liegt es ja am Simulator oder irgendeiner Einstellung.

1
//#include "iolpc2103.h"
2
//#include "stdio.h"
3
4
long test1 = 0;
5
long test12 = 0;
6
long test13 = 0;
7
long test14 = 0;
8
9
10
11
int main()
12
{
13
    char a = 10;
14
    char b = 11;
15
16
    
17
    while(1)
18
    {
19
      // printf("Hallo");
20
/*      test1++;
21
       test12++;
22
       test13++;
23
       test14++;*/
24
      a++;
25
      a-=2;
26
      if(a == 12)
27
      {
28
         b++; 
29
         if(b == 100)
30
         { b = 0; }
31
      }
32
    }
33
}

von Dirk H. (arm-dran)


Lesenswert?

So kann man das nicht ganz sehen.

8448 sind die 8KB RAM + 256Bytes

Bei mir läuft grad ne reine Assemblergeschichte, deswegen hab ich da 
ganz andere Einstellung.

Pack doch kurz alle Files aus dem Workspace in ne ZIP oder RAR Datei und 
häng sie an. Dann ha ich die gleichen Einstellungen wie DU.

Übrigens, Stell mal als Typ 2101 ein, der hat 2KB

Dann müsste der Linker 2304 ausspucken

von IAR-Tester (Gast)


Angehängte Dateien:

Lesenswert?

Das hab ich schon probiert. Bleiben die 8K stehen..

Anbei das Workspace. Vielen Dank schonmal!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie groß ist denn der für Stack und Heap reservierte Bereich?

von Dirk H. (arm-dran)


Lesenswert?

Da fehlt was.

Im Kompletten Workspace muß Datei mit Endung .eww sein

Hast Du die Kickstart Version?? Weil ich mit der Vollversion arbeite.
Weiß nicht ob es da Unterschiede gibt. Kickstart hat ja eine 
Codelimitierung.

Schau noch mal nach, oder speichere den Workspace zusätzlich in nem 
anderen Ordner.

von IAR-Tester (Gast)


Lesenswert?

Wo kann ich das nachschauen ? (ARM Neeby, vorher 8051 mit Keil)

von IAR-Tester (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt müsste es komplett sein....

von Dirk H. (arm-dran)


Lesenswert?

Da spuckt meiner Fehler aus.
Fatal Error Copy Protection Check

Bin mir nicht sicher, ob sich die 2 Versionen vertragen,

ich probier mal was anders,

wenn du heut keine Antwort mehr bekommst, schau morgen noch mal rein.
ich muß 9 Uhr weg

Gruß
Dirk

von IAR-Tester (Gast)


Lesenswert?

ok, trotzdem vielen Dank für die Mühen

von Rooney B. (rooney)


Lesenswert?

Nur so als kleiner Tipp... Schau dir mal die Beispiele für den LPC2103 
an. Die findest in deinem IAR Installationsordner.

Dort sollte alles korrekt für das Ausführen im RAM oder FLASH definiert 
sein. Es gibt *.mac Datein, die du einbinden musst, die für die richtige 
Konfiguration sorgen.
Ich habe mich anfangs auch mit dem IAR gequält, hab dann aber ein 
Beispielprogramm hergenommen und den Code durch meinen ersetzt. Und wie 
ein Wunder, es hat tadellos funktioniert, sowohl im FLASH als auch im 
RAM.

von IAR-Tester (Gast)


Lesenswert?

Hey super, jetzt hab ich oben auch die wahl zwischen RAM und FLASH (auch 
wenn das im Simulator eigentlich egal ist) und bei der Sample 
Application auch nur einen geringen RAM Verbrauch ..

Vielen Dank!

ich hatte mir gestern noch die Demo vom Keil angeschaut. Was ich da 
recht cool finde ist der Performance Analyser, der einem grafisch zeigt 
welche Funktion wie lange und wie oft aufgerufen worde. Gibt es sowas 
auch bei IAR ?

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.