Forum: Compiler & IDEs Eclipse / managed makefile projekt / GDB problem


von Dominique H. (Firma: ti burgdorf) (biker126)


Lesenswert?

hallöchen...

erstmal ein paar "systemdaten" als übersicht:

uC: LPC2368 (ARM7)
GCC Toolchain: YAGARTO
Flash-Tool: openOCD
IDE: Eclipse 3.3 mit CDT (4.0 oder so)

ich hab mir von freeRTOS.org ein "ethernet" beispiel (freeRTOS + uIP) 
für eclipse  gcc  lpc gezogen (link: 
http://www.realtimeengineers.com/temp/FreeRTOS.org_V4.5.0_LPC2368_Eclipse.zip) 
und das läuft auch einwandfrei.
allerdings verwendet das projekt ein klassisches "makefile" was ich 
eigentlich ziemlich mühsam zum warten finde.
W. Holzke hat ja in einem anderen Thread hier 
(Beitrag "GNUARM Eclipse Plugin") ein plug-in für die GNUARM 
toolchain (sollte für YAGARTO hoffentlich auch funktionieren) unter 
eclipse geschrieben, mit dem man "managed makefile projects" erstellen 
kann (d.h. eclipse erstellt ein internes makefile oder so).

ich hab also probiert anhand des folgenden makefiles die 
projekteinstellungen vorzunehmen. das hat offenbar auch soweit geklappt 
als dass das projekt kompiliert werden kann. wenn ich allerdings die 
*.bin datei flashe und mit GDB debuggen will, dann scheinen ganze object 
dateien (bzw. deren code) nicht vorhanden zu sein. man kann dort 
folglich nicht debuggen und das programm läuft auch nicht...

meine frage wär nun, ob mir jmd ein paar tips gegeben könnte wie ich so 
ein "managed makefile" projekt einstellen muss. ich will z.B. kein code 
im "thumb mode" ausführen sondern alles im "arm mode" (weil schneller). 
ich bin mir aber nicht so ganz sicher inwiefern ich die einstellungen 
von diesem makefile übernehmen muss oder nicht...

mfg d. holzwarth

p.s. ich weiss die frage ist n bisl kompliziert. wenn nötig liefer ich 
gern screenshots von meinen aktuellen eclipse einstellungen nach oder so 
:-)

p.p.s vielleicht kann man die frage auch auf folgende reduzieren:
woran kann's liegen, dass in einem *.bin file code-sequenzen (ganze 
files) "fehlen" obwohl die endsprechenden object-files erstellt werden? 
(ich würde mal auf ein linker-problem tippen...)
1
RTOS_SOURCE_DIR=../../../Source
2
DEMO_COMMON_DIR=../../Common/Minimal
3
DEMO_INCLUDE_DIR=../../Common/include
4
UIP_COMMON_DIR=../../Common/ethernet/uIP/uip-1.0/uip
5
6
CC=arm-elf-gcc
7
OBJCOPY=arm-elf-objcopy
8
LDSCRIPT=lpc2368.ld
9
10
LINKER_FLAGS=-mthumb -nostartfiles -Xlinker -oRTOSDemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map
11
12
DEBUG=-g
13
OPTIM=-O1
14
15
16
CFLAGS= $(DEBUG) \
17
    $(OPTIM) \
18
    -T$(LDSCRIPT) \
19
    -I . \
20
    -I $(RTOS_SOURCE_DIR)/include \
21
    -I $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx \
22
    -I $(DEMO_INCLUDE_DIR) \
23
    -I ./webserver \
24
    -I $(UIP_COMMON_DIR) \
25
    -D ROWLEY_LPC23xx \
26
    -D THUMB_INTERWORK \
27
    -mcpu=arm7tdmi \
28
    -D PACK_STRUCT_END=__attribute\(\(packed\)\) \
29
    -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \
30
    -fomit-frame-pointer \
31
    -mthumb-interwork
32
                    
33
THUMB_SOURCE= \
34
    main.c \
35
    ./ParTest/ParTest.c \
36
    ./LCD/portlcd.c \
37
    $(DEMO_COMMON_DIR)/BlockQ.c \
38
    $(DEMO_COMMON_DIR)/blocktim.c \
39
    $(DEMO_COMMON_DIR)/flash.c \
40
    $(DEMO_COMMON_DIR)/integer.c \
41
    $(DEMO_COMMON_DIR)/GenQTest.c \
42
    $(DEMO_COMMON_DIR)/QPeek.c \
43
    $(DEMO_COMMON_DIR)/dynamic.c \
44
    ./webserver/uIP_Task.c \
45
    ./webserver/emac.c \
46
    ./webserver/httpd.c \
47
    ./webserver/httpd-cgi.c \
48
    ./webserver/httpd-fs.c \
49
    ./webserver/http-strings.c \
50
    $(UIP_COMMON_DIR)/uip_arp.c \
51
    $(UIP_COMMON_DIR)/psock.c \
52
    $(UIP_COMMON_DIR)/timer.c \
53
    $(UIP_COMMON_DIR)/uip.c \
54
    $(RTOS_SOURCE_DIR)/list.c \
55
    $(RTOS_SOURCE_DIR)/queue.c \
56
    $(RTOS_SOURCE_DIR)/tasks.c \
57
    $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx/port.c \
58
    $(RTOS_SOURCE_DIR)/portable/MemMang/heap_2.c
59
60
ARM_SOURCE= \
61
    $(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC23xx/portISR.c \
62
    ./webserver/EMAC_ISR.c
63
64
THUMB_OBJS = $(THUMB_SOURCE:.c=.o)
65
ARM_OBJS = $(ARM_SOURCE:.c=.o)
66
67
68
all: RTOSDemo.bin
69
70
RTOSDemo.bin : RTOSDemo.hex
71
  $(OBJCOPY) RTOSDemo.elf -O binary RTOSDemo.bin
72
   
73
RTOSDemo.hex : RTOSDemo.elf
74
  $(OBJCOPY) RTOSDemo.elf -O ihex RTOSDemo.hex
75
76
RTOSDemo.elf : $(THUMB_OBJS) $(ARM_OBJS) boot.s Makefile
77
  $(CC) $(CFLAGS) $(ARM_OBJS) $(THUMB_OBJS) $(LIBS) boot.s $(LINKER_FLAGS) 
78
79
$(THUMB_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h
80
  $(CC) -c $(CFLAGS) -mthumb $< -o $@
81
82
$(ARM_OBJS) : %.o : %.c Makefile FreeRTOSConfig.h
83
  $(CC) -c $(CFLAGS) $< -o $@
84
85
clean :
86
  rm $(THUMB_OBJS)
87
  rm $(ARM_OBJS)
88
  touch Makefile
89
  rm RTOSDemo.elf
90
  rm RTOSDemo.hex

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.