Перейти к содержанию
    

STM32CubeIDE игнорирует точки остановки

Интересный момент:

при первом срабатывании ТО окошко дизассемблера пустое:

image.thumb.png.d1ca53328c7e72bf19f6ffefb728ab00.png

если нажать ран, то появляется код. Может, косяк куба

20 минут назад, jcxz сказал:

Судя по адресам - код выполняется из ОЗУ? Посмотрите какого типа бряки у вас ставит IDE: аппаратные или программные?

 

Да, код выполняется из ОЗУ, у М4 в 157 нет своего флеша. 

Были программные. Поставил аппаратные. Не помогло.

info b
Num     Type           Disp Enb Address    What
1       hw breakpoint  keep y   0x10000170 in main at ../Core/Src/main.c:125
	breakpoint already hit 1 time
2       hw breakpoint  keep y   0x10000126 in main at ../Core/Src/main.c:87
info b
Num     Type           Disp Enb Address    What
1       hw breakpoint  keep y   0x10000170 in main at ../Core/Src/main.c:125
	breakpoint already hit 1 time
2       breakpoint     keep y   0x10000170 in main at ../Core/Src/main.c:125
	breakpoint already hit 1 time
3       breakpoint     keep y   0x10000122 in main at ../Core/Src/main.c:81

 

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Алексей ВМ1 said:

Пытаюсь отладить прогу для сопроцессора М4 с помощью stm32CubeIde в режиме Debug,

В порядке бреда - а как грузится код для сопроцессора? Может он успевает загрузится и стартовать раньше, чем к нему gdb подключается? Тогда понятно почему только loop прерывается - остальной код успевает исполнится раньше.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, xvr said:

Тогда понятно почему только loop прерывается

Это можно проверить, сделав счётчик вне whil(), но инкрементирующийся внутри цикла.

 

Помниться мне, что у СТМ было какое-то руководство по отладке мнопроцессорных МК. Что в нём сказано о процедуре отладки и все ли требования выполнены?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, xvr сказал:

В порядке бреда - а как грузится код для сопроцессора? Может он успевает загрузится и стартовать раньше, чем к нему gdb подключается? Тогда понятно почему только loop прерывается - остальной код успевает исполнится раньше.

 

 

2 часа назад, tonyk_av сказал:

Это можно проверить, сделав счётчик вне whil(), но инкрементирующийся внутри цикла.

 

Помниться мне, что у СТМ было какое-то руководство по отладке мнопроцессорных МК. Что в нём сказано о процедуре отладки и все ли требования выполнены?

Точняк.

https://wiki.st.com/stm32mpu/wiki/Getting_started/STM32MP1_boards/STM32MP157x-DK2/Develop_on_Arm®_Cortex®-M4/Modify,_rebuild_and_reload_a_firmware

In "production mode", the firmware is not break at main. GDB is simply attached to the running target. You can then use all features of the debugger.

 

GDB подключается к уже запущенному процессу. В каком месте - очевидно, зависит от кода, который выполняется до вечного цикла.  Всем спасибо, сам бы не догадался.

 

Поставил задержку в начале main() - нужно не менее 5 сек, после неё можно идти по main.

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Алексей ВМ1 said:

Поставил задержку в начале main() - нужно не менее 5 сек, после неё можно идти по main.

 

Можно сделать ловушку из цикла в начале main.

volatile int trap = 0;

for(;;)
{
	if (trap) break;
}

Ставите точку останова на if (trap), запускаете. Как gdb остановится сбрасываете trap (p trap=0). Всё, можно отлаживать.

Всю эту машинерию можно макросом в gdb оформить

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 05.04.2023 в 23:01, xvr сказал:

Можно сделать ловушку из цикла в начале main.

volatile int trap = 0;

for(;;)
{
	if (trap) break;
}

Ставите точку останова на if (trap), запускаете. Как gdb остановится сбрасываете trap (p trap=0). Всё, можно отлаживать.

 

Благодарю, надежнее, чем просто пауза.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...