реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> GDB + JLink - плохо работает отладка
esaulenka
сообщение May 15 2018, 08:09
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 029
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Здравствуйте, коллеги.

Имеется win10, gnu arm eclipse (нынче gnu mcu eclipse), JLink, STM32F4xx
В комплект gnu arm входят плагин для JLink'а и gdb.

Всегда всё хорошо работало, но сейчас запускаю новый проект, и при запуске отладки указатель стека - нулевой.
Где-то видел рекомендации "записывай руками pc и sp после старта отладчика".

Запись pc так и работает (полностью автоматически, я ничего нигде не настраивал):
Код
Downloading 452 bytes @ address 0x08000000 - Verified OK
...
Verifying flash   [....................] Done.
Writing register (PC = 0x080017b8)
...
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000
R12= 00000000, R13= 00000000, MSP= 00000000, PSP= 00000000
R14(LR) = 00000000, R15(PC) = 080017B8


Но sp автоматически не записывается (и в старом проекте тоже не записывался, всё корректно работало).

В таблице векторов указатель наличествует:
8000000: f8 ff 01 20 b9 17 00 08 5d 17 00 08 5d 17 00 08
но, судя по "Writing register (PC = 0x080017b8)", процессор туда и не смотрит...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 15 2018, 10:58
Сообщение #2


Гуру
******

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



QUOTE (esaulenka @ May 15 2018, 11:09) *
но, судя по "Writing register (PC = 0x080017b8)", процессор туда и не смотрит...
Отладик вроде берет точку старта из elf, куда она попадает из строки ENTRY(адрес) скрипта линкера. Посмотрел внимательнее: а что вас смущает? У вас в векторах записан адрес 0x080017b9, младший бит указывает, что код в Thumb-режиме и как адресный бит не используется. Про указатель стека не знаю.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
esaulenka
сообщение May 15 2018, 11:31
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 029
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Сергей, я, видимо, невнятно написал.
Прыжок на ResetHandler работает хорошо.
А вот дальше без костыля в этом ResetHandler()
Код
    
asm volatile(" LDR r0, =_estack");
asm volatile(" MSR msp, r0");

...отлаживаться неудобно...

Собственно, вопрос: почему оно работало раньше и как это вернуть?


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Timmy
сообщение May 15 2018, 14:16
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(esaulenka @ May 15 2018, 14:31) *
Сергей, я, видимо, невнятно написал.
Прыжок на ResetHandler работает хорошо.
А вот дальше без костыля в этом ResetHandler()
Код
    
asm volatile(" LDR r0, =_estack");
asm volatile(" MSR msp, r0");

...отлаживаться неудобно...

Собственно, вопрос: почему оно работало раньше и как это вернуть?

А зачем голову ломать, добавьте в run/restart commands команду вроде set $sp = *(int*)0x00000000 и наслаждайтесь.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение May 16 2018, 07:22
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 029
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Timmy @ May 15 2018, 17:16) *
А зачем голову ломать, добавьте в run/restart commands команду вроде set $sp = *(int*)0x00000000 и наслаждайтесь.

Работает, спасибо.

Но правильное решение - это галка "Pre-run/Restart reset" на вкладке Startup. И почему я её столько времени не замечал...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th September 2018 - 22:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.00871 секунд с 7
ELECTRONIX ©2004-2016