C MSP 430 + CCS 4.2(Eclipse) Fehler beim Build

Creeed

Captain
Registriert
Sep. 2002
Beiträge
3.854
Hallo Leute,

ich hab hier eine eZ-430 Chronos liegen und möchte bei der einen zusätzlichen Sender programmieren der in einem Gerät verbaut werden soll. Da ich in C nicht unbedingt eine Leuchte bin hab ich mich erst mal an den Examples von TI versucht und dort bekomme ich schon Fehlermeldungen.

Quelltext:

Code:
//******************************************************************************
//  MSP430F22x4 Demo - Software Toggle P1.0, MCLK = VLO/8
//
//  Description; Pulse P1.0 with a 1/100 active duty cycle using software.
//  Ultra-low frequency ~ 1.5kHz, ultra-low power active mode demonstrated.
//  ACLK = VL0, MCLK = VLO/8 ~1.5kHz, SMCLK = n/a
//
//                MSP430F22x4
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |             P1.0|-->LED
//
//  A. Dannenberg
//  Texas Instruments Inc.
//  October 2006
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
//*************************************************************************#include


#include "msp430x22x4.h"



volatile unsigned int i;                    // volatile to prevent optimization

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  BCSCTL3 |= LFXT1S_2;                      // LFXT1 = VLO
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  __bis_SR_register(SCG1 + SCG0);           // Stop DCO
  BCSCTL2 |= SELM_3 + DIVM_3;               // MCLK = LFXT1/8
  P1DIR = 0xFF;                             // All P1.x outputs
  P1OUT = 0;                                // All P1.x reset
  P2SEL = 0;                                // All P2.x GPIO function
  P2DIR = 0xFF;                             // All P2.x outputs
  P2OUT = 0;                                // All P2.x reset
  P3DIR = 0xFF;                             // All P3.x outputs
  P3OUT = 0;                                // All P3.x reset
  P4DIR = 0xFF;                             // All P4.x outputs
  P4OUT = 0;                                // All P4.x reset

  for (;;)
  {
    P1OUT |= 0x01;                          // P1.0 set
    for (i = 10; i > 0; i--);               // Delay 1x
    P1OUT &= ~0x01;                         // P1.0 reset
    for (i = 1000; i > 0; i--);             // Delay 100x
  }
}
Fehlermeldung aus der Konsole

Code:
**** Build of configuration Debug for project Test ****

C:\Programme\Texas Instruments\ccsv4\utils\gmake\gmake -k all 
'Building file: ../test.c'
'Invoking: Compiler'
"C:/Programme/Texas Instruments/ccsv4/tools/compiler/msp430/bin/cl430" --silicon_version=mspx -g --include_path="C:/Programme/Texas Instruments/ccsv4/msp430/include" --include_path="C:/Programme/Texas Instruments/ccsv4/tools/compiler/msp430/include" --diag_warning=225 --printf_support=minimal --preproc_with_compile --preproc_dependency="test.pp"  "../test.c"
'Finished building: ../test.c'
' '
'Building target: Test.out'
'Invoking: Linker'
"C:/Programme/Texas Instruments/ccsv4/tools/compiler/msp430/bin/cl430" --silicon_version=mspx -g --diag_warning=225 --printf_support=minimal -z -m"Test.map" --stack_size=80 --heap_size=80 --use_hw_mpy=F5 --warn_sections -i"C:/Programme/Texas Instruments/ccsv4/msp430/include" -i"C:/Programme/Texas Instruments/ccsv4/tools/compiler/msp430/lib" -i"C:/Programme/Texas Instruments/ccsv4/tools/compiler/msp430/include" --reread_libs --rom_model -o "Test.out"  "./test.obj" -l"rts430x.lib" "../lnk_cc430f5133.cmd" 
<Linking>

 undefined first referenced
  symbol       in file     
 --------- ----------------
 BCSCTL2   ./test.obj      
 BCSCTL3   ./test.obj      
 IFG1      ./test.obj      
 P1DIR     ./test.obj      
 P1OUT     ./test.obj      
 P2DIR     ./test.obj      
 P2OUT     ./test.obj      
 P2SEL     ./test.obj      
 P3DIR     ./test.obj      
 P3OUT     ./test.obj      
 P4DIR     ./test.obj      
 P4OUT     ./test.obj      

error: unresolved symbols remain
error: errors encountered during linking; "Test.out" not built

>> Compilation failure
gmake: *** [Test.out] Error 1
gmake: Target `all' not remade because of errors.
Build complete for project Test
Irgendwie blick ich da nicht durch, kann mir da wer helfen?

Windows XP
Code Composer Studio 4.2.0
eZ430-RF2500 (USB)
MSP430F2274
 
Der Linker findet die Lib nicht, weil das include falsch angegeben ist.
System-Libs mussen in spitzen Kammern (so: #include <msp430x22x4.h>
) angegeben werden.
Außerdem steht da noch ganz unmotiviert ein weiteres include rum:
hier:
//*************************************************************************#include


viel Spaß!
 
guliver1 schrieb:
Der Linker findet die Lib nicht, weil das include falsch angegeben ist.
System-Libs mussen in spitzen Kammern (so: #include <msp430x22x4.h>
) angegeben werden.
Außerdem steht da noch ganz unmotiviert ein weiteres include rum:
hier:
//*************************************************************************#include


viel Spaß!


Schmarn. Header werden in der Kompilierphase eingezogen. Den Linker interessieren Header herzlich wenig.
An den OP: Ich nehme mal an, dein Programm verwendet irgend eine externe Library. Die Header inkludieren alleine reicht nicht. Das befriedigt nur den Compiler. Du mußt nun auch noch dem Linker sagen, daß er gegen eine bestimmte Library linken soll. Je nachdem, welchen Compiler / Linker du verwendest, gibt es dafür verschiedene Optionen.
 
>>antred: Du hast ja ein Ton am Leib. Etwas höflicher bitte!
Haupsache, Du machst keine Fehler!

>>Creeed: Mache einfache einfach die von mir angegeben Korrektur mit den includes, dann findet der Preprozessor auch die Headerdatei. Mehr ist nicht notwendig, wenn Du CCS v4 verwendest, da die Entwicklungsumgebung die Struktur schon richtig aufgesetzt hat.

Mein Fehler: Korrekt ist: "Preprozessor findet die Headerdatei nicht" anstelle "Linker findet die Lib nicht". Na und? :evillol:
 
Herrje, einmal "Schmarn" gesagt, und schon bist du beleidigt. Ein bißchen zart besaitet, nich? :p

Wurscht ... nach dem, was uns der OP an Informationen gegeben hat, GIBT es keinen Fehler in der Präprozessor / Kompilierphase. Schau dir doch mal die Meldungen an ... der hat das Kompilieren bereits abgeschlossen und versucht nun, zu linken. Hätte er in der Kompilierphase irgend einen Header nicht gefunden, hätte es dort schon einen Fehler gegeben.

Und wo ich gerade schon mal beim Klugscheißen bin, es heißt int main(void) nicht void main(void).
 
DrToxic schrieb:
Naja, ob nun void oder int + return 0 ist doch eigentlich nur noch reine Formsache, oder? :)

Der C-Standard sieht es leider anders. void main(void) ist keine standardkonforme Signatur für die main-Funktion. ;)
Prinzipiell sollte jedes Programm einen Wert aus main() zurückgeben, an Hand dessen aufrufende Programme feststellen können, ob das C-Programm erfolgreich war (aus der UNIX-Welt hat sich hier der Returnwert 0 eingebürgert) oder nicht (jeder andere Rückgabewert).
 
Man sollte eigentlich davon ausgehen das die sample Datei stimmen sollte ^^.

Aber folgender Part
Code:
undefined first referenced
  symbol       in file     
 --------- ----------------
 BCSCTL2   ./test.obj      
 BCSCTL3   ./test.obj      
 IFG1      ./test.obj      
 P1DIR     ./test.obj      
 P1OUT     ./test.obj      
 P2DIR     ./test.obj      
 P2OUT     ./test.obj      
 P2SEL     ./test.obj      
 P3DIR     ./test.obj      
 P3OUT     ./test.obj      
 P4DIR     ./test.obj      
 P4OUT     ./test.obj
lässt darauf schließen das du nicht das richtige Pad ansprichst.
Einmal in die Optionen und schauen ob bei Device das richtige Pad eingestellt ist.

Viel Erfolg
 
Zurück
Oben