Keil: keine .o-Datei wenn Embedded Assembler benutzt wird (Cortex-M3)

Gast #1637928
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:
1
__asm void vPortClearInterruptMask( void )
2
{
3
  PRESERVE8
4

5
  push { r0 }
6
  mov r0, #0
7
  msr basepri, r0
8
  pop { r0 }
9
  bx r14
10
}
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!
Gast #1639529
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
Persönliche Seite #1645019
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:
1
__asm void vPortClearInterruptMask( void )
2
{
3
  mov r0, #0
4
  msr basepri, r0
5
  bx r14
6
}

--
Marcus

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.