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

|
Вопрос по компилятору. Проект собирается нормально когда флаг -О 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 - May 31 2010, 07:55
|
|
|
|
|
May 31 2010, 09:24
|

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

|
Цитата(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 Поскольку вы отключили оптимизацию, компилятор должен выполнить все действия на этапе выполнения, т.е. и умножение и деление. А функции деления в библиотеке почему-то нет. Почему нет - это уже вопрос к авторам сборки.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 24 2010, 06:18
|
Группа: Новичок
Сообщений: 2
Регистрация: 24-06-10
Пользователь №: 58 104

|
Народ, подскажите, это только у меня или закономерность: JLinkGDBServer.exe иногда вышибает во время отладки... В остальном не жалуюсь  Использую Galileo, Keil, J-Link, отлаживаю axf при -O0.
|
|
|
|
|
Jun 24 2010, 07:56
|
Группа: Новичок
Сообщений: 2
Регистрация: 24-06-10
Пользователь №: 58 104

|
Цитата(agtsoft @ Jun 24 2010, 10:18)  Народ, подскажите, это только у меня или закономерность: JLinkGDBServer.exe иногда вышибает во время отладки... В остальном не жалуюсь  Использую Galileo, Keil, J-Link, отлаживаю axf при -O0. В логе: Failed to measure CPU clock frequency: second loop count is less than first one! При этом замечено, что вышибает, когда несколько "неудачных  " бреакпоинтов стоит. Если их убираешь, проходит "на ура"....
|
|
|
|
|
Jul 30 2010, 13:08
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 6-08-07
Пользователь №: 29 593

|
Использую связку 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/BUGS1000 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. В чем может быть причина такого поведения?
|
|
|
|
|
Aug 6 2010, 11:00
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(AlexMad @ Jul 11 2010, 14:35)  Есть вопрос при переходе на Гелиос:
Есть два еклипса (гелиос и галилео).
Воркспейс для гелиоса взял пустой, настроил так же, как и галилео, добавил проект. В Галилео отладка через open-ocd/mt-link идет "на ура", а в Гелиосе идет запуск, можно нажать паузу - камушек остановится, НО в окне кода такая строка: No source available for "" Вобщем, решилось достаточно просто: пришлось заново создать проект в гелиосе. Так что при переходе недостаточно взять чистый воркспейс, вместо импорта старых проектов нужно новые создавать.
|
|
|
|
|
Aug 12 2010, 11:28
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 6-08-07
Пользователь №: 29 593

|
Пытаюсь запустить отладку в 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 ?? () Подскажите в каком направлении копать?
|
|
|
|
|
Aug 13 2010, 12:37
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 6-08-07
Пользователь №: 29 593

|
Цитата(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МГц?
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|