Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Eclipse RealView J-Link(проблема с отладкой)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
XRuZzz
Инструменты:
Eclipse
CDT
RealView Compiler +plugin к eclipsу
jlink GDB server
Sourcery gdb

Переношу проект из Keil в Eclipse подключил плагин RealView(www.arm.com/eclipse)
В Keil всё прекрасно работает с отладкой.
Скомпилировал проект.
Бинарники и Elf файлы на выходе Keil и Eclipse различаются по содержанию (но размер примерно одинаковый).
Бинарник скомпилированный в eclipse работает.


Но когда запускаем отладку вываливаются сообщения:
warning: Loadable segment "MAPPED_IRQ" outside of ELF segments
warning: Loadable segment "RW_IRAM1" outside of ELF segments

потом отладка запускается и почему то не происходит вызов конструктора который вызывается до main.

И в отладке после того как выходим из инициализации watchdog вылетаем на вызове методов включения leds на адрес 0xfffffff8

вот инициализация GDB
Код
monitor endian little
monitor flash device = LPC1766
monitor flash download = 1
monitor flash breakpoints = 1
monitor speed 1000
monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)


пример логов когда отладка зависает во вложениях


Для начала хочется понять хотя бы где проблема в GDB servere или в компиляции проекта.

вложения
eclipse1 - до улетания по адрессу 0xFFFFFFF8
eclipse2 - после
eclipse2 - настройки GDB
scr4000 - сравнение образов в памяти : слева, который зашил keil до запуска отладки. справа то что зашивает eclipse



Разница во флагах компиляции минимальная
в Eclipse для RealView добавлены только эти опции которых нету в Keil

armcc --debug
--diag_style=ide

armasm --debug
--diag_style=ide

armlink --libpath=RV31\LIB
--diag_style=ide
XRuZzz
разобрался с флагом debug(в keil вместо него использовался -g) но проблема не ушла, терь в eclipse вместо -debug стоит -g)
Может кто знает как подключить openocd через swd к контроллеру LPC1766?

Хотя ситуация немного изменилась(см вложения)
время от времени в консоли появляется сообщение
warning: RMT ERROR : failed to get remote thread list.1
что такое RMT и откуда мы должны получать список потока?

XRuZzz
создал простенькую программку :D ,но проблема не исчезает. Отладка сразу после старта улетает по адресу в котором нет инструкций
Код
#include <string.h>
#include <stdio.h>
#include "lpc17xx.h"
int main(void)
{
    unsigned long i;
    SystemInit();
    LPC_GPIO2->FIODIR = 1 << 12;
    while(1)
    {
        LPC_GPIO2->FIOSET = 1 << 12;
        for (i=1;i<0xFFFFF;i++);
        LPC_GPIO2->FIOCLR = 1 << 12;
        for (i=1;i<0xFFFFF;i++);
    }
}
XRuZzz
тут народ в форуме писал что галочка Reset не работает в дебаге, а в скрипте её где надо прописовать

Код
monitor endian little
monitor flash device = LPC1766
monitor flash download = 1
monitor flash breakpoints = 1
monitor speed 1000
monitor reset 0
monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)

так ?
XRuZzz
у товарища та же проблема http://electronix.ru/forum/lofiversion/ind...hp//t93395.html
AHTOXA
У меня прям сердце кровью обливается, глядя на ваши мучения.
Вот это не оно?
ЗЫ. А почему не возьмёте gcc? С ним-то всё вроде как должно работать нормально.
XRuZzz
Проблема перешла в плоскость Eclipse+arm-none-eabi-gcc+jlinkGDBserver.

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

Поэтому наверно проблема в GDB сервере или клиенте.

Почему не gcc?
1. По заданию руководства
2. на gcc тоже проблема с отладкой
3. Если есть плагин для RealView то он же должен нормально работать. Хотя с плагином следующие проблемы:
отладчик плагина RealVew не запускается;
плагин не обновляется с 3.0 до версии 3.1 пишет, что нужен какой то старый компонент типа eclipse.cdt....groups (3.2)
зато компилятор достаточно новый и выпускается фирмой ARM
XRuZzz
с отладкой маленьких проектов разобрался, нужно было убрать галочку Init regs on start

терь в маленьких проектах для arm-none-eabi-gcc и realview отладка работает. в большом проекте также отладка вылетает как описано в первом посте.

Поэтому пока попробую поковыряться с компоновщиком RealView.

Встречный вопрос: А вы как думаете стоит ли переносить большой проект c RealView на gcc? там же будут грабли ещё хуже этих


вот так выглядят команды инициализации GDB

Код
monitor endian little
monitor flash device = LPC1766
monitor flash download = 1
monitor flash breakpoints = 1
monitor speed auto


а галочки расставлены так как показано в первом посте.
До сих пор не понимаю после какой команды лучше всего делать monitor reset 0 и нужно ли при этом убирать галочку Halt помимо галочки Reset.


Ещё вопросик GDB и Cortex позволяют шагать обратно в отладке как в Visual Studio?
XRuZzz
А кто нить знает например для подключения CMSIS нужно ли указывать библиотеки в настройках компоновщика? или достаточно в исходниках прописать include?
XRuZzz
Цитата(AHTOXA @ Dec 22 2011, 18:31) *
У меня прям сердце кровью обливается, глядя на ваши мучения.
Вот это не оно?
ЗЫ. А почему не возьмёте gcc? С ним-то всё вроде как должно работать нормально.

Попытался установить в адрес 0x4004 откуда должна стартовать программа и получаю на выходе.
armlink : Entry point (0x00004004) points to a Thumb instruction but is not a valid Thumb code pointer.

ещё смущают сообщения: не знаю как от них избавится
warning: Loadable segment "MAPPED_IRQ" outside of ELF segments
warning: Loadable segment "RW_IRAM1" outside of ELF segments
AHTOXA
В Thumb режиме младший бит адреса должен быть установлен в 1.
XRuZzz
Цитата(AHTOXA @ Dec 28 2011, 19:29) *
В Thumb режиме младший бит адреса должен быть установлен в 1.

Так если указать адрес 0x4005 то также вылетаем (хотя я всегда думал что точка входа это 0x4004)
Pavel V.
Бьюсь с похожей проблемой, отладка вроде бы работает, но периодически случаются необъяснимые вылеты. Или, например, первая попытка дебага вылетает, а последующие работают.. И другие чудеса.

Инициализация выглядит следующим образом:

Код
target remote localhost:2331
monitor endian little
monitor flash device = LPC1768
monitor speed 1000
monitor reset
load
monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)
# User mode. The on-chip Flash memory is mapped to address 0.
set *0x400FC040 = (0x00000001)
break main
continue


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