Listfile erzeugung mit GNUARM compiler

Gast #546051
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
Gast #546073
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".
Gast #549427
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
Persönliche Seite #549468
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#Tipps_.26_Tricks und 
Beitrag "Re: float Berechnung erzeugt Compiler-Fehler??"

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

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

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.