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

IAR залипает на брекпоинте.

IAR 8.4 + STLink+STM32F7xx. Если остановить программу на брекпоинте, то она потом не может с него уйти, выполняешь "Go" или "Step"  - остается в той же точке. Приходится снимать брекпоинт,делать шаг и потом брекпоинт восстанавливать .  Если отлаживаешь циклический процесс с несколькими брекпоинтами, да еще в разных модулях, то полная вешалка.  В чем может быть дело?

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


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

9 минут назад, b-volkov сказал:

IAR 8.4 + STLink+STM32F7xx. Если остановить программу на брекпоинте, то она потом не может с него уйти, выполняешь "Go" или "Step"  - остается в той же точке. Приходится снимать брекпоинт,делать шаг и потом брекпоинт восстанавливать .

"Делать шаг" где? В окне ассемблера?

И какой бряк имеется в виду: программный? аппаратный?

И где установлен: во флешь? в ОЗУ?

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


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

2 часа назад, b-volkov сказал:

IAR 8.4 + STLink+STM32F7xx. Если остановить программу на брекпоинте, то она потом не может с него уйти
...
В чем может быть дело?

Это известная проблема, причем проблема ядра АРМа. Вечером попробую поискать ссылки, может найду. На сайте АРМа есть документ, который подтверждает ошибку в модуле отладки, в конференции STM были топики, где служба поддержки это признавала.

У Сеггера есть какой-то обходной путь, при помощи которого они это обходят. Говорят, есть прошивка Сеггера для STLink, которую можно бесплатно скачать и прошить. И якобы можно в случае чего откатится назад. Но я не пробовал.

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


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

5 минут назад, Baser сказал:

Это известная проблема, причем проблема ядра АРМа.

Скорее всего ТС во FreeRTOS отлаживает поэтому и такое поведение.

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


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

1 hour ago, AleksBak said:

Скорее всего ТС во FreeRTOS отлаживает поэтому и такое поведение.

Ну-ка, ну-ка, подробнее, плиз))) Несколько лет плотно работаю с FreeRTOS. Чем это она мешает отладке, а?

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


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

Причина вроде бы понятна: эффект наблюдается только если во время остановки приходили какаи-либо прерывания (в моем случае работали таймера). Похоже, что после возврата из обработчика прерываний программа снова попадает на брекпоинт и останавливается.  Вот только как с этим бороться - все равно не понятно. 

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


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

Проблема в Cortex-M7 devices with core revisions r0p0 or r0p1

Вот ссылки:
Problem with Single Step STMF7
ARM: single stepping Cortex-M7 enters pending exception handler

На сайте АРМа нашел только оглавление, сам документ чего-то не открывается.
ARM Embedded Trace Macrocell CoreSightTM ETMTM M7(TM975) Product Revision r0 - Software Developers Errata Notice Documentation

Решение, как я уже писал, или перепрошивать STLink, или применять J-Link

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


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

19 часов назад, b-volkov сказал:

Причина вроде бы понятна: эффект наблюдается только если во время остановки приходили какаи-либо прерывания (в моем случае работали таймера). Похоже, что после возврата из обработчика прерываний программа снова попадает на брекпоинт и останавливается.  Вот только как с этим бороться - все равно не понятно. 

А что - в вашем IAR-е нет меню с пунктом "STLink\Disable Interrupts When Stepping"? А если попробовать его включить?  :wink:

 

Кроме того: В STM32F4 есть регистры DBGMCU_APB1_FZ/DBGMCU_APB2_FZ, в которых можно выставлять биты остановки используемых таймеров на время HALT-сотояния процессора (на бряке). Чтобы не генерились ненужные IRQ. Думаю - что и в STM32F7 имеется подобный регистр. Читайте мануал!

 

18 часов назад, Baser сказал:

Проблема в Cortex-M7 devices with core revisions r0p0 or r0p1

Вот ссылки:
Problem with Single Step STMF7
ARM: single stepping Cortex-M7 enters pending exception handler

Так как ТС так и не ответил на вопрос: "В каком именно окне отладчика он делает шаг", то не факт, что это та самая проблема. Вангую, что скорее всего он его делает в окне исходника, а это уже быстрее всего не "single stepping".

Я именно поэтому задавал свой первый вопрос.  :unknw:

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


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

50 minutes ago, jcxz said:

А что - в вашем IAR-е нет меню с пунктом "STLink\Disable Interrupts When Stepping"? А если попробовать его включить?  :wink:

 

Пробовал, не работает. Помогает, если до и после предполагаемой точки останова вписать соответственно __disable_irq() и __enable_irq(), но это каждый раз надо править код, если хочешь новый брекпоинт...

Попробую поиграть с регистрами.

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


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

21 час назад, haker_fox сказал:

Ну-ка, ну-ка, подробнее, плиз))) Несколько лет плотно работаю с FreeRTOS. Чем это она мешает отладке, а?

Поведение точно такое же при отладке поведение как ТС и описал.

1 час назад, b-volkov сказал:

Пробовал, не работает. Помогает, если до и после предполагаемой точки останова вписать соответственно __disable_irq() и __enable_irq(), но это каждый раз надо править код, если хочешь новый брекпоинт...

Вы во FreeRTOS отлаживаете?

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


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

так остановите таймер перед остановкой и проверьте. Что тут сложного ?

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


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

4 минуты назад, x893 сказал:

так остановите таймер перед остановкой и проверьте.

Остановить наверно не получится т.к. он скорее всего во FreeRTOS отлаживает (так и не понятен этот момент). А вот настроить отладку на останов (FREEZE) этой периферии можно попробовать.

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


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

1 hour ago, AleksBak said:

А вот настроить отладку на останов (FREEZE) этой периферии можно попробовать.

Так это сразу делается. Что бы грабли не стукали по лбу.

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


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

1 hour ago, AleksBak said:

Остановить наверно не получится т.к. он скорее всего во FreeRTOS отлаживает

Да что вы за эту FreeRTOS так ухватились? Обычная программа. И что значит "во FreeRTOS"? Звучит так, как-будто вы эту систему "ставите".

1 hour ago, AleksBak said:

Поведение точно такое же при отладке поведение как ТС и описал.

Больше похоже на некую таинственную область знаний о ОСРВ. Тут не за неё надо хвататься, а за особенности периферии микроконтроллера. Т.к. я отлаживал различные микроконтроллеры с FreeRTOS, и проблем не было. Сходное поведение будет наблюдаться и с другими ОСРВ, или "одиночной" программой, если они используются с той же самой периферией.

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


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

5 минут назад, haker_fox сказал:

Да что вы за эту FreeRTOS так ухватились? Обычная программа. И что значит "во FreeRTOS"? Звучит так, как-будто вы эту систему "ставите".

Я не ухватился - просто предположил, что может быть вероятнее всего тут судя по симптомам и исходя из доступности/популярности этого.

В прерывании "Главного Таймера" (или как он там называется) происходит переключение задач и опять "возвращаемся"/зацикливаемся в точке останова.

14 минут назад, haker_fox сказал:

Т.к. я отлаживал различные микроконтроллеры с FreeRTOS

А у Вас такого поведения, как у ТС, не было при этом?

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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