mikrocontroller.net

Forum: Compiler & IDEs attribute


Autor: Konstantin Gottfried (kostik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

void SIG_OUTPUT_COMPARE1A( void ) _attribute_ ( ( signal, naked ) );
void SIG_OUTPUT_COMPARE1A( void )
{
  vPortYieldFromTick();
  asm volatile ( "reti" );
}

die attributes werden vom Compiler hartnäckig ignoriert.
Woran liegt's?
wer kann helfen?

Gruß!!!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
signal und naked zugleich sind IMHO widersprüchlich.

Mit signal weist du den Compiler an einen Prolog/Epilog passend für eine 
Signalroutine zu erzeugen und mit naked weist du ihn an den 
Prolog/Epilog wegzustrippen... Entscheide dich ;-)

Autor: Konstantin Gottfried (kostik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Er ignoriert die Attributes auch wenn sie einzeln sind.

/*
 * Manual context switch.  The first thing we do is save the registers
 * so we can use a naked attribute.
 */
void vPortYield( void ) __attribute__((naked));
void vPortYield( void )
{
  portSAVE_CONTEXT();
  vTaskSwitchContext();
  portRESTORE_CONTEXT();

 // asm volatile ( "l.rfe" );
}


Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Er ignoriert die Attributes auch wenn sie einzeln sind.

Beweise?

Autor: Konstantin Gottfried (kostik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Jorg,
meintest du mit Beweise das?

/var/vob/hajorp/orpsoc/vob/units/orp-gcc/bin/or32-uclinux-gcc -c 
-I/include -DOR1K -Wall -Wstrict-prototypes 
-Werror-implicit-function-declaration -fomit-frame-pointer 
-fno-strength-reduce -O2 -g -pipe -fno-builtin -msoft-mul -msoft-div 
-nostdlib ../portable/port.c
../portable/port.c:57: warning: `naked' attribute directive ignored
../portable/port.c:58: warning: `naked' attribute directive ignored
.
.
.

Gruß

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Compilerversion verwendest du? 'naked' kenne ich für ARM und AVR 
Targets.

Dein Target ist OpenRISC 1000? Ist das naked attribute in diese 
Toolchain überhaupt eingebaut?

http://www.opencores.org/projects.cgi/web/or1k/gnu...

Autor: Konstantin Gottfried (kostik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan wrote:
> Welche Compilerversion verwendest du? 'naked' kenne ich für ARM und AVR
> Targets.
>
> Dein Target ist OpenRISC 1000? Ist das naked attribute in diese
> Toolchain überhaupt eingebaut?
>
> http://www.opencores.org/projects.cgi/web/or1k/gnu...

Wenn nicht, wo kann man es sehen und wie kann man es da einbauen?

Die version ist 2.95.3, das Target ist OpenRISC 1000 bzw. 1200

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das steht vermutlich im Compilermanual, also RTFCM (F = Fine!).

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du es im Manual nicht findest, kann du auch das Developer-Team 
fragen. Per Email direkt oder über die Mailing List oder das Forum...

Mit Version 2.95.3 solltest du dort aber nicht mehr antreten ;-) Unter 
dem aufgeführten Link sind sie beim gcc bereits bei Versionsnummer 3.4.4

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.