Hallo,
ich suche schon seit einiger Zeit nach einer Lösung für das Problem,
dass der GNU Compiler mit einem Fehler abbricht:
Meine Assembler -Datei (set_port.s):
1 | #include "msp430g2553.h"
|
2 | .text
|
3 | .global set_port
|
4 | set_port:
|
5 | xor.b #01h, &P1OUT ; funktioniert nicht, P1OUT ist aber in Header definiert
|
6 | ; xor.b #01h, 0x0021 ; funktioniert (P1OUT = 0x0021)
|
7 | ret
|
8 | .end
|
Meine C -Datei (main.c):
1 | #include "msp430g2553.h"
|
2 |
|
3 | extern void set_port(void);
|
4 |
|
5 | void main( void )
|
6 | {
|
7 | IFG1 = 0; /* clear interrupt flag1 */
|
8 | WDTCTL = WDTPW+WDTHOLD; /* stop WD */
|
9 | P1DIR = 0x01;
|
10 |
|
11 | while(1)
|
12 | set_port(); /* Aufruf der Assembler -Methode */
|
13 | }
|
Meine Compiler -Anweisung:
1 | msp430-gcc -mmcu=msp430g2553 -o main.elf set_port.s main.c
|
Ich komme auf keinen grünen Zweig, die Ausgabe lautet:
1 | /var/folders/wn/0gqrzq_53fg904dc7fk0bmcc0000gp/T//cc3LO8NK.o: In function `set_port':
|
2 | (.text+0x2): undefined reference to 'P1OUT'
|
3 | collect2: ld gab 1 als Ende-Status zurück
|
Ich habe den Code (ähnlich) unter IAR Embedded für Windows getestet,
dort funktioniert der Mix einwandfrei... hier unter Mac OS X sowie unter
Ubuntu klappt es einfach nicht.
Vielleicht findet sich ja jemand, der sich damit auskennt oder ein
ähnliches Problem gelöst hat.
Vielen Dank im Voraus!
Jan