IAR: Error[e16]: Segment INTVEC

Gast #1663290
Lesenswert?
• ▲
▼
Hallo!

Habe im IAR Workbench für MSP einen einfachen Beispielcode von Ti 
eingefügt (http://focus.ti.com/docs/prod/folders/print/msp430f247.html) 
und von USCI0 auf USCI1 umgeändert.
Der code sieht jetzt wie folgt aus:
1
#include "msp430x24x.h"
2

3
void main(void)
4
{
5
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
6
  
7
  // set SCLK to calibrated 1 MHz DCO
8
  BCSCTL1                         =       CALBC1_1MHZ;
9
  DCOCTL                          =       CALDCO_1MHZ;
10
  
11
  // setup ACLK source and parameters, external crystal is 32.768 kHz
12
  //BCSCTL3                         =       LFXT1S_0 | XT2S_0 |      XCAP_1;
13
    
14
  if (BCSCTL1 == 0xFF)                      // Check flash erasure
15
    while(1);                               // If DCO constants invalid,trap CPU   
16
  P3SEL = 0x60;                             // P3.6,7 = USCI_1 TXD/RXD
17
  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
18
  UCA1BR0 = 8;                              // 1MHz 115200
19
  UCA1BR1 = 0;                              // 1MHz 115200
20
  UCA1MCTL = UCBRS2 + UCBRS0;               // Modulation UCBRSx = 5
21
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
22
  IE2 |= UCA1RXIE;                          // Enable USCI_A0 RX interrupt
23
  
24
  //  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
25
}
26

27
// Echo back RXed character, confirm TX buffer is ready first
28
#pragma vector=USCIAB1RX_VECTOR
29
__interrupt void USCI1RX_ISR(void)
30
{
31
  while (!(IFG2&UCA1TXIFG));                // USCI_A0 TX buffer ready?
32
  UCA1TXBUF = UCA1RXBUF;                    // TX -> RXed character
33
}
Beim Compilieren erhalte ich vom Linker folgende Fehlermeldung
1
Error[e16]: Segment INTVEC (size: 0x24 align: 0x1) is too long for segment definition. At least 0x4 more bytes needed. The problem occurred while  
2
processing the segment placement command "-Z(CODE)INTVEC=FFE0-FFFF", where at the moment of placement the available memory ranges were  
3
"CODE:ffe0-ffff" 
4
   Reserved ranges relevant to this placement: 
5
   ffe0-ffff            INTVEC

Kann mir jemand sagen, wo der Fehler liegt?

Danke für die Hilfe!

Gruß
Tim
#1663522
Lesenswert?
• ▲
▼
Hallo Tim,

naja, die Antwort steht doch schon in der Fehlermeldung.
Der compilierte Code ist 0x24 Bytes lang, also 36 Bytes.
In der Definition für dieses Segment (INTVEC) sind jedoch nur
32 Bytes vorgesehen, also ist der Code 0x04 Bytes too long.

Code kürzen oder mehr Platz reservieren wäre mein Vorschlag.
Gruß
Gast #1664444
Lesenswert?
• ▲
▼
Manchmal hat IAR solche Anwandlungen. Kopiere das Linkerskript mal in 
deinen Programmordner und verweise IAR darauf (Options (Kontextmenü) -> 
Linker -> Config -> Linker Command File). Aber vorher solltest du 
kontrollieren, ob du auch den richtigen Controller eingestellt hast (... 
-> General Options -> Device).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.