www.mikrocontroller.net

Forum: Compiler & IDEs Listfile erzeugung mit GNUARM compiler


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe folgendes Problem:
Ich muss von den zu linkenden dateien listfiles erstellen, dies 
funktioniert jedoch nur bei dem startupcode mit dem Befehl "> xyz.lst" 
welcher ja assembliert wird. Wie lautet der Befehl um bei den .c dateien 
auch listfiles zu erstellen?

hier noch meine makefile:
LS  = flash.ld
AFLAGS  = -ahls -mapcs-32 -o startup.o --defsym FLASH=1

CC      = arm-elf-gcc
LD      = arm-elf-ld -v
AR      = arm-elf-ar
AS      = arm-elf-as
CP      = arm-elf-objcopy
OD      = arm-elf-objdump

CFLAGS  = -I./ -c -fno-common  -mcpu=arm7tdmi -Os

LFLAGS  = -T$(LS)
CPFLAGS = -O ihex

clean:
  -rm startup.lst main.lst startup.o FunctionInterpreter.o 
self_utilities.o lpc2148.o main.o main.out main.hex main.map main.dmp


all: main.out
  @ echo "...copying"
  $(CP) $(CPFLAGS) main.out main.hex
  rm startup.lst startup.o FunctionInterpreter.o self_utilities.o 
lpc2148.o main.o

main.out: FunctionInterpreter.o self_utilities.o lpc2148.ostartup.o 
main.o $(LS)
  @ echo "..linking"
  $(LD) $(LFLAGS) -o main.out startup.o FunctionInterpreter.o 
self_utilities.o lpc2148.o main.o 
"C:\Programme\GNUARM\lib\gcc\arm-elf\4.1.1\libgcc.a" 
"C:\Programme\GNUARM\arm-elf\lib\libc.a"

lpc2148.o: lpc2148.c
  $(CC) $(CFLAGS) lpc2148.c

self_utilities.o: self_utilities.c
  $(CC) $(CFLAGS) self_utilities.c

FunctionInterpreter.o: FunctionInterpreter.c
  $(CC) $(CFLAGS) FunctionInterpreter.c

startup.o: startup.s
  @ echo ".assembling"
  $(AS) $(AFLAGS) startup.s > startup.lst

main.o: main.c
  @ echo ".compiling"
  $(CC) $(CFLAGS) main.c

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann über eine Option für den GNU Assembler gesteuert werden

CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)

Siehe
http://www.gnu.org/software/binutils/manual/gas-2....
http://svnweb.openpcd.org/trunk/openpcd/firmware/s...

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nutze dazu folgende Optionen (vgl. meine WinARM Beispiele):
...
CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)
...
AFLAGS += -Wa,-adhlns=$(<:.S=.lst)
...
Bei AFLAGS beachtenswert: Ich lasse den Assembler nicht direkt aufrufen, 
sondern über das Compiler-Frontent (arm-elf-gcc), daher die Option -Wa, 
die Parameter an den Assembler "durchreicht".

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups, mal wieder zu lahm...

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort, hat super funktioniert.

mfg
Marco

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
gibt es eine möglichkeit in der Listfile auch die benötigte Größe vom
RAM und Flash anzeigen zu lassen?
Aktuell benutzte ich den obigen befehl:

CFLAGS += -Wa,-adhlns=listfiles$(subst $(suffix $<),.lst,$<)

mfg
Limes

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kannst du im Makefile einstellen. Das benötige Tool heisst 
arm-elf-size (bei WinARM dabei). Manual bei (3)

# Tools festlegen
# ...
SIZE=arm-elf-size

# Rest vom Makefile
# ...

# Finale Build-Rule
# z.B.
# - PROJECT kann auch TARGET heissen
# - Namen der Voraussetzungen können anders heissen
$(PROJECT).elf : $(ARM_COBJ) $(ARM_SOBJ) $(THUMB_OBJ) $(CRT0) Makefile
  $(CC) $(CFLAGS) ...
        $(SIZE) -A $(PROJECT).elf

Wenn du die Daten in einer Datei festhalten willst, kannst du mit 
Redirection arbeiten z.B. "make all > makelauf_20070427_1109.txt"

Wenn du ausführliche Infos brauchst, wo welche Variable liegt (DATA oder 
BSS) und wie gross einzelne Variablen sind, kannst du das nm Tool 
benutzen. Manual bei (2). Beim ARM Target heisst das Tool arm-elf-nm. 
Die Bedienung ist analog zur Bedienung beim AVR Target (1)

(1) http://www.mikrocontroller.net/articles/AVR-GCC#Ti... und 
Beitrag "Re: float Berechnung erzeugt Compiler-Fehler??"

(2) GNU Binary Utilities: nm
http://www.gnu.org/software/binutils/manual/html_c...

(3) GNU Binary Utilities: size
http://www.gnu.org/software/binutils/manual/html_c...

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hat geklappt.

mfg
Marco

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.