MSP430 Fatal Error[e106]

Gast #1318692
Lesenswert?

Hallo!

Ich erhalte folgenden Fehler:

Fatal Error[e106]: Syntax error or bad argument in 
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=0200-02FF

Mein Setup:
- TI MSP430F2121
- IAR Embedded Workbench IDE

Kann mir jemand sagen, wo der Fehler in dieser Zeile liegt? Ich vermute, 
dass ein anderer Fehler Auswirkungen auf diese Zeile haben könnte. 
Deshalb post ich unten noch einen grösseren Ausschnitt aus dem Linker 
File.

Martin

1
-cmsp430
2

3
// RAM memory
4

5
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=0200-02FF
6
-Z(DATA)CSTACK+_STACK_SIZE#
7

8
//  Information memory (FLASH)
9

10
-Z(CODE)INFO=1000-10FF
11
-Z(CODE)INFOA=10C0-10FF
12
-Z(CODE)INFOB=1080-10BF
13
-Z(CODE)INFOC=1040-107F
14
-Z(CODE)INFOD=1000-103F
15

16
// ROM memory (FLASH)
17

18
//  Code
19

20
-Z(CODE)CSTART=F000-FFE3
21
-Z(CODE)CODE=F000-FFE3
22

23
// Constant data
24

25
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=F000-FFE3
Gast #1318812
Lesenswert?

@Martin
Ein Vergleich mit den Linker-Files von IAR V4.20.1:
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=...

@Christian
Wieso soll man die nicht anfassen?
Das ist die normale Vorgehensweise um eigene Speicherbereiche zu 
definieren und dem Linker bekannt zu machen!
Selbstverständlich macht man eine Kopie des originalen Linker-Files und 
legt es im Projektordner ab und bindet es über Projekte->Files ein, 
fertig!
Gast #1318852
Lesenswert?

Vielen Dank für die Antworten.

@ Christian: Ich modifiziere einen "fremden" Code, der nicht von mir 
implementiert wurde. Es stimmt, dass ich mich mit der Speicherzuteilung 
nicht auskenne, aber falls ich das Problem nicht beheben kann, komme ich 
nicht weiter. Deswegen bin ich auch froh über Links zu erklärenden 
Seiten.

@ Antwort von Stefan:
Falls ich bei HEAP die DATA16 anhänke, verändert sich die Fehlermeldung. 
Ich weiss nicht, ob dies zur Problemlösung beiträgt, aber ich post mal 
die Änderung und die neue Fehlermeldung:
1
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=0200-02FF
geändert zu
1
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=0200-02FF

Fehlermeldung:
1
Error[e16]: Segment CSTACK (size: 0x30 align: 0x1) is too long for segment definition. At least 0x2 more bytes needed. The problem occurred while  
2
processing the segment placement command "-Z(DATA)CSTACK+_STACK_SIZE#", where at the moment of placement the available memory ranges  
3
were "CODE:2d2-2ff" 
4
   Reserved ranges relevant to this placement: 
5
   200-27f              DATA16_AN 
6
   280-28b              DATA16_Z 
7
   28c-2d1              DATA16_N 
8
   2d2-2ff              CSTACK
Gast #1318906
Lesenswert?

Dein RAM Bedarf an Variablen, etc. beträgt 210 Bytes (0x200-2D1)
Damit bleiben dem Stack (der von oben befüllt wird) nur noch 46 Bytes 
übrig.
Du hast aber in Project->Options->General Options->Stack/Heap 
wahrscheinlich mind. 48 Bytes reserviert, was insgesamt eben nicht mehr 
in den verfügbaren RAM (256Byte) passt!

Du musst also erstens die Optionen für den Stack ändern und selbst 
sicherstellen, dass der Speicherbereich für den Stack auch ausreicht!!!
Ansonsten bleibt Dir nur die Möglichkeit anderweitig RAM einzusparen um 
mehr Platz für den Stack zu bekommen oder auf einen anderen MSP430 mit 
mehr RAM auszuweichen!
Gast #1319047
Lesenswert?

Vielen Dank Stefan, das bringt mich weiter!

Nun wird mir aber folgender Fehler angezeigt:
1
Error[e16]: Segment CODE (size: 0x112c align: 0x1) is too long for segment definition. At least 0x160 more bytes needed. The problem occurred while  
2
processing the segment placement command "-Z(CODE)CODE=F000-FFE3", where at the moment of placement the available memory ranges were  
3
"CODE:f018-ffe3"

Bedeutet dies, dass ich meinen Code kürzen muss?
Gast #1319104
Lesenswert?

>Bedeutet dies, dass ich meinen Code kürzen muss?
Ja, sieht so aus!
Oder halt doch auf 'nen MSP mit mehr Flash/RAM umsteigen!
Vielleicht hast Du Glück und es gibt einen pinkompatiblen Ersatz in der 
Reihe, den Du gerade verwendest?!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren