Forum: Compiler & IDEs no such instruction 'sei'


von goldeneyes1987 (Gast)


Lesenswert?

Hallo,


ich versuche eine S-Function in Matlab zu bauen die mir den Zugriff auf 
µC-Komponenten ermöglicht.
Als Compilereinstellung verwende ich : "Cygwin -mno-cygwin".

Wenn ich das Ganze kompilieren will erhalte ich folgende Fehlermeldung:
1
C:/DOCUME~1/ADMINI~1/MYDOCU~1/DOWNLO~1/TWI_OH~1/avr.c:27: warning: `signal' attribute directive ignored
2
C:/DOCUME~1/ADMINI~1/MYDOCU~1/DOWNLO~1/TWI_OH~1/avr.c:89: warning: `signal' attribute directive ignored
3
/cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/cc7HVDj6.s: Assembler messages:
4
/cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/cc7HVDj6.s:232: Error: no such instruction: `sei'
5
 
6
  D:\PROGRA~2\MATLAB\BIN\MEX.PL: Error: Compile of 'C:\DOCUME~1\ADMINI~1\MYDOCU~1\DOWNLO~1\TWI_OH~1\avr.c' failed.

Kann jemand damit was anfangen??
Danke für jede Hilfe!
Gruß
GoldenEyes

von (prx) A. K. (prx)


Lesenswert?

Probiers mal mit STI - so heisst nämlich der entsprechende Befehl beim 
PC-Prozessor. ;-)

Soll heissen: Du compilierst/assemblierst vermutlich grad für den PC, 
nicht für den AVR, und der PC kann mit den AVR-Befehlen im Code nichts 
abfangen. Mag eine falscher Einstellung sein, oder es werden die 
falschen Programme aufgerufen.

von goldeneyes1987 (Gast)


Lesenswert?

Habe es mal mit sti probiert, leider mit identischer Fehlermeldung!

Welche Einstellungen meinst du da speziell?

von goldeneyes1987 (Gast)


Lesenswert?

Hier das Options file:

1
->    Options file           = C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2012a\mexopts.bat 
2
      MATLAB                 = D:\PROGRA~2\Matlab 
3
->    COMPILER               = gcc 
4
->    Compiler flags: 
5
         COMPFLAGS           = -c -DMATLAB_MEX_FILE -mno-cygwin  -D"__AVR_ATmega328P__" 
6
         OPTIMFLAGS          = -O3 
7
         DEBUGFLAGS          = -g 
8
         arguments           =  -IC:\GNUMEX -I\ -I\ -ID:\PROGRA~2\WINAVR\AVR\INCLUDE -IC:\DOCUME~1\ADMINI~1\MYDOCU~1\DOWNLO~1\TWI_OH~1 
9
         Name switch         = -o 
10
->    Pre-linking commands   =  
11
->    LINKER                 = D:\PROGRA~2\Matlab\sys\perl\win32\bin\perl.exe C:\gnumex\linkmex.pl 
12
->    Link directives: 
13
         LINKFLAGS           = -mno-cygwin -mwindows -LC:\DOCUME~1\ADMINI~1\APPLIC~1\MATHWO~1\MATLAB\R2012a\gnumex 
14
         LINKDEBUGFLAGS      = -g  -Wl,--image-base,0x28000000\n 
15
         LINKFLAGSPOST       =  
16
         Name directive      = -o test_02.mexw32 
17
         File link directive =  
18
         Lib. link directive =  
19
         Rsp file indicator  =  
20
->    Resource Compiler      = D:\PROGRA~2\Matlab\sys\perl\win32\bin\perl.exe C:\gnumex\rccompile.pl --unix -o mexversion.res 
21
->    Resource Linker        =

Evtl. hilft dies jemanden???

von Rolf Magnus (Gast)


Lesenswert?

goldeneyes1987 schrieb:
> ->    COMPILER               = gcc

Also wie vermutet: Du compilierst für den PC, statt - wie du anscheinend 
beabsichtigst - für den AVR.

goldeneyes1987 schrieb:
>          COMPFLAGS           = -c -DMATLAB_MEX_FILE -mno-cygwin 
-D"__AVR_ATmega328P__"

Statt da irgendelche defines reinzupfuschen, wäre es besser, mit -mmcu 
deinen Prozessor anzugeben.

von goldeneyes1987 (Gast)


Lesenswert?

Rolf Magnus schrieb:
> goldeneyes1987 schrieb:
>> ->    COMPILER               = gcc
>
> Also wie vermutet: Du compilierst für den PC, statt - wie du anscheinend
> beabsichtigst - für den AVR.
>
> goldeneyes1987 schrieb:
>>          COMPFLAGS           = -c -DMATLAB_MEX_FILE -mno-cygwin
> -D"__AVR_ATmega328P__"
>
> Statt da irgendelche defines reinzupfuschen, wäre es besser, mit -mmcu
> deinen Prozessor anzugeben.

Klar hast du recht Rolf, aber verwende ich den avr-gcc (mit Pfad) und 
übergebe dem "-mmcu=atmega328p" dann erhalte ich folgende Fehlermeldung:
1
test_02.c:93:22: error: \/simstruc.h: Invalid argument 
2
test_02.c:95: error: expected ';', ',' or ')' before '*' token 
3
test_02.c:105: error: expected ')' before '*' token 
4
test_02.c:143: error: expected ')' before '*' token 
5
test_02.c:153: error: expected ')' before '*' token 
6
test_02.c:160: error: expected ')' before '*' token 
7
test_02.c:165: error: expected ')' before '*' token 
8
test_02.c:171: error: expected ')' before '*' token 
9
test_02.c:179: error: expected ')' before '*' token 
10
test_02.c:195: error: expected ')' before '*' token 
11
test_02.c:199:62: error: \/simulink.c: Invalid argument 
12
 
13
  D:\PROGRA~2\MATLAB\BIN\MEX.PL: Error: Compile of 'test_02.c' failed.

Ich habe mir die simstruc.h angeschaut und herausgefunden das dort 
weitere Matlab spezifische Dateien eingeladen werden wie z.B. die 
Simulink.h , in der eigentlich hauptsächlich Definitionen drin stehen, 
wie auch in allen anderen includierten-Dateien!?!?!
Aber die Fehlermeldung kann ich mir dennoch nicht erklären.
Hat jemand ne Idee?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

goldeneyes1987 schrieb:

> Hat jemand ne Idee?

Schau in test_02.c, Zeile 93, Spalte 22 sowie Zeile 199, Spalte 62.

Pfadtrenner in C ist immer / aber nie \

von spontan (Gast)


Lesenswert?

>test_02.c:93:22: error: \/simstruc.h: Invalid argument

Schau doch erst mal in "test_92.c nach", was da falsches im Programm 
steht. Kann doch nicht soooo schwer sein.

von goldeneyes1987 (Gast)


Angehängte Dateien:

Lesenswert?

Johann L. schrieb:
> Schau in test_02.c, Zeile 93, Spalte 22 sowie Zeile 199, Spalte 62.


In Zeile 93 steht die Include-Anweisung für simstruc.h und in Zeile 199 
die für simulink.h. Datei test_02.c, simstruc.h und simulink.c sind im 
Anhang!

Ich sehe da nichts was mir den Fehler erklären würde.
Aber ich bin auch mehr oder weniger neu auf diesem Gebiet!
Evtl. entdeckt Ihr was??

von (prx) A. K. (prx)


Lesenswert?

Probier mal:
  arguments           =  -IC:\GNUMEX -I\ ...
=>
  arguments           =  -IC:/GNUMEX -I/ ...

von goldeneyes1987 (Gast)


Lesenswert?

A. K. schrieb:
> Probier mal:
>   arguments           =  -IC:\GNUMEX -I\ ...
> =>
>   arguments           =  -IC:/GNUMEX -I/ ...

Srry, aber wo so ich das abändern?

von (prx) A. K. (prx)


Lesenswert?


von goldeneyes1987 (Gast)


Lesenswert?

A. K. schrieb:
> Beitrag "Re: no such instruction 'sei'"

Das Options-File sieht so aus:

1
->    Options file           = C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2012a\mexopts.bat 
2
      MATLAB                 = D:\PROGRA~2\Matlab 
3
->    COMPILER               = avr-gcc 
4
->    Compiler flags: 
5
         COMPFLAGS           =  -c -DMATLAB_MEX_FILE    -mmcu=atmega328p 
6
         OPTIMFLAGS          = -Os 
7
         DEBUGFLAGS          = -g 
8
         arguments           =  
9
         Name switch         = -o 
10
->    Pre-linking commands   =  
11
->    LINKER                 = D:\PROGRA~2\Matlab\sys\perl\win32\bin\perl.exe C:\gnumex\linkmex.pl 
12
->    Link directives: 
13
         LINKFLAGS           =  -mno-cygwin  -mwindows -LC:\DOCUME~1\ADMINI~1\APPLIC~1\MATHWO~1\MATLAB\R2012a\gnumex 
14
         LINKDEBUGFLAGS      = -g  -Wl,--image-base,0x28000000\n 
15
         LINKFLAGSPOST       =  
16
         Name directive      = -o .mexw32 
17
         File link directive =  
18
         Lib. link directive =  
19
         Rsp file indicator  =  
20
->    Resource Compiler      = D:\PROGRA~2\Matlab\sys\perl\win32\bin\perl.exe C:\gnumex\rccompile.pl --unix -o mexversion.res 
21
->    Resource Linker        =

Nachdem ich das ganze auf avr-gcc umgestellt habe is da nix mit 
argruments??

von goldeneyes1987 (Gast)


Lesenswert?

Dadurch das ich ja auf dem avr-gcc umgestiegen bin (Tipp von Rolf) 
erhalte ich ja nicht mehr die Fehlermeldung wie zu begin dieses Threads!

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.