Forum: Mikrocontroller und Digitale Elektronik Ext.-Interrupt Auf AT91SAM7X-EK mit ethernut und gcc


von Proc P. (proc)


Lesenswert?

Vermutlich wird niemand so eine Konstellation haben, aber vielleicht 
ergibt sich doch der eine oder andere Tipp :

Ein selbstgeschriebener, externer Interrupt 
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA]=(unsigned int)ex_int_handler; 
wird korrekt (mit dem Linkerscript elf32-littlearm.lds und 
entsprechendem makefile) ausgeführt.

Verwende ich jedoch ethernut mit dem Linkerscript at91sam7x256_rom.ld 
und unten angefügtem makefile, macht das Hauptprogramm nach Auslösen und 
Ausführen der Interruptroutine danach nichts mehr.

( Bin ganz neu in diesen Dingen und kenne mich mit AIC’s, makefiles, 
Linkerfiles und Memoryremapping nicht aus, aber vielleicht weiß ja doch 
jemand was ich wo wie verändern könnte, damit das Programm ins’ 
ROM/Flash richtig zusammen gelinkt wird und auch nach dem Interrupt zum 
OS/zu main() zurückkehrt )
1
PROJ   = main
2
WEBDIR = sample
3
WEBFILE= urom.c
4
INCFIRST=-I./nutbld/include 
5
PLATFORM=AT91SAM7X_EK
6
HWDEF+=-D$(PLATFORM)
7
LDSCRIPT=./nut/arch/arm/ldscripts/at91sam7x256_rom.ld
8
MCU=arm7tdmi
9
CRUROM=crurom
10
DEFS = $(HWDEF)
11
INCDIR = ./nut/include
12
TRGT   = arm-elf-
13
CC     = $(TRGT)gcc
14
CXX    = $(TRGT)g++
15
AR     = $(TRGT)ar
16
CP     = cp
17
AS     = $(TRGT)gcc -x assembler-with-cpp
18
RANLIN = $(TARG)ranlib
19
MCFLAGS = -mcpu=$(MCU)
20
CPFLAGS = $(MCFLAGS) -Os -mthumb-interwork -fomit-frame-pointer -Wall -Werror -Wstrict-prototypes -Wa,-ahlms=$(@:.o=.lst) $(DEFS) $(UCPFLAGS) 
21
CXXFLAGS = $(MCFLAGS) -Os -fno-delete-null-pointer-checks -fno-exceptions -fno-rtti -Wall -Wa,-ahlms=$(<F:.cc=.lst) $(DEFS) $(UCPFLAGS)
22
23
LDFLAGS = $(MCFLAGS) -Wl,-T$(LDSCRIPT),-Map=$(PROJ).map,--relax,--sort-common,--strip-all,--cref -L./nutbld/lib
24
ARFLAGS = rsv
25
ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(@:.o=.lst) $(DEFS) $(UASFLAG)
26
TARG      = $(PROJ).hex
27
ITARG     = $(PROJ).bin
28
DTARG     = $(PROJ).elf
29
BIN       = $(TRGT)objcopy
30
BINDIR    = ./nut/bin/$(MCU)
31
32
CPFLAGS   = $(MCFLAGS) -Os -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=$(<:.c=.lst) $(DEFS)
33
34
LDFLAGS   = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJ).map,--cref,--no-warn-mismatch -L./nutbld/lib
35
ELFCOF    = $(BIN) --debugging \
36
  --change-section-address .data-0x800000 \
37
  --change-section-address .bss-0x800000 \
38
  --change-section-address .noinit-0x800000 \
39
  --change-section-address .eeprom-0x810000
40
BURN=jtagomat
41
BURNMEMORY=FLASHNN
42
BURNFLAGS=-DDEVICE=0x1F0F0F0F -DIMAGE=./$(ITARG) BATCH at91-upl.jom $(BURNMEMORY)
43
SRCS =  $(PROJ).c $(WEBFILE) 
44
OBJS =  $(SRCS:.c=.o)
45
LIBS =  ./nutbld/lib/nutinit.o -lnutpro -lnutos -lnutarch -lnutdev -lnutarch -lnutnet -lnutfs -lnutcrt
46
TARG =  $(PROJ).hex
47
ifneq (, $(findstring h8300, $(ARCH)))
48
# Libraries specific for H8 port
49
LIBS += -lnutentry -lc -lgcc
50
endif
51
all: $(OBJS) $(TARG) $(ITARG) $(DTARG)
52
$(WEBFILE): $(WEBDIR)/enlogo.gif $(WEBDIR)/entail.gif $(WEBDIR)/index.html $(WEBDIR)/form.html \
53
            $(WEBDIR)/flash/egnite.swf $(WEBDIR)/flash/flash.html
54
  $(CRUROM) -r -o$(WEBFILE) $(WEBDIR)
55
%o : %c
56
  $(CC) -c $(CPFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@
57
%o : %cc
58
  $(CXX) -c $(CXXFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@
59
%o : %S
60
  $(AS) -c $(ASFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@
61
%s : %c
62
  $(CC) -c $(CPFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@
63
%elf: $(OBJS)
64
  $(CC) $(OBJS) $(LIB) $(LDFLAGS) -o $@
65
%obj: %elf
66
  $(BIN) -O avrobj $< $@
67
%rom: %elf
68
  $(BIN) -O srec $< $@
69
%eep: %elf
70
  $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" -O srec $< $@
71
%a: $(OBJS)
72
  $(AR) $(ARFLAGS) $@ $?
73
%elf: $(OBJS)
74
  $(CC) $(OBJS) $(LDFLAGS) -Wl,--start-group $(LIBS) $(ADDLIBS) -Wl,--end-group -o $@
75
%cof: %elf
76
  $(ELFCOF) -O coff-ext-avr $< $@
77
%hex: %elf
78
  $(BIN) -O ihex $< $@
79
%rom: %elf
80
  $(BIN) -O srec $< $@
81
%bin: %elf
82
  $(BIN) -O binary $< $@
83
%eep: %elf
84
  $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex $< $@
85
burn: $(TARG) $(ITARG)
86
  $(BURN) $(BURNFLAGS)
87
install: $(TARG) $(ITARG)
88
  $(CP) $(TARG) $(BINDIR)/$(TARG)
89
  $(CP) $(ITARG) $(BINDIR)/$(ITARG)
90
clean:
91
  -rm -f $(OBJS)
92
  -rm -f $(TARG) $(ITARG) $(DTARG)
93
  -rm -f $(PROJ).eep
94
  -rm -f $(PROJ).obj
95
  -rm -f $(PROJ).map
96
  -rm -f $(SRCS:.c=.lst)
97
  -rm -f $(SRCS:.c=.bak)
98
  -rm -f $(SRCS:.c=.i)
99
  -rm -f $(WEBFILE)

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.