www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Keil: keine .o-Datei wenn Embedded Assembler benutzt wird (Cortex-M3)


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich spiele zur Zeit mit dem LPC1768 (Cortex-M3) herum und versuche 
gerade, FreeRTOS zum Laufen zu bringen.

Wenn ich nun die Datei port.c compiliere, bekomme ich weder Warnungen 
noch Fehler, aber leider auch keine .o-Datei.

Das scheint an den Embedded Assembler-Funktionen zu liegen, die z.B. so 
aussehen:
__asm void vPortClearInterruptMask( void )
{
  PRESERVE8

  push { r0 }
  mov r0, #0
  msr basepri, r0
  pop { r0 }
  bx r14
}
Wenn ich diese Funktionen auskommentiere, bekomme ich auch wie gewünscht 
die .o-Datei. Ist allerdings eine einzige dieser Funktionen im Code, 
erhalte ich keine.

Habt Ihr nen Tipp?

Danke!

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, jetzt habe ich die Lösung:

Ich hatte uVision und damit auch den Compiler mit wine unter Linux 
verwendet. Das klappte auch wunderbar, bis eben zu dem Embedded 
Assembler.

Unter Windows funktiert es dann so wie es soll :-)

Viele Grüße
Johannes

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes schrieb:
> __asm void vPortClearInterruptMask( void )
> {
>   PRESERVE8
>
>   push { r0 }
>   mov r0, #0
>   msr basepri, r0
>   pop { r0 }
>   bx r14
> }

Hat nichts mit Deiner eigentlichen Frage zu tun, aber der Code sieht 
sehr eigenartig aus.

Dem Linker wird vorgetäuscht, dass diese Funktion das 8 Byte 
Stackalignment sicherstellen würde, obwohl sie es offensichtlich nicht 
tut. Und das alles ohne jeden Grund, da das Stackalignment hier ohnehin 
egal ist.

Besser:
__asm void vPortClearInterruptMask( void )
{
  mov r0, #0
  msr basepri, r0
  bx r14
}

--
Marcus

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.