Ext.-Interrupt Auf AT91SAM7X-EK mit ethernut und gcc

OP #866668
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)

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.