Eclipse / managed makefile projekt / GDB problem

OP (Firma: ti burgdorf) #653234
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren