Перейти к содержанию
    

Вопросы по Eclipse, CDT, Zylin embedded CDT

... продолжаю свои попытки подружиться эклипсом:

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. В чем разница ?

Изменено пользователем MegaFPGA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую SAM-ICE, ягарто, J-LINK GDB Server. Дебаг в эклипсе запустился, по коду шагает отладка (по F5), где включить показывание регистров? Так как закладка "Registers" полностью пустая. Что и где делаю не так? Подскажите плиз!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что это значит ? У меня в качестве параметра указан файл 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? Распишите подробнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT :)
У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров.

 

У меня изначально вкладка регистерс - пустая, пошагово работает, вижу изменение R15 (PC), обведено красным. Что делать, куда копать?

post-48342-1274184252_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все равно не получается.

Вот мой мэйк файл:

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) }

}

Изменено пользователем MegaFPGA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подправил параметры запуска линовщика и компилятора в мэйке:

# ***************************************************************
# *     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)

 

И потом зависает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет???

У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан

C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe,

а elf был в предыдущей версии.

Может Вы поставили поверх предыдущей и в таком варианте не хочет работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Вас какая версия 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-

 

куда копать? в чём проблемка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема была и в предыдущей версии, и в текущей "arm-none-eabi-gdb.exe".

Надеюсь, Java "свежая".

При запуске отладчика с Мт-линк, у меня сбивается, если перед запуском я не выставлю скорость GDB сервера от 100 кГц. Попробуйте, поиграйтесь скоростью соединения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надеюсь, 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 тоже покажите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...