|
Breakpoint'ы срабатывают только один раз :(, STM32L+FreeRTOS+Eclipse |
|
|
|
May 13 2013, 06:36
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Добрый день! После долгих мучений, удалось настроить Eclipse+Yagarto и скомпилировать код с использованием FreeRTOS под stm32l. Всё запускается, работает, но: точки останова, установленные в теле подпрограмм, почему-то срабатывают только один раз, хотя сам код выполняется правильно (на пинах PA.8 и PB.14 наблюдаю устойчивую генерацию), если шагать в single step, шагает по программе корректно. Проблема проявляется как при отладке с помощью J-Link (J_Link GDB Server), так и st-link (ST-Link_gdbserver). Код: CODE void Task1(void *pvParameters) { GPIO_InitTypeDef toggle = { (1 << 8), GPIO_Mode_OUT, GPIO_Speed_40MHz, GPIO_OType_PP, GPIO_PuPd_NOPULL};
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); GPIO_Init(GPIOA, &toggle);
while(1) { GPIO_ToggleBits(GPIOA, (1 << 8)); vTaskDelay(10); __asm("NOP"); // здесь установлен breakpoint } }
void Task2(void *pvParameters) { GPIO_InitTypeDef toggle = { (1 << 14), GPIO_Mode_OUT, GPIO_Speed_40MHz, GPIO_OType_PP, GPIO_PuPd_NOPULL};
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); GPIO_Init(GPIOB, &toggle);
while(1) { GPIO_ToggleBits(GPIOB, (1 << 14)); vTaskDelay(5); __asm("NOP"); // здесь установлен breakpoint } }
int main(void) { xTaskCreate( Task1, ( signed char * ) "Task1", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), ( xTaskHandle * ) NULL );
xTaskCreate( Task2, ( signed char * ) "Task2", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), ( xTaskHandle * ) NULL );
vTaskStartScheduler();
return 0; } Initialization Commands отладчика (J-Link): Код monitor speed auto monitor endian little monitor flash device = STM32L151CB monitor flash download = 1 monitor flash breakpoints = 1 monitor reset 0 Вообще очень нестабильная работа с breakpoint'ами - то срабатывают, то не срабатывают, то срабатывают один раз. В чём может быть дело?
Сообщение отредактировал IgorKossak - May 13 2013, 07:06
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
--------------------
Курильщик даташитов со стажем
|
|
|
|
|
 |
Ответов
|
May 17 2013, 07:24
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Цитата(Сергей Борщ @ May 17 2013, 12:32)  Было что-то похожее, но давно и с ARM7TDMI. Как борол - не помню. Какая версия эклипсы? какая версия CDT? Какая версия GDB Hardware debugiing support или как его там? Какой launcher используете в эклипсе для запуска GDB? Пробовали ли второй? Нормально ли работают точки останова в программе без FreeRTOS? Какая версия GDB в вашей сборке Yagarto? Пробовали ли вместо Yagarto использовать Linaro? Уф. Кажется пока все вопросы... P.S. а, да еще - покажите линкерный скрипт. Может быть такое, что вы ставите точки останова по реальным адресам (0x0800....), а программа работает по отраженным(0x0000....)? Eclipse Juno 4.2 SR2 CDT - не разобрался какая версия, но самая свежая Launcher - GDB (DSF) Hardware Debugging Launcher Попробовал второй лаунчер - работает на первый взгляд более стабильно, "одноразовых" брейкпоинтов пока не было при включеной оптимизации -Os. Возможно, проблема была в этом, спасибо! Версия arm-none-eabi-gdb.exe - 7.5.1 Linaro не пробовал, даже не слышал такого слова до этого момента. Скрипт линкера прилагаю. Ещё есть очень надоедливый глюк: при очередном запуске отладки, eclipse как-будто не "подхватывает" сеанс, кнопки старт и стоп не становятся активными, на части отладочных панелей пропадает изображение, помогает только перезапуск eclipse. Цитата(IgorKossak @ May 17 2013, 12:51)  InsolentS, осталось выяснить версию OpenOCD, или что Вы там используете. Из Вашего шаблона выяснить это не удалось. Хотя нет, увидел в первом посте. По поводу ST-Link_gdbserver могу сказать, что мне его так и не удалось нормально запустить. Пользовался OpenOCD 0.6.1, всё пошло нормально. Не думаю, что проблема в gdb-сервере, т.к. поведение абсолютно одинаковое с ST-Link и J-Link, у последнего GDB сервер от SEGGER. У ST-Link_gdbserver есть особенность - нужна версия не выше 1.5.6, после неё attolic добавили защиту от использования их gdb сервера с "инородной" IDE.
--------------------
Курильщик даташитов со стажем
|
|
|
|
|
May 17 2013, 07:47
|

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

|
QUOTE (InsolentS @ May 17 2013, 10:24)  Linaro не пробовал, даже не слышал такого слова до этого момента. Пора попробовать. У них сборки выходят чаще, есть сборки под линух. QUOTE (InsolentS @ May 17 2013, 10:24)  Launcher - GDB (DSF) Hardware Debugging Launcher Попробовал второй лаунчер - работает на первый взгляд более стабильно, "одноразовых" брейкпоинтов пока не было при включеной оптимизации -Os. Возможно, проблема была в этом, спасибо! Я с первым вообще работать не смог - не нашел, где включить отображение регистров в шестнадцатиричном виде. Других претензий не припомню, но эта с этой смириться не смог. Их вообще там можно переключить? Если да - я попробую снова.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 17 2013, 09:23
|

Местный
  
Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897

|
Цитата(Сергей Борщ @ May 17 2013, 13:47)  Их вообще там можно переключить? Если да - я попробую снова. Нет, я тоже не нашёл как переключить и на буржуйских форумах пишут что нельзя. Но, у DSF, внизу, под списком регистров, отображается окошко, где значение регистра представлено во всех форматах, меня это спасало.
--------------------
Курильщик даташитов со стажем
|
|
|
|
Сообщений в этой теме
InsolentS Breakpoint'ы срабатывают только один раз :( May 13 2013, 06:36 InsolentS Для того, чтобы тема не была бесполезной, выкладыв... May 13 2013, 08:06 Golikov A. В эклипсе для андроида и ксалинкса тоже иногда с б... May 13 2013, 18:52 InsolentS Я, наверное, создал тему не в том разделе. Надо бы... May 17 2013, 04:58 DASM Это проблема эклипса или нет ? gdb из консоли нор... May 17 2013, 05:10 InsolentS Цитата(DASM @ May 17 2013, 11:10) Это про... May 17 2013, 05:45  IgorKossak Цитата(InsolentS @ May 17 2013, 10:24) Li... May 17 2013, 07:55  Golikov A. Цитата(InsolentS @ May 17 2013, 11:24) Ещ... May 17 2013, 08:26 IgorKossak InsolentS, осталось выяснить версию OpenOCD, или ч... May 17 2013, 06:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|