no such instruction 'sei'

Gast #2675829
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
#2675836
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.
Gast #2675857
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???
Gast #2676995
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?
Gast #2677024
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??
Angehängte Dateien:
Gast #2677150
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??

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