Datum: 14.05.2008 11:48
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 )
PROJ = main WEBDIR = sample WEBFILE= urom.c INCFIRST=-I./nutbld/include PLATFORM=AT91SAM7X_EK HWDEF+=-D$(PLATFORM) LDSCRIPT=./nut/arch/arm/ldscripts/at91sam7x256_rom.ld MCU=arm7tdmi CRUROM=crurom DEFS = $(HWDEF) INCDIR = ./nut/include TRGT = arm-elf- CC = $(TRGT)gcc CXX = $(TRGT)g++ AR = $(TRGT)ar CP = cp AS = $(TRGT)gcc -x assembler-with-cpp RANLIN = $(TARG)ranlib MCFLAGS = -mcpu=$(MCU) CPFLAGS = $(MCFLAGS) -Os -mthumb-interwork -fomit-frame-pointer -Wall -Werror -Wstrict-prototypes -Wa,-ahlms=$(@:.o=.lst) $(DEFS) $(UCPFLAGS) CXXFLAGS = $(MCFLAGS) -Os -fno-delete-null-pointer-checks -fno-exceptions -fno-rtti -Wall -Wa,-ahlms=$(<F:.cc=.lst) $(DEFS) $(UCPFLAGS) LDFLAGS = $(MCFLAGS) -Wl,-T$(LDSCRIPT),-Map=$(PROJ).map,--relax,--sort-common,--strip-all,--cref -L./nutbld/lib ARFLAGS = rsv ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(@:.o=.lst) $(DEFS) $(UASFLAG) TARG = $(PROJ).hex ITARG = $(PROJ).bin DTARG = $(PROJ).elf BIN = $(TRGT)objcopy BINDIR = ./nut/bin/$(MCU) CPFLAGS = $(MCFLAGS) -Os -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=$(<:.c=.lst) $(DEFS) LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJ).map,--cref,--no-warn-mismatch -L./nutbld/lib ELFCOF = $(BIN) --debugging \ --change-section-address .data-0x800000 \ --change-section-address .bss-0x800000 \ --change-section-address .noinit-0x800000 \ --change-section-address .eeprom-0x810000 BURN=jtagomat BURNMEMORY=FLASHNN BURNFLAGS=-DDEVICE=0x1F0F0F0F -DIMAGE=./$(ITARG) BATCH at91-upl.jom $(BURNMEMORY) SRCS = $(PROJ).c $(WEBFILE) OBJS = $(SRCS:.c=.o) LIBS = ./nutbld/lib/nutinit.o -lnutpro -lnutos -lnutarch -lnutdev -lnutarch -lnutnet -lnutfs -lnutcrt TARG = $(PROJ).hex ifneq (, $(findstring h8300, $(ARCH))) # Libraries specific for H8 port LIBS += -lnutentry -lc -lgcc endif all: $(OBJS) $(TARG) $(ITARG) $(DTARG) $(WEBFILE): $(WEBDIR)/enlogo.gif $(WEBDIR)/entail.gif $(WEBDIR)/index.html $(WEBDIR)/form.html \ $(WEBDIR)/flash/egnite.swf $(WEBDIR)/flash/flash.html $(CRUROM) -r -o$(WEBFILE) $(WEBDIR) %o : %c $(CC) -c $(CPFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@ %o : %cc $(CXX) -c $(CXXFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@ %o : %S $(AS) -c $(ASFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@ %s : %c $(CC) -c $(CPFLAGS) $(INCFIRST) -I$(INCDIR) $(INCLAST) $< -o $@ %elf: $(OBJS) $(CC) $(OBJS) $(LIB) $(LDFLAGS) -o $@ %obj: %elf $(BIN) -O avrobj $< $@ %rom: %elf $(BIN) -O srec $< $@ %eep: %elf $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" -O srec $< $@ %a: $(OBJS) $(AR) $(ARFLAGS) $@ $? %elf: $(OBJS) $(CC) $(OBJS) $(LDFLAGS) -Wl,--start-group $(LIBS) $(ADDLIBS) -Wl,--end-group -o $@ %cof: %elf $(ELFCOF) -O coff-ext-avr $< $@ %hex: %elf $(BIN) -O ihex $< $@ %rom: %elf $(BIN) -O srec $< $@ %bin: %elf $(BIN) -O binary $< $@ %eep: %elf $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex $< $@ burn: $(TARG) $(ITARG) $(BURN) $(BURNFLAGS) install: $(TARG) $(ITARG) $(CP) $(TARG) $(BINDIR)/$(TARG) $(CP) $(ITARG) $(BINDIR)/$(ITARG) clean: -rm -f $(OBJS) -rm -f $(TARG) $(ITARG) $(DTARG) -rm -f $(PROJ).eep -rm -f $(PROJ).obj -rm -f $(PROJ).map -rm -f $(SRCS:.c=.lst) -rm -f $(SRCS:.c=.bak) -rm -f $(SRCS:.c=.i) -rm -f $(WEBFILE) |
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel