Forum: Compiler & IDEs Build Options zum Erzeugen von Listfiles für den STM32


von Angsthase (Gast)


Lesenswert?

Hallo

ich benutze EMIde zum Entwickeln einer Software für den STM32. Nun 
benötige ich für jedes erzeugte Modul ein Listfile.
In den Build Options habe ich versucht über

-Wa,-adhlns=Out\obj\Release\Listing.lst

ein Listing zu erzeugen, hier wird aber immer das Listing überschrieben 
und nur das Listing des letzen Moduls bleibt übrig

Hat hier jemand eine Lösung?

Danke

von Klaus W. (mfgkw)


Lesenswert?

Wenn du das =Out\obj\Release\Listing.lst weglässt, sollte er auch ein 
Listing erzeugen (wegen -Wa,-adhlns).
Dann vermute ich doch daß er den übersetzten Dateinamen mit einer 
anderen Endung nimmt?

von Programmierer (Gast)


Lesenswert?

Angsthase schrieb:
> Nun benötige ich für jedes erzeugte Modul ein Listfile

Macht das Sinn? Die einzelnen Module (.o und .a Files) werden nicht 1:1 
ins Binary übernommen, sondern je nach Linker-Einstellung zerpflückt, 
umsortiert, Funktionen werden ggf. kombiniert/inlined... Daher sind die 
einzelnen Listings nicht sehr aussagekräftig über das Endergebnis. IMO 
ist ein Disassembly des finalen ELF-Files am "sichersten" und 
unverfänglichsten.

von Angsthase (Gast)


Lesenswert?

Programmierer schrieb:
> IMO
> ist ein Disassembly des finalen ELF-Files am "sichersten" und
> unverfänglichsten.

Danke,
habe es jetzt aus dem .elf File mit
\GNU Tools ARM Embedded\5.3 2016q1\bin\arm-none-eabi-objdump
erzeugt

Ich habe das Problem, das im entstandenen HEX File an 3 Stellen eine 
Pfadangabe hinterlegt ist die ich nicht kenne und wollte nachsehen in 
welchem Modul das passiert.

Ich weiss leider nicht was der Pfad in dem HEX File überhaupt zu suchen 
hat

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Such mal in deinem Sourcecode nach _FILE_

Matthias

von Angsthase (Gast)


Lesenswert?

Μαtthias W. schrieb:
> Such mal in deinem Sourcecode nach _FILE_

Hi,
finde dan sowas

    if (HAL_ADC_Init(&hadc1) != HAL_OK)
    {
        _Error_Handler(_FILE_, _LINE_);
    }

von Angsthase (Gast)


Lesenswert?

habe jetzt überall den
_Error_Handler  auskommentiert und es ist weg

was bewirkt diese Funktion eigentlich ?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Angsthase schrieb:
> habe jetzt überall den
> _Error_Handler  auskommentiert und es ist weg
>
> was bewirkt diese Funktion eigentlich ?

Keine Ahnung. Das Makro
1
__FILE__
 enthält auf jeden Fall die aktuelle Quellcodedatei. Die Funktion 
_Error_Handler wird damit irgendwas anfangen. z.B. Ausgabe auf einer 
Schnittstelle das da jetzt ein Fehler aufgetreten ist.

von Angsthase (Gast)


Lesenswert?

Μαtthias W. schrieb:
> Keine Ahnung. Das Makro__FILE__
>  enthält auf jeden Fall die aktuelle Quellcodedatei.

Auf alle Fälle Danke,

ich hatte das Problem, das meine Firmware bei gleichem Code beim 
Erzeugen auf verschiedenen Rechnern unterschiedliche CRC ergab.

von Johannes S. (Gast)


Lesenswert?

Da gibt es eine längere Abhandlung zu dem Thema:
https://stackoverflow.com/questions/8487986/file-macro-shows-full-path

https://stackoverflow.com/a/53848526
Könnte eine bessere Lösung sein als die Fehlerbehandlung zu entfernen.

von Klaus W. (mfgkw)


Lesenswert?

Die Fehlerbehandlung ist möglicherweise eh tot, wenn es z.B. eine leere 
weak-Funktion ist, die man bei Bedarf mit einer echten eigenen 
überschreibt.

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.