b-volkov 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба IAR 8.4 + STLink+STM32F7xx. Если остановить программу на брекпоинте, то она потом не может с него уйти, выполняешь "Go" или "Step" - остается в той же точке. Приходится снимать брекпоинт,делать шаг и потом брекпоинт восстанавливать . Если отлаживаешь циклический процесс с несколькими брекпоинтами, да еще в разных модулях, то полная вешалка. В чем может быть дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 9 минут назад, b-volkov сказал: IAR 8.4 + STLink+STM32F7xx. Если остановить программу на брекпоинте, то она потом не может с него уйти, выполняешь "Go" или "Step" - остается в той же точке. Приходится снимать брекпоинт,делать шаг и потом брекпоинт восстанавливать . "Делать шаг" где? В окне ассемблера? И какой бряк имеется в виду: программный? аппаратный? И где установлен: во флешь? в ОЗУ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 2 часа назад, b-volkov сказал: IAR 8.4 + STLink+STM32F7xx. Если остановить программу на брекпоинте, то она потом не может с него уйти ... В чем может быть дело? Это известная проблема, причем проблема ядра АРМа. Вечером попробую поискать ссылки, может найду. На сайте АРМа есть документ, который подтверждает ошибку в модуле отладки, в конференции STM были топики, где служба поддержки это признавала. У Сеггера есть какой-то обходной путь, при помощи которого они это обходят. Говорят, есть прошивка Сеггера для STLink, которую можно бесплатно скачать и прошить. И якобы можно в случае чего откатится назад. Но я не пробовал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 5 минут назад, Baser сказал: Это известная проблема, причем проблема ядра АРМа. Скорее всего ТС во FreeRTOS отлаживает поэтому и такое поведение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба 1 hour ago, AleksBak said: Скорее всего ТС во FreeRTOS отлаживает поэтому и такое поведение. Ну-ка, ну-ка, подробнее, плиз))) Несколько лет плотно работаю с FreeRTOS. Чем это она мешает отладке, а? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
b-volkov 0 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Причина вроде бы понятна: эффект наблюдается только если во время остановки приходили какаи-либо прерывания (в моем случае работали таймера). Похоже, что после возврата из обработчика прерываний программа снова попадает на брекпоинт и останавливается. Вот только как с этим бороться - все равно не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 22 сентября, 2020 Опубликовано 22 сентября, 2020 · Жалоба Проблема в Cortex-M7 devices with core revisions r0p0 or r0p1 Вот ссылки:Problem with Single Step STMF7ARM: 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 19 часов назад, b-volkov сказал: Причина вроде бы понятна: эффект наблюдается только если во время остановки приходили какаи-либо прерывания (в моем случае работали таймера). Похоже, что после возврата из обработчика прерываний программа снова попадает на брекпоинт и останавливается. Вот только как с этим бороться - все равно не понятно. А что - в вашем IAR-е нет меню с пунктом "STLink\Disable Interrupts When Stepping"? А если попробовать его включить? Кроме того: В 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 STMF7ARM: single stepping Cortex-M7 enters pending exception handler Так как ТС так и не ответил на вопрос: "В каком именно окне отладчика он делает шаг", то не факт, что это та самая проблема. Вангую, что скорее всего он его делает в окне исходника, а это уже быстрее всего не "single stepping". Я именно поэтому задавал свой первый вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
b-volkov 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 50 minutes ago, jcxz said: А что - в вашем IAR-е нет меню с пунктом "STLink\Disable Interrupts When Stepping"? А если попробовать его включить? Пробовал, не работает. Помогает, если до и после предполагаемой точки останова вписать соответственно __disable_irq() и __enable_irq(), но это каждый раз надо править код, если хочешь новый брекпоинт... Попробую поиграть с регистрами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 21 час назад, haker_fox сказал: Ну-ка, ну-ка, подробнее, плиз))) Несколько лет плотно работаю с FreeRTOS. Чем это она мешает отладке, а? Поведение точно такое же при отладке поведение как ТС и описал. 1 час назад, b-volkov сказал: Пробовал, не работает. Помогает, если до и после предполагаемой точки останова вписать соответственно __disable_irq() и __enable_irq(), но это каждый раз надо править код, если хочешь новый брекпоинт... Вы во FreeRTOS отлаживаете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба так остановите таймер перед остановкой и проверьте. Что тут сложного ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 4 минуты назад, x893 сказал: так остановите таймер перед остановкой и проверьте. Остановить наверно не получится т.к. он скорее всего во FreeRTOS отлаживает (так и не понятен этот момент). А вот настроить отладку на останов (FREEZE) этой периферии можно попробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 1 hour ago, AleksBak said: А вот настроить отладку на останов (FREEZE) этой периферии можно попробовать. Так это сразу делается. Что бы грабли не стукали по лбу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 1 hour ago, AleksBak said: Остановить наверно не получится т.к. он скорее всего во FreeRTOS отлаживает Да что вы за эту FreeRTOS так ухватились? Обычная программа. И что значит "во FreeRTOS"? Звучит так, как-будто вы эту систему "ставите". 1 hour ago, AleksBak said: Поведение точно такое же при отладке поведение как ТС и описал. Больше похоже на некую таинственную область знаний о ОСРВ. Тут не за неё надо хвататься, а за особенности периферии микроконтроллера. Т.к. я отлаживал различные микроконтроллеры с FreeRTOS, и проблем не было. Сходное поведение будет наблюдаться и с другими ОСРВ, или "одиночной" программой, если они используются с той же самой периферией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 5 минут назад, haker_fox сказал: Да что вы за эту FreeRTOS так ухватились? Обычная программа. И что значит "во FreeRTOS"? Звучит так, как-будто вы эту систему "ставите". Я не ухватился - просто предположил, что может быть вероятнее всего тут судя по симптомам и исходя из доступности/популярности этого. В прерывании "Главного Таймера" (или как он там называется) происходит переключение задач и опять "возвращаемся"/зацикливаемся в точке останова. 14 минут назад, haker_fox сказал: Т.к. я отлаживал различные микроконтроллеры с FreeRTOS А у Вас такого поведения, как у ТС, не было при этом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться