megarazor 0 18 мая, 2010 Опубликовано 18 мая, 2010 (изменено) · Жалоба ... продолжаю свои попытки подружиться эклипсом: 1. Запускаю openocd Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html parport port = 0x378 srst_only srst_pulls_trst srst_gates_jtag srst_open_drain Warn : use 'at91sam7s.cpu' as target identifier, not '0' Info : clock speed 500 kHz Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3) Info : Embedded ICE version 1 Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units 2. Запускаю дебагер. target remote localhost:3333 monitor reset halt JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3) srst pulls trst - can not reset into halted mode. Issuing halt after reset. target state: halted target halted in ARM state due to breakpoint, current mode: Supervisor cpsr: 0x20000053 pc: 0x00000cf8 NOTE! DCC downloads have not been enabled, defaulting to slow memory writes. Type 'help dcc'. NOTE! Severe performance degradation without fast memory access enabled. Type 'help fast'. в окне где должна происходить отладка появляется окно No source available for "main() ". Что это значит ? У меня в качестве параметра указан файл out а в некоторых туториалах указывается файл elf. В чем разница ? Изменено 18 мая, 2010 пользователем MegaFPGA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Использую SAM-ICE, ягарто, J-LINK GDB Server. Дебаг в эклипсе запустился, по коду шагает отладка (по F5), где включить показывание регистров? Так как закладка "Registers" полностью пустая. Что и где делаю не так? Подскажите плиз!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 131 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Что это значит ? У меня в качестве параметра указан файл out а в некоторых туториалах указывается файл elf. В чем разница ?Разница в выходных форматах. a.out - устаревший формат с кучей ограничений. Ошибка ваша может быть вызвана тем, что вы компилите проект без отладочной информации. Добавьте в CFLAGS -gdwarf-2 и убедитесь, что в скрипте линкера есть такие секции: /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } Да, и выводить надо в .elf (a.out не поддерживает дополнительные секции), для этого надо явно указать линкеру выходной файл с расширением .elf: ##Link ELF = $(OUTDIR)/$(PROJECT).elf .... $(ELF): $(OBJ) @echo Linking: $@ $(CC) $(LDFLAGS) $(OBJ) $(LINKONLYOBJECTS) $(LIBS) -o $@ Так как закладка "Registers" полностью пустая.А каким плугином пользуетесь для отладки? Что выбираете при создании Debug Configuration? Что указываете на вкладке Debugger? Распишите подробнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 131 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT :)У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров. У меня изначально вкладка регистерс - пустая, пошагово работает, вижу изменение R15 (PC), обведено красным. Что делать, куда копать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Вот такая ошибка вылазит, в аттаче что бы это значило? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megarazor 0 19 мая, 2010 Опубликовано 19 мая, 2010 (изменено) · Жалоба Все равно не получается. Вот мой мэйк файл: TARGET=AT91SAM7S256 BOARD=AT91SAM7SEK SUBTARGET=UMGPS #TARGET=AT91SAM7A3 #CLASS=HID #MODE=KEYBOARD #CLASS=HID #MODE=MOUSE #CLASS=CDC #REMAP=YES DEBUG=YES LEDS=YES #TRACES=YES TRACES=NO POWER=AUTO #REVISION=REV_A VALIDTARGETS_ARM7 = \ AT91SAM7S321 AT91SAM7S64 AT91SAM7S128 AT91SAM7S256 AT91SAM7S512 \ AT91SAM7SE32 AT91SAM7SE256 AT91SAM7SE512 \ AT91SAM7X128 AT91SAM7X256 AT91SAM7X512 \ AT91SAM7A3 VALIDTARGETS_ARM9 = AT91RM9200 AT91SAM9260 AT91SAM9261 AT91SAM9263 VALIDTARGETS = $(VALIDTARGETS_ARM7) $(VALIDTARGETS_ARM9) #------------------------------------------------------------------------------- # Check target #------------------------------------------------------------------------------- ifndef TARGET $(warning Warning: No target selected, using default target AT91SAM7S64.) TARGET = AT91SAM7S256 endif ifndef SUBTARGET $(warning Warning: No target selected, using default target AT91SAM7S64.) SUBTARGET = UMGPS endif ifeq (,$(filter $(TARGET), $(VALIDTARGETS))) $(error Error: $(TARGET): Unknown target.) endif ifeq (,$(filter $(TARGET), $(VALIDTARGETS_ARM9))) MCPU = arm7tdmi else #todo: check this (must read - no AT91 ARM9 here for tests) MCPU = arm9 endif #------------------------------------------------------------------------------- # Check board #------------------------------------------------------------------------------- ifndef BOARD $(warning Warning: No board selected, using default board AT91SAM7SEK.) BOARD = AT91SAM7SEK endif #------------------------------------------------------------------------------- # Check remap #------------------------------------------------------------------------------- ifndef REMAP REMAP = NO else ifneq ($(REMAP),YES) REMAP = NO endif endif #------------------------------------------------------------------------------- # Check debug #------------------------------------------------------------------------------- ifndef DEBUG DEBUG = NO else ifneq ($(DEBUG),YES) DEBUG = NO endif endif #------------------------------------------------------------------------------- # Check leds #------------------------------------------------------------------------------- ifndef LEDS LEDS = YES else ifneq ($(LEDS),NO) LEDS = YES endif endif #------------------------------------------------------------------------------- # Check traces #------------------------------------------------------------------------------- ifndef TRACES TRACES = YES else ifneq ($(TRACES),NO) TRACES = YES endif endif #------------------------------------------------------------------------------- # Check power #------------------------------------------------------------------------------- ifndef POWER POWER = AUTO else ifneq ($(POWER),BUS) POWER = AUTO endif endif #------------------------------------------------------------------------------- # Check mode #------------------------------------------------------------------------------- ifndef MODE MODE = NO endif #------------------------------------------------------------------------------- # Summary #------------------------------------------------------------------------------- ifeq ($(TARGET),AT91SAM7A3) ifndef REVISION $(warning Revision: REV_B) else $(warning Revision: $(REVISION)) endif endif GCCLIB = C:\Program\ /Files\yagarto\arm-none-eabi\lib GCCLIB2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0 GCCINC = C:\Program\ /Files\yagarto\arm-none-eabi\include GCCINC2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0 CC = arm-none-eabi-gcc LD = $(GCCPATH)arm-none-eabi-ld -v AR = $(GCCPATH)arm-none-eabi-ar AS = $(GCCPATH)arm-none-eabi-as -v CP = $(GCCPATH)arm-none-eabi-objcopy OD = $(GCCPATH)arm-none-eabi-objdump CFLAGS = -I./ -I$(GCCINC) -I$(GCCINC2) -L$(GCCLIB) -L$(GCCLIB2) -c -mcpu=arm7tdmi -O2 \ $(OPTIMIZATION) -D$(TARGET) -D$(SUBTARGET) -D$(BOARD) -gdwarf-2 ifeq ($(LEDS),NO) CFLAGS := $(CFLAGS) -DNOLEDS endif ifeq ($(TRACES),NO) CFLAGS := $(CFLAGS) -DNOTRACES endif AFLAGS = -ahlns -x assembler-with-cpp -D$(TARGET) -D$(SUBTARGET) -I$(GCCINC1) -I$(GCCINC2) \ -L$(GCCLIB) -L$(GCCLIB2) LFLAGS = -L$(GCCLIB) -L$(GCCLIB2) -nostartfiles LFLAGS += -Map=umgps.map -TAT91SAM7S256-ROM.ld -I$(GCCINC1) -I$(GCCINC2) \ --cref --gc-sections --entry=__ENTRY CPFLAGS = -O binary ODFLAGS = -x --syms OBJECTS = Cstartup.o umgps.o timerisr.o timersetup.o blinker.o OBJECTS += isrsupport.o device.o standard.o udp.o um_bot_driver.o OBJECTS += um_sbc_methods.o board.o at91stdio.o syscalls.o um_mb_methods.o CRC.o OBJECTS += um_spi.o um_CC1000.o um_sys_controller.o # make target called by Eclipse (Project -> Clean ...) clean: -rm $(OBJECTS) Cstartup.lst umgps.lst umgps.out umgps.bin umgps.hex umgps.map umgps.dmp #make target called by Eclipse (Project -> Build Project) all: umgps.elf @ echo "...copying" $(CP) $(CPFLAGS) umgps.elf umgps.bin $(OD) $(ODFLAGS) umgps.elf > umgps.dmp umgps.elf: $(OBJECTS) AT91SAM7S256-ROM.ld @ echo "..linking" $(LD) $(LFLAGS) -o umgps.elf $(OBJECTS) Cstartup.o: Cstartup.S @ echo ".assembling $@..." $(CC) -c $(AFLAGS) $< -o $@ umgps.o: um_main.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_main.c -o umgps.o timerisr.o: timerisr.c @ echo ".compiling $@..." $(CC) $(CFLAGS) timerisr.c timersetup.o: timersetup.c @ echo ".compiling $@..." $(CC) $(CFLAGS) timersetup.c isrsupport.o: isrsupport.c @ echo ".compiling $@..." $(CC) $(CFLAGS) isrsupport.c blinker.o: blinker.c @ echo ".compiling $@..." $(CC) $(CFLAGS) blinker.c board.o: board.c @ echo ".compiling $@..." $(CC) $(CFLAGS) board.c device.o: device.c @ echo ".compiling $@..." $(CC) $(CFLAGS) device.c standard.o: standard.c @ echo ".compiling $@..." $(CC) $(CFLAGS) standard.c udp.o: udp.c @ echo ".compiling $@..." $(CC) $(CFLAGS) udp.c um_bot_driver.o: um_bot_driver.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_bot_driver.c um_sbc_methods.o: um_sbc_methods.c @ echo ".compiling" $(CC) $(CFLAGS) um_sbc_methods.c at91stdio.o: at91stdio.c @ echo ".compiling $@..." $(CC) $(CFLAGS) at91stdio.c syscalls.o: syscalls.c @ echo ".compiling $@..." $(CC) $(CFLAGS) syscalls.c um_mb_methods.o: um_mb_methods.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_mb_methods.c CRC.o: CRC.c @ echo ".compiling $@..." $(CC) $(CFLAGS) CRC.c um_spi.o: um_spi.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_spi.c um_CC1000.o: um_CC1000.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_CC1000.c um_sys_controller.o: um_sys_controller.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_sys_controller.c # ******************************************************************************** ************** # FLASH PROGRAMMING # ******************************************************************************** ************** # specify output filename here (must be *.bin file) OCD_TARGET = umgps.bin # specify the directory where openocd executable and configuration files reside OPENOCD_DIR = 'C:\Program Files\OpenOCD\0.4.0\bin\' # specify OpenOCD executable (pp is for the wiggler, ftd2xx is for the USB debuggers) OPENOCD = $(OPENOCD_DIR)openocd.exe # specify OpenOCD configuration file (pick the one for your device) OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-wiggler-flash-program.cfg # program the AT91SAM7S256 internal flash memory program: $(OCD_TARGET) @echo "Flash Programming with OpenOCD..." openocd.exe -f $(OPENOCD_CFG) @echo "Flash Programming Finished." скрипт линкера: /*---------------------------------------------------------------------------*/ /*- ATMEL Microcontroller Software Support - ROUSSET - */ /*---------------------------------------------------------------------------*/ /* The software is delivered "AS IS" without warranty or condition of any */ /* kind, either express, implied or statutory. This includes without */ /* limitation any warranty or condition with respect to merchantability or */ /* fitness for any particular purpose, or against the infringements of */ /* intellectual property rights of others. */ /*---------------------------------------------------------------------------*/ /*- File source : AT91SAM7S_sections_ROM.ldh */ /*- Object : Section-definitions for the Flash workspace */ /* (to be included from the linker-script) */ /*- Compilation flag : None */ /*- */ /*- 1.0 20/Oct/04 JPP : Creation */ /* */ /* Modifications by Martin Thomas (not Atmel) for WinARM */ /* 1.1mt --.---.---- : ramfunc, C++-support, and more */ /* 1.2mt 04.Aug.2006 : split of MEMORY and SECTIONS */ /* support for function- and data-sections (gcc4) */ /* 1.3mt 02.Sep.2006 : added NOLOAD at .bss */ /*---------------------------------------------------------------------------*/ MEMORY { CODE (rx) : ORIGIN = 0x00100000, LENGTH = 256k DATA (rwx) : ORIGIN = 0x00200000, LENGTH = 64k } /* __FIRST_IN_RAM = ORIGIN(DATA); __TOP_STACK = ORIGIN(DATA) + LENGTH(DATA); */ /* Section Definitions */ SECTIONS { /* first section is .text which is used for code */ . = ORIGIN(CODE); .text : { KEEP(*(.vectorg)) . = ALIGN(4); KEEP(*(.init)) *(.text .text.*) /* remaining code */ *(.gnu.linkonce.t.*) *(.glue_7) *(.glue_7t) *(.gcc_except_table) *(.rodata) /* read-only data (constants) */ *(.rodata.*) *(.gnu.linkonce.r.*) . = ALIGN(4); } >CODE . = ALIGN(4); /* .ctors .dtors are used for c++ constructors/destructors */ .ctors : { PROVIDE(__ctors_start__ = .); KEEP(*(SORT(.ctors.*))) KEEP(*(.ctors)) PROVIDE(__ctors_end__ = .); } >CODE .dtors : { PROVIDE(__dtors_start__ = .); KEEP(*(SORT(.dtors.*))) KEEP(*(.dtors)) PROVIDE(__dtors_end__ = .); } >CODE . = ALIGN(4); _etext = . ; PROVIDE (etext = .); /* .data section which is used for initialized data */ .data : AT (_etext) { _data = . ; __data_start = .; KEEP(*(.vectmapped)) . = ALIGN(4); *(.fastrun .fastrun.*) . = ALIGN(4); SORT(CONSTRUCTORS) . = ALIGN(4); *(.data) *(.data.*) *(.gnu.linkonce.d.*) . = ALIGN(4); } >DATA . = ALIGN(4); _edata = . ; PROVIDE (edata = .); /* .bss section which is used for uninitialized data */ .bss (NOLOAD) : { __bss_start = . ; __bss_start__ = . ; *(.bss) *(.bss.*) *(.gnu.linkonce.b.*) *(COMMON) . = ALIGN(4); } >DATA . = ALIGN(4); __bss_end__ = . ; _end = .; PROVIDE (end = .); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } } Изменено 19 мая, 2010 пользователем MegaFPGA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megarazor 0 19 мая, 2010 Опубликовано 19 мая, 2010 · Жалоба Подправил параметры запуска линовщика и компилятора в мэйке: # *************************************************************** # * Makefile for Atmel AT91SAM7S256 - flash execution * # * * # * * # * James P Lynch September 3, 2006 * # *************************************************************** #NAME = umgps include mt_defs.mk VALIDTARGETS_ARM7 = \ AT91SAM7S321 AT91SAM7S64 AT91SAM7S128 AT91SAM7S256 AT91SAM7S512 \ AT91SAM7SE32 AT91SAM7SE256 AT91SAM7SE512 \ AT91SAM7X128 AT91SAM7X256 AT91SAM7X512 \ AT91SAM7A3 VALIDTARGETS_ARM9 = AT91RM9200 AT91SAM9260 AT91SAM9261 AT91SAM9263 VALIDTARGETS = $(VALIDTARGETS_ARM7) $(VALIDTARGETS_ARM9) #------------------------------------------------------------------------------- # Check parameters #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Check target #------------------------------------------------------------------------------- ifndef TARGET $(warning Warning: No target selected, using default target AT91SAM7S64.) TARGET = AT91SAM7S256 endif ifndef SUBTARGET $(warning Warning: No target selected, using default target AT91SAM7S64.) SUBTARGET = UMGPS endif ifeq (,$(filter $(TARGET), $(VALIDTARGETS))) $(error Error: $(TARGET): Unknown target.) endif ifeq (,$(filter $(TARGET), $(VALIDTARGETS_ARM9))) MCPU = arm7tdmi else #todo: check this (must read - no AT91 ARM9 here for tests) MCPU = arm9 endif #------------------------------------------------------------------------------- # Check board #------------------------------------------------------------------------------- ifndef BOARD $(warning Warning: No board selected, using default board AT91SAM7SEK.) BOARD = AT91SAM7SEK endif #------------------------------------------------------------------------------- # Check class #------------------------------------------------------------------------------- #ifndef CLASS #$(warning Warning: No class selected, using default enumeration class.) #CLASS = ENUM #endif #------------------------------------------------------------------------------- # Check remap #------------------------------------------------------------------------------- ifndef REMAP REMAP = NO else ifneq ($(REMAP),YES) REMAP = NO endif endif #------------------------------------------------------------------------------- # Check debug #------------------------------------------------------------------------------- ifndef DEBUG DEBUG = NO else ifneq ($(DEBUG),YES) DEBUG = NO endif endif #------------------------------------------------------------------------------- # Check leds #------------------------------------------------------------------------------- ifndef LEDS LEDS = YES else ifneq ($(LEDS),NO) LEDS = YES endif endif #------------------------------------------------------------------------------- # Check traces #------------------------------------------------------------------------------- ifndef TRACES TRACES = YES else ifneq ($(TRACES),NO) TRACES = YES endif endif #------------------------------------------------------------------------------- # Check power #------------------------------------------------------------------------------- ifndef POWER POWER = AUTO else ifneq ($(POWER),BUS) POWER = AUTO endif endif #------------------------------------------------------------------------------- # Check mode #------------------------------------------------------------------------------- ifndef MODE MODE = NO endif #------------------------------------------------------------------------------- # Summary #------------------------------------------------------------------------------- #$(warning Target:$(TARGET)/$(MCPU) Board:$(BOARD)) #$(warning Class:$(CLASS) Mode:$(MODE) Power:$(POWER)) #$(warning Remap:$(REMAP)) #$(warning Debug:$(DEBUG) LEDs:$(LEDS) Traces:$(TRACES)) ifeq ($(TARGET),AT91SAM7A3) ifndef REVISION $(warning Revision: REV_B) else $(warning Revision: $(REVISION)) endif endif GCCLIB = C:\Program\ /Files\yagarto\arm-none-eabi\lib GCCLIB2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0 GCCINC = C:\Program\ /Files\yagarto\arm-none-eabi\include GCCINC2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0 CC = arm-none-eabi-gcc LD = arm-none-eabi-ld -v AR = arm-none-eabi-ar AS = arm-none-eabi-as -v CP = arm-none-eabi-objcopy OD = arm-none-eabi-objdump #CFLAGS1 = -I./ -I$(GCCINC) -I$(GCCLIB) -c -fno-common -mthumb-interwork -O2 -g #CFLAGS = -I./ -I$(GCCINC) -I$(GCCLIB) -c -fno-common -mthumb -mthumb-interwork -O2 -g #CFLAGS1 = -I./ -I$(GCCINC) -I$(GCCINC2) -c -fno-common -O2 CFLAGS = -I./ -I$(GCCINC) -I$(GCCINC2) -L$(GCCLIB) -L$(GCCLIB2) -c -mcpu=arm7tdmi -O2 $(OPTIMIZATION) -D$(TARGET) -D$(SUBTARGET) -D$(BOARD) -gdwarf-2 CFLAGS += -mthumb-interwork CFLAGS += -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=$(<:.c=.lst) ifeq ($(LEDS),NO) CFLAGS := $(CFLAGS) -DNOLEDS endif ifeq ($(TRACES),NO) CFLAGS := $(CFLAGS) -DNOTRACES endif #ifeq ($(POWER),BUS) #CFLAGS := $(CFLAGS) -DUSB_BUS_POWERED #endif #ifneq ($(MODE),NO) #CFLAGS := $(CFLAGS) -D$(MODE) #endif #CFLAGS = -I./ -c -fno-common -O0 -g #AFLAGS = -ahlns -mapcs-32 -D$(TARGET) -o Cstartup.o AFLAGS = -ahlns -gdwarf-2 -x assembler-with-cpp -D$(TARGET) -D$(SUBTARGET) -I$(GCCINC1) -I$(GCCINC2) -L$(GCCLIB) -L$(GCCLIB2) #LFLAGS = -Map umgps.map -Tdemo_at91sam7_blink_flash.cmd LFLAGS = -L$(GCCLIB) -L$(GCCLIB2) -nostartfiles LFLAGS += -Map=umgps.map -TAT91SAM7S256-ROM.ld -I$(GCCINC1) -I$(GCCINC2) --cref --gc-sections --entry=__ENTRY CPFLAGS = -O binary ODFLAGS = -x --syms OBJECTS = Cstartup.o umgps.o timerisr.o timersetup.o blinker.o OBJECTS += isrsupport.o device.o standard.o udp.o um_bot_driver.o OBJECTS += um_sbc_methods.o board.o at91stdio.o syscalls.o um_mb_methods.o CRC.o OBJECTS += um_spi.o um_CC1000.o um_sys_controller.o # make target called by Eclipse (Project -> Clean ...) clean: -rm $(OBJECTS) Cstartup.lst umgps.lst umgps.out umgps.elf umgps.bin umgps.hex umgps.map umgps.dmp #make target called by Eclipse (Project -> Build Project) all: umgps.elf @ echo "...copying" $(CP) $(CPFLAGS) umgps.elf umgps.bin $(OD) $(ODFLAGS) umgps.elf > umgps.dmp umgps.elf: $(OBJECTS) AT91SAM7S256-ROM.ld @ echo "..linking" $(LD) $(LFLAGS) -o umgps.elf $(OBJECTS) # $(LD) $(LFLAGS) -o umgps.out $(OBJECTS) $(GCCLIB2)libgcc.a # $(LD) $(LFLAGS) -o umgps.out $(OBJECTS) -nostartfiles Cstartup.o: Cstartup.S @ echo ".assembling $@..." $(CC) -c $(AFLAGS) $< -o $@ #$(CC) $(CFLAGS) -Wa -ahlns Cstartup.s -o Cstartup.o umgps.o: um_main.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_main.c -o umgps.o timerisr.o: timerisr.c @ echo ".compiling $@..." $(CC) $(CFLAGS) timerisr.c #Cstartup_SAM7.o: Cstartup_SAM7.c # @ echo ".compiling $@..." # $(CC) $(CFLAGS) Cstartup_SAM7.c timersetup.o: timersetup.c @ echo ".compiling $@..." $(CC) $(CFLAGS) timersetup.c isrsupport.o: isrsupport.c @ echo ".compiling $@..." # $(CC) $(CFLAGS1) isrsupport.c $(CC) $(CFLAGS) isrsupport.c blinker.o: blinker.c @ echo ".compiling $@..." $(CC) $(CFLAGS) blinker.c board.o: board.c @ echo ".compiling $@..." $(CC) $(CFLAGS) board.c device.o: device.c @ echo ".compiling $@..." $(CC) $(CFLAGS) device.c standard.o: standard.c @ echo ".compiling $@..." $(CC) $(CFLAGS) standard.c udp.o: udp.c @ echo ".compiling $@..." $(CC) $(CFLAGS) udp.c um_bot_driver.o: um_bot_driver.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_bot_driver.c um_sbc_methods.o: um_sbc_methods.c @ echo ".compiling" $(CC) $(CFLAGS) um_sbc_methods.c at91stdio.o: at91stdio.c @ echo ".compiling $@..." $(CC) $(CFLAGS) at91stdio.c syscalls.o: syscalls.c @ echo ".compiling $@..." $(CC) $(CFLAGS) syscalls.c um_mb_methods.o: um_mb_methods.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_mb_methods.c CRC.o: CRC.c @ echo ".compiling $@..." $(CC) $(CFLAGS) CRC.c um_spi.o: um_spi.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_spi.c um_CC1000.o: um_CC1000.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_CC1000.c um_sys_controller.o: um_sys_controller.c @ echo ".compiling $@..." $(CC) $(CFLAGS) um_sys_controller.c # ******************************************************************************** ************** # FLASH PROGRAMMING (using OpenOCD and Amontec JTAGKey) # # Alternate make target for flash programming only # # You must create a special Eclipse make target (program) to run this part of the makefile # (Project -> Create Make Target... then set the Target Name and Make Target to "program") # # OpenOCD is run in "batch" mode with a special configuration file and a script file containing # the flash commands. When flash programming completes, OpenOCD terminates. # # Note that the make file below creates the script file of flash commands "on the fly" # # Programmers: Martin Thomas, Joseph M Dupre, James P Lynch # ******************************************************************************** ************** # specify output filename here (must be *.bin file) OCD_TARGET = umgps.bin # specify the directory where openocd executable resides (openocd-ftd2xx.exe or openocd-pp.exe) OPENOCD_DIR = 'c:\Program Files\openocd-2006re93\bin\' # specify OpenOCD executable (pp is for the wiggler, ftd2xx is for the USB debugger) #OPENOCD = $(OPENOCD_DIR)openocd-pp.exe OPENOCD = openocd-pp #OPENOCD = $(OPENOCD_DIR)openocd-ftd2xx.exe # specify OpenOCD configuration file (pick the one for your device) #OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-wiggler-flash-program.cfg OPENOCD_CFG = at91sam7s256-wiggler-flash-program.cfg #OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-jtagkey-flash-program.cfg #OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-armusbocd-flash-program.cfg # specify the name and folder of the flash programming script file OPENOCD_SCRIPT = script.ocd # program the AT91SAM7S256 internal flash memory program: $(OCD_TARGET) @echo "Preparing OpenOCD script..." @cmd /c 'echo wait_halt > $(OPENOCD_SCRIPT)' @cmd /c 'echo armv4_5 core_state arm >> $(OPENOCD_SCRIPT)' @cmd /c 'echo flash write 0 $(OCD_TARGET) 0x0 >> $(OPENOCD_SCRIPT)' @cmd /c 'echo mww 0xfffffd08 0xa5000401 >> $(OPENOCD_SCRIPT)' @cmd /c 'echo reset >> $(OPENOCD_SCRIPT)' @cmd /c 'echo shutdown >> $(OPENOCD_SCRIPT)' @echo "Flash Programming with OpenOCD..." $(OPENOCD) -f $(OPENOCD_CFG) @echo "Flash Programming Finished." Отладка запустилась ! Но работает не нормально. Жму Ф5 несколько раз и вот что выдет консоль: Warn : stepi ignored. GDB will now fetch the register state from the target. Error: address + size wrapped(0xfffffffe, 0x00000004) Error: address + size wrapped(0xfffffffe, 0x00000004) Error: address + size wrapped(0xfffffffe, 0x00000004) Error: address + size wrapped(0xfffffffe, 0x00000004) Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2) Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2) Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2) Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2) Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2) Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2) И потом зависает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет??? У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe, а elf был в предыдущей версии. Может Вы поставили поверх предыдущей и в таком варианте не хочет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe, а elf был в предыдущей версии. Может Вы поставили поверх предыдущей и в таком варианте не хочет работать. Проблема была и в предыдущей версии, и в текущей "arm-none-eabi-gdb.exe". Перекомпиляция проекта производилась и до, и после, т.е. elf-файл был адекватен версии gdb. Новая версия ягарто ставилась поверху, но в мейк-файле всё это учитывалось: #CROSS_COMPILE= arm-elf- CROSS_COMPILE= arm-none-eabi- куда копать? в чём проблемка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба Проблема была и в предыдущей версии, и в текущей "arm-none-eabi-gdb.exe". Надеюсь, Java "свежая". При запуске отладчика с Мт-линк, у меня сбивается, если перед запуском я не выставлю скорость GDB сервера от 100 кГц. Попробуйте, поиграйтесь скоростью соединения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ur5cuj 0 21 мая, 2010 Опубликовано 21 мая, 2010 (изменено) · Жалоба Надеюсь, Java "свежая". При запуске отладчика с Мт-линк, у меня сбивается, если перед запуском я не выставлю скорость GDB сервера от 100 кГц. Попробуйте, поиграйтесь скоростью соединения. ява свежая: "java version "1.6.0_20"" Вот что выводит в консоль: target remote localhost:2331 0x0020089c in ?? () monitor flash device = AT91SAM9XE512 Select flash device: AT91SAM9XE512 monitor halt monitor reset halt Expected an decimal digit (0-9) thbreak main Hardware assisted breakpoint 1 at 0x2010b0: file sam9xe512_test.S, line 11. continue Temporary breakpoint 1, main () at sam9xe512_test.S:11 11 LDR R1,=0x46 Скорость соединения менял, не влияет. Всё так же нет отображения во вкладке "Registers". Что делать? куда копать? :( Изменено 21 мая, 2010 пользователем Volldemar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Cannot access memory at address 0x2243220 А что там? По этому адресу? Покажите скрипт инициализации отладчика. Попробуйте добавить в него set mem inaccessible-by-default off monitor reset halt Expected an decimal digit (0-9) Это тоже непорядок. Попробуйте поменять на monitor soft_reset_halt --- ЗЫ. И конфиги openocd тоже покажите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться