Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по Eclipse, CDT, Zylin embedded CDT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
gte
Снес Yagarto c Eclipse Europe, поставил Yagarto c GALILEO, втянул проект настроил, откомпилировал, загрузил, все, вроде бы, нормально.
Программа работает, на ЖКИ все выводится.

Джитаг МТлинк5, драйвера 3,80с.

Настройки дебагера
Код
target remote localhost:2331

monitor reset
monitor speed auto
monitor endian little
monitor flash device = LPC2368
monitor long 0xffffff60 0x00320100
monitor long 0xfffffd44 0xa0008000
monitor long 0xfffffc20 0xa0000601
monitor sleep 100
monitor long 0xfffffc2c 0x00480a0e
monitor sleep 200
monitor long 0xfffffc30 0x7
monitor sleep 100
monitor long 0xfffffd08 0xa5000401
set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed
symbol-file main.elf
continue

настройки не менял.

Но при попытке запуска на отладку пишет
Код
target remote localhost:2331
Vectors () at Common/src/Startup.S:130
130                    LDR     PC, DAbt_Addr
monitor reset
Resetting target

monitor speed auto
Select auto JTAG speed (65535 kHz)

monitor endian little
Target endianess set to "little endian"

monitor flash device = LPC2368
Select flash device: LPC2368

monitor long 0xffffff60 0x00320100
Writing 0x00320100 @ address 0xFFFFFF60

monitor long 0xfffffd44 0xa0008000
Writing 0xA0008000 @ address 0xFFFFFD44

monitor long 0xfffffc20 0xa0000601
Writing 0xA0000601 @ address 0xFFFFFC20

monitor sleep 100
Sleep 100ms

monitor long 0xfffffc2c 0x00480a0e
Writing 0x00480A0E @ address 0xFFFFFC2C

monitor sleep 200
Sleep 200ms

monitor long 0xfffffc30 0x7
Writing 0x00000007 @ address 0xFFFFFC30

monitor sleep 100
Sleep 100ms

monitor long 0xfffffd08 0xa5000401
Writing 0xA5000401 @ address 0xFFFFFD08

set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed
symbol-file main.elf
continue
Remote connection closed

и вылетает.

Причем, 2 и 3 строчки сообщения бывают разные, может быть какая нибудь подпрограмма

Может драйвера менять на новые? Никто не сталкивался?

И еще. После установки Yagarto пришлось поправить настройки и Makefile, так как
изменилось название программ GCC на arm-none-eabi-ххх.exe.
Это нормально?
обновил драйвер до 4.144b
В логе сервера пишет в конце команд и больше не соединяется до ресета процессора.
Код
WARNING: Unknown  packet received:  "qAttached"

---------пропущено

Sleep 100ms
Writing 0xA5000401 @ address 0xFFFFFD08
Read 4 bytes @ address 0x00000000 (Data = 0xE59F4018)
Starting target CPU...
...Target halted (PC = 0x011B007C)
Reading all registers
ERROR: Read memory error @ address 0x011B0000, word access: Core error.
Connection to debugger closed !

WARNING: Failed to read cacheable memory @ address 0x011B007C
Read 4 bytes @ address 0x011B007C (Data = 0xE59F4018)


В общем, разобрался. сразу после установки последнего Yagarto c GALILEO я повозился с .gdbinit
на предмет запуска JLinkGDBServer, не получилось. Оставил не рабочий .gdbinit, естественно, удалив его упоминание
в строке GDB command file: в закладке "Debugger"
Под рукой не было "железа" и я не проверял работу, а на следующий день об этом уже забыл.
Так дебагер использовал .gdbinit не смотря на пустую строку.
Cам себе создал работу :-), но похоже, я не один. В конференции Сеггера висит подобный вопрос без ответа.
juvf
Цитата(AHTOXA @ May 11 2010, 13:45) *
Ещё раз повторю, попробуйте запустить make с ключом -n, и часть вопросов сразу снимется.
Спасибо помогло. Проект собрал.

Возникла следующая проблема: Пытаюсь установить плагин Zylin Embedded CDT. Получаю ошибку
Код
Some sites could not be found.  See the error log for more detail.
  No repository found at file:/C:/Documents%20and%20Settings/Прог/Мои%20документы/.
  HTTP Proxy Authentication Required: http://download.eclipse.org/technology/epp/packages/galileo/content.xml
    Proxy Authentication Required
  HTTP Proxy Authentication Required: http://download.eclipse.org/eclipse/updates/3.5/content.xml
    Proxy Authentication Required
  HTTP Proxy Authentication Required: http://download.eclipse.org/releases/galileo/content.xml
    Proxy Authentication Required
  HTTP Proxy Authentication Required: http://opensource.zylin.com/zylincdt/content.xml
    Proxy Authentication Required

как заставить Eclipse ходить через proxy с авторизацией? Или может можно как нить сделать локальное зеркало плагина Zylin Embedded CDT и установить из него?
AHTOXA
Цитата(juvf @ May 17 2010, 15:15) *
Пытаюсь установить плагин Zylin Embedded CDT. Получаю ошибку


Тут я вам не советчик. Я никаких плагинов не ставил, всё у меня работало сразу "искаропки" smile.gif
ЗЫ. Eclipse HELIOS (IDE for C/C++ Developers).
juvf
Цитата(AHTOXA @ May 17 2010, 15:56) *
всё у меня работало сразу "искаропки" smile.gif

А как из коробки? Мне нужно с помощью джитага внутрисхемно дебажить код. Нашел инструкцию Отладка программ для MSP430 с помощью Eclipse и GDB
Там первым делом этот плагин надо поставить.
AHTOXA
Это видимо старый вариант, сейчас все нужные плагины уже включены.
Вкратце:
  1. Создаём проект.
  2. Добиваемся чтоб компилился (пишем мейкфайл).
  3. Меню Project-Properties-C/C++ Build-Settings - ставим птички на "Elf parser" и "GNU Elf parser".
  4. Меню Run-Debug configurations
    • Выделяем "C/C++ Application";
    • Давим на "New", даём имя;
    • Давим на "Search project", находим наш скомпилированный elf-файл;
    • На вкладке "Debugger" выбираем "gdbserver debugger"
    • Там же в строку "GDB Debugger" вводим имя дебуггера
    • На закладке connection указываем параметры соединения.
  5. Зашиваем прошивку в камень (можно это делать через отладчик, но для начала так)
  6. Запускаем OpenOCD или msp430-gdbproxy, если речь о MSP430;
  7. нажимаем Run-Debug.
  8. Вроде всёsmile.gif
MegaFPGA
... продолжаю свои попытки подружиться эклипсом:
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. В чем разница ?
Volldemar
Использую SAM-ICE, ягарто, J-LINK GDB Server. Дебаг в эклипсе запустился, по коду шагает отладка (по F5), где включить показывание регистров? Так как закладка "Registers" полностью пустая. Что и где делаю не так? Подскажите плиз!!!
Сергей Борщ
Цитата(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? Распишите подробнее.
Volldemar
Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT smile.gif
Сергей Борщ
Цитата(Volldemar @ May 18 2010, 14:38) *
Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT smile.gif
У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров.
Volldemar
Цитата(Сергей Борщ @ May 18 2010, 14:57) *
У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров.


У меня изначально вкладка регистерс - пустая, пошагово работает, вижу изменение R15 (PC), обведено красным. Что делать, куда копать?
Volldemar
Вот такая ошибка вылазит, в аттаче
что бы это значило?
MegaFPGA
Все равно не получается.
Вот мой мэйк файл:
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
Подправил параметры запуска линовщика и компилятора в мэйке:
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)

И потом зависает.
Volldemar
Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет???
gte
Цитата(Volldemar @ May 20 2010, 16:55) *
Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет???

У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан
C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe,
а elf был в предыдущей версии.
Может Вы поставили поверх предыдущей и в таком варианте не хочет работать.
Volldemar
Цитата(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-

куда копать? в чём проблемка?
gte
Цитата(Volldemar @ May 20 2010, 21:41) *
Проблема была и в предыдущей версии, и в текущей "arm-none-eabi-gdb.exe".

Надеюсь, Java "свежая".
При запуске отладчика с Мт-линк, у меня сбивается, если перед запуском я не выставлю скорость GDB сервера от 100 кГц. Попробуйте, поиграйтесь скоростью соединения.
Volldemar
Цитата(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". Что делать? куда копать? sad.gif
AHTOXA
Цитата(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 тоже покажите.
Volldemar
Использую SAM-ICE и J-Link GDB Server(v4.14b).
Инициализация во вложении на картинке.

Cannot access memory at address 0x2243220 - решил, сам заплужил, не совпадал зашитый бин-файл и отлаживаемый smile.gif

После замены на "monitor soft_reset_halt":

Выдача в консоль:
target remote localhost:2331
0x002015a8 in const5 ()
monitor flash device = AT91SAM9XE512
Select flash device: AT91SAM9XE512

monitor halt
monitor soft_reset_halt
Target does not support this command.
thbreak main
Hardware assisted breakpoint 1 at 0x2010b0: file sam9xe512_test.S, line 11.
continue
Remote connection closed
kill
The program is not being run.
gte
Цитата(MegaFPGA @ May 18 2010, 13:17) *
в окне где должна происходить отладка появляется окно No source available for "main() ".

Обнаружил такую же проблему
No source available for "main() "
при переходе на последнюю версию Yagarto.
Сразу не заметил, так как отлаживал подпрограмму, а на них, кроме самого main(), все работает, правда только с драйвером 3,80с (но это и раньше было).
В интернете полно сообщений о подобной проблеме без ответов. Видимо какое то наложение. Попробую позже поставить на чистую систему.
Подскажите, лежит где нибудь предыдущая версия Yagarto с исправленным багом обработчика прерываний?
Может кто выложить сможет?
Последняя это:
eclipse-cpp-galileo-SR2-win32.zip
yagarto-bu-2.20.1_gcc-4.5.0-c-c++_nl-1.18.0_gdb-7.1_eabi_20100501.exe
yagarto-tools-20091223-setup.exe
IgorKossak
Цитата(gte @ May 27 2010, 01:45) *
Подскажите, лежит где нибудь предыдущая версия Yagarto с исправленным багом обработчика прерываний?

http://sourceforge.net/projects/yagarto/files/
gte
Цитата(IgorKossak @ May 27 2010, 10:56) *

Спасибо. Тогда доп вопрос. У них в каждой сборке рекомендованы определенные версии Eclipse и yagarto-tools.
Не будет ли глюков, если на старую Eclipse Europa я поставлю более новую сборку и, соответственно, другой версией плагина Zylin?
IgorKossak
Цитата(gte @ May 27 2010, 10:28) *
Спасибо. Тогда доп вопрос. У них в каждой сборке рекомендованы определенные версии Eclipse и yagarto-tools.
Не будет ли глюков, если на старую Eclipse Europa я поставлю более новую сборку и, соответственно, другой версией плагина Zylin?

Я Вам дал ссылку на тулчейны, которые никак не связаны со средой проектирования.
Могут поменяться настройки типа вместо arm-elf- вставить arm-none-eabi- и т. д.
Zylin плагин больше ориентирован на отладку, насколько я помню, но и от него мало что зависит, больше от версии OpenOCD и настройки его конфигов.
gte
Цитата(IgorKossak @ May 27 2010, 11:37) *
Zylin плагин больше ориентирован на отладку, насколько я помню, но и от него мало что зависит, больше от версии OpenOCD и настройки его конфигов.

Так проблема, именно, в отладке. По какой то причине при отладке не находится текст main(), при том, что остальные подпрограммы нормально отлаживаются. Проект перед этим нормально отлаживался в ранней сборке.
klen
Цитата(gte @ May 27 2010, 22:28) *
Так проблема, именно, в отладке. По какой то причине при отладке не находится текст main(), при том, что остальные подпрограммы нормально отлаживаются. Проект перед этим нормально отлаживался в ранней сборке.


я к этому по другому отношусь, обычно после компиляции частенько просматриваю че за ассемблер нагенерил компиллер - полезно знаетели, так вот после включения жеских оптимизаций я!! в асме порой этот main ненахожу - работать работает, но оптимизатор код так переколбашивает что концов иногда не видно, про переменные я вообще молчу, рассует по регистрам - отладчик читае DWARF но там тоже не все можно сохранить, шас вот вот новый DWARF4 прикрутят - мож полегче станет.

вот както так, не стоит без разбора все валить на gdb и эклипс.


у меня другая проблема, с gdb 6.8 регистры парсятся, а с пви 7 почемуто нет. Глядя на MI лог видно что с шестой перед работой с процессом еклипс посылает команду - "список регистров", после чего знает че опрашивать чтоб регистры показать, если gdb 7 то не видно чтоб эклипс пытался узнать че за регистры есть у таргета... во такая беда.
мож кто знает кто виноват и че делать?
bureau
Создаю новый проект С++ с внешним make файлом.
Сам make файл:
Цитата
CXX = g++

INC = -I./inc -I$(ROOTSYS)/include
SRC = ./src
OBJ = ./obj
OBJS = $(OBJ)/Global.o $(OBJ)/TELFile.o $(OBJ)/TELAlign.o $(OBJ)/TELTrack.o $(OBJ)/TELFileRaw.o

ROOTLIBS = `root-config --libs` -lMinuit
RUDELIBS = -L/usr/local/lib/ -lrudeconfig

LIBS = $(ROOTLIBS) $(RUDELIBS)

all: $(OBJS) ./TELAna.cxx
$(CXX) -ggdb $(INC) $^ $(LIBS) -o tel

$(OBJ)/%.o: $(SRC)/%.cxx
$(CXX) -ggdb $(INC) -c $< -o $@

В результате компиляции в консоли Eclipse получаю:
Цитата
make all
g++ -ggdb -I./inc -I/include obj/Global.o obj/TELFile.o obj/TELAlign.o obj/TELTrack.o obj/TELFileRaw.o TELAna.cxx `root-config --libs` -lMinuit -L/usr/local/lib/ -lrudeconfig -o tel
/bin/sh: root-config: not found


Как результат не видит $(ROOTSYS) и не распознает кавычек в `root-config --libs` Если я запускаю с консоли этот make файл то все проходит на ура.
В чем может быть проблема?
gte
Цитата(bureau @ May 28 2010, 03:59) *
Как результат не видит $(ROOTSYS) и не распознает кавычек в `root-config --libs` Если я запускаю с консоли этот make файл то все проходит на ура.
В чем может быть проблема?


У меня после установки (W2K) приходилось менять sh.exe и, кажется, make.exe, echo.exe.

Цитата(klen @ May 28 2010, 00:09) *
я к этому по другому отношусь, обычно после компиляции частенько просматриваю че за ассемблер нагенерил компиллер - полезно знаетели, так вот после включения жеских оптимизаций я!! в асме порой этот main ненахожу -

вот както так, не стоит без разбора все валить на gdb и эклипс.

Оптимизации нет, проект работает в железе и отлаживался в другой сборке, правился make касательно изменившегося названия компилятора.
MegaFPGA
Ситуация такая:
Купил Olimex ARM-USB-TINY.
Установил последние эклипс, openocd, yagarto.
Запускаю openocd используя стандартные конфиги для этого джитага и для моего процессора at91sam7s256.
Запускаю Zylin так:
target remote localhost:3333
monitor reset init
monitor sleep 10
monitor halt
load
s

Отладка запускается нормально без ошибок. Но когда нажимаю step in то указатель выполняемой строки кода перемещается как то случайным образом. Иногда нормально по порядку. Иногда перескакивает команды. Иногда просто хаотично скачет причем ни каких ошибок не выдает.
Хелп.
gte
Цитата(MegaFPGA @ May 28 2010, 11:36) *
Установил последние эклипс, openocd, yagarto.

У кого нибудь эта сборка работает без проблем?
MegaFPGA
Поставил уровень оптимизация на 1. Было два. Указатель перестал скакать. Но все равно есть глюки. Не передаются аргументы функций !
bureau
Цитата(gte @ May 28 2010, 09:36) *
У меня после установки (W2K) приходилось менять sh.exe и, кажется, make.exe, echo.exe.

Можно поподробней?
У меня Linux Ubuntu.

Add:
Странно, но проблема решилась сама когда я запустил eclipse с командной строки. До этого запускал его через кнопку запуска. Такое впечатление что eclipse запускалась не под тем ЮЗЕРом под которым нахожусь в системе...
gte
Цитата(bureau @ May 28 2010, 13:14) *
Можно поподробней?
У меня Linux Ubuntu.

Увы, я же написал, что операционка Windows 2000.
IgorKossak
Цитата(gte @ May 28 2010, 10:50) *
У кого нибудь эта сборка работает без проблем?

У меня. А что?
gte
Цитата(IgorKossak @ May 28 2010, 21:40) *
У меня. А что?

Значит есть полное основание переставить операционку и поставить с нуля.
Кстати, стоит на Windows?
IgorKossak
Цитата(gte @ May 28 2010, 21:34) *
Значит есть полное основание переставить операционку и поставить с нуля.
Кстати, стоит на Windows?

Yagarto не может стоять не на Windows. У меня WinXP(SP2 и SP3).
MegaFPGA
Вопрос по компилятору.
Проект собирается нормально когда флаг -О 1 2 или 3. Когда ставлю 0 то выползают ошибки.
Например функция:
CODE
extern inline unsigned int min(unsigned int dValue1, unsigned int dValue2)
{
if (dValue1 < dValue2) {

return dValue1;
}
else {

return dValue2;
}
}


Она находится в файле common.h
Вызывая эту функцию из других файлов получаю ошибку undefined reference to `min'
Если убрать extern inline то выдает ошибку multiple definition хотя это не так.

Хелп.
MegaFPGA
С этой ошибкой разобрался. Просто скопировал перед каждым вызовом тело функции.
Осталось последняя ошибка.
Строка:unsigned int baud_value = ((main_clock*10)/(baud_rate * 16));

undefined reference to `__aeabi_uidiv' lib_AT91SAM7S256.h
Вот тут совсем не понятно.
Сергей Борщ
Цитата(MegaFPGA @ May 31 2010, 10:48) *
Она находится в файле common.h
Вызывая эту функцию из других файлов получаю ошибку undefined reference to `min'
При -O0 встраивание отключено.
Цитата(MegaFPGA @ May 31 2010, 10:48) *
Если убрать extern inline то выдает ошибку multiple definition хотя это не так.
Это действительно так. Убрав inline (extern тут совершенно лишний, скорее нужен static) вы сделали функцию глобальной, а поскольку она находится в заголовочном файле - вы получили по копии функции в каждом файле, о чем и сообщил компилятор. Зачем -O0?
Цитата
undefined reference to `__aeabi_uidiv' lib_AT91SAM7S256.h
Поскольку вы отключили оптимизацию, компилятор должен выполнить все действия на этапе выполнения, т.е. и умножение и деление. А функции деления в библиотеке почему-то нет. Почему нет - это уже вопрос к авторам сборки.
MegaFPGA
-O0 для отладки.
agtsoft
Народ, подскажите, это только у меня или закономерность: JLinkGDBServer.exe иногда вышибает во время отладки... В остальном не жалуюсь smile.gif
Использую Galileo, Keil, J-Link, отлаживаю axf при -O0.
agtsoft
Цитата(agtsoft @ Jun 24 2010, 10:18) *
Народ, подскажите, это только у меня или закономерность: JLinkGDBServer.exe иногда вышибает во время отладки... В остальном не жалуюсь smile.gif
Использую Galileo, Keil, J-Link, отлаживаю axf при -O0.


В логе: Failed to measure CPU clock frequency: second loop count is less than first one!
При этом замечено, что вышибает, когда несколько "неудачныхsmile.gif" бреакпоинтов стоит. Если их убираешь, проходит "на ура"....
AlexMad
Есть вопрос при переходе на Гелиос:

Есть два еклипса (гелиос и галилео).

Воркспейс для гелиоса взял пустой, настроил так же, как и галилео, добавил проект. В Галилео отладка через open-ocd/mt-link идет "на ура", а в Гелиосе идет запуск, можно нажать паузу - камушек остановится, НО в окне кода такая строка: No source available for ""

 

Повторюсь: при тех же настройках в Галилео все отлично работает, более того, это проявляется на двух разных машинах.

ШевченкоПетр
Использую связку FT2232_JTAG + OpenOCD + Eclipse для отладки тестового проекта под STM32F103RBT6.

JTAG c OpenOCD соединяется, при запуске отладки в лог выводиться сообщение
Цитата
Open On-Chip Debugger 0.3.0-in-development (2009-09-05-16:24) Release
$URL: http://svn.berlios.de/svnroot/repos/openoc...k/src/openocd.c $
For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
1000 kHz
jtag_nsrst_delay: 100
jtag_ntrst_delay: 100
Warn : use 'stm32.cpu' as target identifier, not '0'
Info : device: 4 "2232C"
Info : deviceID: 67330064
Info : SerialNumber: FT29304050A
Info : Description: USB <-> Serial Cable A
Info : clock speed 1000 kHz
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
Info : accepting 'gdb' connection from 0
Warn : target was in unknown state when halt was requested
Warn : acknowledgment received, but no packet pending
Info : device id = 0x20036410
Info : flash size = 128kbytes
Info : device id = 0x20036410
Info : flash size = 128kbytes
flash 'stm32x' found at 0x08000000
stm32x mass erase complete
Error: No flash at address 0x00000000

wrote 0 byte from file main.bin in 0.062500s (0.000000 kb/s)
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
requesting target halt and executing a soft reset
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Warn : negative acknowledgment, but no packet pending


Похоже, что не хочет прошивать flash , так как не находит ее по заданному адресу.
Аналогичный лог выводит и при отладке проекта для stm_p103 от Olimex.
В чем может быть причина такого поведения?
AlexMad
Цитата(AlexMad @ Jul 11 2010, 14:35) *
Есть вопрос при переходе на Гелиос:

Есть два еклипса (гелиос и галилео).

Воркспейс для гелиоса взял пустой, настроил так же, как и галилео, добавил проект. В Галилео отладка через open-ocd/mt-link идет "на ура", а в Гелиосе идет запуск, можно нажать паузу - камушек остановится, НО в окне кода такая строка: No source available for ""


Вобщем, решилось достаточно просто: пришлось заново создать проект в гелиосе.


Так что при переходе недостаточно взять чистый воркспейс, вместо импорта старых проектов нужно новые создавать.

ШевченкоПетр
Пытаюсь запустить отладку в Eclipse - пока безуспешно.
Использую JTAG - адаптер на ft2232C, микроконтроллер STM32F103RBT6( 128кб флеш 20кб ОЗУ ) ,

openocd запускаю с конфигурационными файлами -f interface/ftdi_jtag.cfg -f target/stm32.cfg

stm32.cfg cтандартный из директории openocd

содержимое ftdi_jtag.cfg:

Цитата
interface ft2232
ft2232_device_desc "USB <-> Serial Cable A"
ft2232_layout usbjtag
ft2232_vid_pid 0x0403 0x6010


скрипт компоновщика для загрузки в SRAM :

Цитата
MEMORY
{
rom (rx) : ORIGIN = 0x00000000, LENGTH = 128K
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
}
SECTIONS
{
. = 0x00000000; /* From 0x00000000 */
.text : {
*(vectors) /* Vector table */
*(.text) /* Program code */
*(.rodata) /* Read only data */
}>ram
. = 0x20000000; /* From 0x20000000 */

.data : {
*(.data) /* Data memory */
}>ram
.bss : {
*(.bss) /* Zero-filled run time allocate data memory */
}>ram
}


команды отладчика:

Цитата
target remote localhost:3333
monitor halt
monitor load_image out/arm_project.elf
monitor verify_image out/arm_project.elf
thbreak main
continue


в консоль выводит:

Цитата
target remote localhost:3333
0x00000000 in ?? ()
monitor halt
monitor load_image out/arm_project.elf
264 bytes written at address 0x20000000
downloaded 264 bytes in 0.343750s (0.750 kb/s)
monitor verify_image out/arm_project.elf
checksum mismatch - attempting binary compare
Verify operation failed address 0x20000000. Was 0x02 instead of 0x00

Command handler execution failed
in procedure 'verify_image' called at file "command.c", line 650
called at file "command.c", line 361
thbreak main
Hardware assisted breakpoint 1 at 0x20000084
continue
stm32.cpu -- clearing lockup after double fault

Program received signal SIGINT, Interrupt.
0x20000004 in VectorArray ()


Судя по логу верификация дает несовпадение записанного и считанного образа.
Надпись "stm32.cpu -- clearing lockup after double fault" вызывает недоумение, к чему это?

Для загрузки в флеш использовал :

Цитата
target remote localhost:3333
monitor halt
monitor flash probe 0
monitor stm32x mass_erase 0
monitor flash write_bank 0 out/arm_project.elf 0x08000000
monitor reset halt
monitor soft_reset_halt
thbreak main
continue


и подправил соответственно в скрипте компоновщика для секции кода "> rom" , для data и bss "> ram AT>rom"

Лог следующий :

Цитата
target remote localhost:3333
0x00000000 in VectorArray ()
monitor halt
monitor flash probe 0
device id = 0x20036410
flash size = 128kbytes
flash 'stm32x' found at 0x08000000
monitor stm32x mass_erase 0
stm32x mass erase complete
monitor flash write_bank 0 out/arm_project.elf 0x08000000
not enough working area available(requested 16384, free 16336)
stm32.cpu -- clearing lockup after double fault
error executing stm32x flash write algorithm
flash writing failed with error code: 0xfffffc7a
error writing to flash at address 0x08000000 at offset 0x08000000 (-902)
Command handler execution failed
in procedure 'flash' called at file "command.c", line 650
called at file "command.c", line 361
monitor reset halt
JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
target state: halted
target halted due to debug-request, current mode: Handler HardFault
xPSR: 0x00000003 pc: 0x20000004 msp: 0x20004fe0
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x20000108 msp: 0x20005000
thbreak main
Hardware assisted breakpoint 1 at 0xc0
continue
stm32.cpu -- clearing lockup after double fault

Program received signal SIGINT, Interrupt.
0x20000004 in ?? ()


Подскажите в каком направлении копать?
AHTOXA
Вообще-то этот вопрос к Эклипсе практически никак не относится.
Вот мой рабочий скрипт (отладка из flash):
Код
target remote localhost:3333
load
monitor soft_reset_halt
set mem inaccessible-by-default off
compare-sections
tbreak main
continue
ШевченкоПетр
Цитата(AHTOXA @ Aug 12 2010, 15:32) *
Вообще-то этот вопрос к Эклипсе практически никак не относится.
Вот мой рабочий скрипт (отладка из flash):
Код
target remote localhost:3333
load
monitor soft_reset_halt
set mem inaccessible-by-default off
compare-sections
tbreak main
continue


Вопрос не по оболочке Eclipse, но зато в Eclipse все эти инструменты вместе используются.


За скрипт спасибо .


Ошибки выводит те же.

Похоже, что проблемы с железкой, на кварце 8МГц высокий уровень, проскакивают короткие нулевые импульсы частотой 1 - 2 Гц, устройство собрано на макетной плате, разобраться будет непросто.

В документации на STM32 пишут , что у этих кристаллов есть внутренний RC-генератор, можно ли выбросить кварц 8МГц?
AHTOXA
Цитата(ШевченкоПетр @ Aug 13 2010, 18:37) *
В документации на STM32 пишут , что у этих кристаллов есть внутренний RC-генератор, можно ли выбросить кварц 8МГц?

Можно, JTAG замечательно цепляется и без кварца.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.