|
|
  |
Вопросы по Eclipse, CDT, Zylin embedded CDT, предлагаю обсуждать тут, может потом FAQ выжмем |
|
|
|
May 18 2010, 09:17
|
Частый гость
 
Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567

|
... продолжаю свои попытки подружиться эклипсом: 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.htmlparport 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. В чем разница ?
Сообщение отредактировал MegaFPGA - May 18 2010, 09:19
|
|
|
|
|
May 18 2010, 11:19
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(MegaFPGA @ May 18 2010, 12:17)  Что это значит ? У меня в качестве параметра указан файл out а в некоторых туториалах указывается файл elf. В чем разница ? Разница в выходных форматах. a.out - устаревший формат с кучей ограничений. Ошибка ваша может быть вызвана тем, что вы компилите проект без отладочной информации. Добавьте в CFLAGS -gdwarf-2 и убедитесь, что в скрипте линкера есть такие секции: CODE /* 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 $@ Цитата(Volldemar @ May 18 2010, 12:31)  Так как закладка "Registers" полностью пустая. А каким плугином пользуетесь для отладки? Что выбираете при создании Debug Configuration? Что указываете на вкладке Debugger? Распишите подробнее.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 18 2010, 12:04
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342

|
Цитата(Сергей Борщ @ May 18 2010, 14:57)  У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров. У меня изначально вкладка регистерс - пустая, пошагово работает, вижу изменение R15 (PC), обведено красным. Что делать, куда копать?
Эскизы прикрепленных изображений
|
|
|
|
|
May 18 2010, 13:14
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342

|
Вот такая ошибка вылазит, в аттаче что бы это значило?
Эскизы прикрепленных изображений
|
|
|
|
|
May 19 2010, 02:31
|
Частый гость
 
Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567

|
Все равно не получается. Вот мой мэйк файл: CODE 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."
скрипт линкера: CODE /*---------------------------------------------------------------------------*/ /*- 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) }
}
Сообщение отредактировал MegaFPGA - May 19 2010, 02:33
|
|
|
|
|
May 19 2010, 05:48
|
Частый гость
 
Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567

|
Подправил параметры запуска линовщика и компилятора в мэйке: CODE # *************************************************************** # * 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) И потом зависает.
|
|
|
|
|
May 20 2010, 16:31
|
Гуру
     
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613

|
Цитата(Volldemar @ May 20 2010, 16:55)  Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет??? У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe, а elf был в предыдущей версии. Может Вы поставили поверх предыдущей и в таком варианте не хочет работать.
|
|
|
|
|
May 20 2010, 17:41
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342

|
Цитата(gte @ May 20 2010, 19:31)  У Вас какая версия 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- куда копать? в чём проблемка?
|
|
|
|
|
May 21 2010, 07:18
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 27-04-09
Из: Украина
Пользователь №: 48 342

|
Цитата(gte @ May 20 2010, 20:53)  Надеюсь, 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". Что делать? куда копать?
Сообщение отредактировал Volldemar - May 21 2010, 07:50
|
|
|
|
|
May 21 2010, 07:48
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Volldemar @ May 21 2010, 13:18)  Код Cannot access memory at address 0x2243220 А что там? По этому адресу? Покажите скрипт инициализации отладчика. Попробуйте добавить в него Код set mem inaccessible-by-default off Цитата(Volldemar @ May 21 2010, 13:18)  Код monitor reset halt Expected an decimal digit (0-9) Это тоже непорядок. Попробуйте поменять на Код monitor soft_reset_halt --- ЗЫ. И конфиги openocd тоже покажите.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|