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

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

23 minutes ago, AleksBak said:

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

Системный таймер (SysTick или любой другой) не может переключаться так быстро, если правильно написан, чтобы не дать выполниться как минимум одной команде после точки останова.

24 minutes ago, AleksBak said:

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

Никогда. Спокойно стопорил систему под отладчиком, а затем запускал. И всё работало. Иногда мешала сторожевая собака, не на всех МК она останавливается под отладчиком, а иногда она просто внешняя.

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


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

6 часов назад, jcxz сказал:

то не факт, что это та самая проблема.

Это именно та самая проблема. Я на нее нарывался, пробуя демо-плату с STM32F746. Сейчас эта плата отложена до лучших времен, но решение проблемы мне интересно, и я провел лабораторную работу.

Плата Mikromedia 7 for STM32F746
На борту встроенный ST-Link/V2
IAR EW for ARM 7.50

Тестовый проект точно также не хочет сдвигаться с точек останова, сколько ни нажимай на Step или Run to Cursor.
Скачиваем все нужное с Сеггера.
Converting ST-LINK On-Board Into a J-Link
Ставим драйвера, перепрошиваем STLink - он видится системой как J-Link.
Изменяем настройки отладчика в ИАРе на J-Link.
Результат - отладка начинает работать, шагает без проблем.

Единственный нюанс - лицензия Сеггера, которая ограничивает применение прошивки только на демо-платы от ST. Но как я убедился, работает и на обычном ST-Link/V2 (там, где версии типа V2.Jxx.Sx).
 

з.ы. в начале отладки драйвер Сеггера полез на их сервер. Но при блокировке файерволом все работало нормально.

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


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

Мне хотелось бы ответить уважаемым @Baser и @haker_fox одновременно (не только им - всем вообще-то). У меня сейчас такая интересная/уникальная ситуация, что фактически изучаю сейчас только семейство F7 от STM (так получилось и до этого много лет сидел на контроллерах др. фирмы). Много тестовых проектов делал на F7 со FreeRTOS. И когда отлаживал эти проекты, то брекпойнт внутри задачи вел именно так как у ТС ("залипал" там). Я связывал это с переключением задач и не "замороженным" таймером SysTick. @haker_fox однако пишет, что у него не было таких случаев. А @Baser пишет, что есть какая-то проблема с семейством F7XX (может и у H7XX тоже). Так вот я и подумал - может @haker_fox просто не отлаживал FreeRTOS с таким семейством и тут, и у ТС и у меня, та проблема про которую пишет @Baser ???

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


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

40 минут назад, AleksBak сказал:

Много тестовых проектов делал на F7 со FreeRTOS. И когда отлаживал эти проекты, то брекпойнт внутри задачи вел именно так как у ТС ("залипал" там). Я связывал это с переключением задач и не "замороженным" таймером SysTick.

Ну, сами подумайте, остановился МК на точке останова а SysTick работает. Что это значит? Что может возникнуть только один флаг переполнения SysTick. И все. FreeRTOS ведь тоже стоит.
И после вашего запуска Step или Run to Cursor выполнится (на полной скорости МК) обработка прерывания SysTick (и всех других уже готовых к обработке прерываний) после чего мы должны попасть на следующую команду после точки останова.

Но из-за ошибки в ядре отладчик опять стопорится на точке останова и не делает шаг. Это совершенно ненормальное поведение отладчика. Почитайте приведенные мною ссылки на ST Community.

55 минут назад, AleksBak сказал:

может ... и у ТС и у меня, та проблема про которую пишет Baser ???

Вполне возможно.

56 минут назад, AleksBak сказал:

что есть какая-то проблема с семейством F7XX (может и у H7XX тоже)

АРМ пишет, что проблема в Cortex-M7 devices with core revisions r0p0 or r0p1
Нужно смотреть, какие STM32F7 сделаны на этих ядрах. STM32F746 к ним точно относится. У STM32H7 этой ошибки нет.

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


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

5 hours ago, AleksBak said:

@haker_fox однако пишет, что у него не было таких случаев.

Ну да, не было...

5 hours ago, AleksBak said:

@haker_fox просто не отлаживал FreeRTOS с таким семейством и тут

Не отлаживал. Но я прочитал документы, которые уважаемый @Baser выложил выше. И понял, что это ошибка рхитектуры. И ОСРВ тут не при чём.

 

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


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

10 hours ago, Baser said:

Результат - отладка начинает работать, шагает без проблем.

Сделайте так же.

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


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

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

Не отлаживал.

Ну да, с этого надо было и начинать. Но ничего. Сейчас попозже проверим/посмотрим (просто проблемы сейчас всякие и еще з/п .***. срезали... будь проклят этот карантин/ковид извините)

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

ОСРВ тут не при чём

Может быть. Но почему-то у меня только со FreeRTOS вроде такое было. Оно вон как выходит. Может, я без нее особенно ничего и не отлаживал/не заметил. Я вообще, до апреля месяца, на PIC32MX/MZ сидел сколько лет, а потом на это семейство перешел изучать.

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

Ну, сами подумайте, остановился МК на точке останова а SysTick работает. Что это значит? Что может возникнуть только один флаг переполнения SysTick. И все. FreeRTOS ведь тоже стоит.

Спасибо за пояснения. Начинаю уже понимать. А я то думал, что FreeRTOS так чудит (и на Azure RTOS вроде похожее было) и на нее все это списал. А если подумать - причем тут она? Я попозже постараюсь проверить/доложить.

Изменено пользователем AleksBak

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


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

1 hour ago, AleksBak said:

Ну да, с этого надо было и начинать.

А чего это вы мне указываете, с чего начинать? Не обязательно работать с чем-то конкретным. Можно и просто мозгами пораскинуть на основе имеющегося опыта. Тем более, документы подтверждают мою правоту. Работаю с FreeRTOS на Cortex-M0/M3/M4 с 2016 года. Немного запускал на Cortex-M7 но именно "побаловаться".

1 hour ago, AleksBak said:

только со FreeRTOS вроде такое было.

Ну и что?:blum3: Единственный пример ничего не подтверждает и не опровергает. А если абстрагироваться от магического названия "фриртос" и смотреть на неё как на обычную программу, то что в ней такого, вызывающего ошибку? Если найдёте, пишите Ричарду Барии (вроде так зовут автора).

1 hour ago, AleksBak said:

А я то думал, что FreeRTOS так чудит

Ну что значит "чудит". Вы технически грамотно это обоснуйте. А то мне тут тоже коллеги часто говорят "проц висит". Ну какой, нафиг, "висит". Такого быть не может за редким исключением. Обычно оне не "висит", а выполняет какой-то код)

1 hour ago, AleksBak said:

А я то думал, что FreeRTOS так чудит (и на Azure RTOS вроде похожее было)

Слушайте, у вас какие-то догадки и домыслы в стиле любителей. Ну провели бы исследование и выложили нам результаты. Мы были бы благодарны.

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


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

Проверил - никаких "залипаний" (тех о которых пишет автор топика) в кодах где есть прерывания Таймеров и пр. - нет. После остановки можем пошагово идти дальше или до след. точки останова. Единственное - при отладке с ОС - опять "возвращаемся" в ту же самую точка останова внутри задача. Т.е. пошагово после этой точки оставноки можем также идти дальше, вплоть до шедуллера, но потом опять возвращаемся обратно в ту же самую точку останова. Вот это имел я ввиду только. Контроллер -  STM32F746NGH6U, ревизия Z. Версия ядра не смотрел какая. Среда - CubeIDE. Есть под рукой и др. контроллеры этого семейства, но смысла их проверять пока не вижу. Один раз менял фирмваре у ST-Link V2.1 на Segger-овскую, но отладчик нормально не функционировал и пришлось вернуть обратно.

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


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

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

Контроллер -  STM32F746NGH6U, ревизия Z. Версия ядра не смотрел какая.

На моей плате стоит STM32F746ZG
SCB->CPUID = 0x410FC271, т.е. это как раз ядро r0p1

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

Один раз менял фирмваре у ST-Link V2.1 на Segger-овскую, но отладчик нормально не функционировал и пришлось вернуть обратно.

Возможно в последних прошивках ST-Link уже тоже пофиксили эту ошибку как и у Сеггера, я это не проверял.

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


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

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

На моей плате стоит STM32F746ZG
SCB->CPUID = 0x410FC271, т.е. это как раз ядро r0p1

У тоже самое. Только процессор:

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

STM32F746NGH6U

А Вы IAR используете? Я CubeIDE. Версия ST-Link V2.1 тут - V2J37M26 (последняя получается). Попозже могу и с ST-Link V2 проверить если надо.

 

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


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

Добавлю:

Ну вот, получается, что в CubeIDE нельзя настроить отладчик чтобы останавливал периферию при останове?? А я думал, что как в Keil-е можно...

Плохо. Очень плохо. Что же у STM такой бардак со средами???

Хотел "заморозить" периферию, что прерывания создает (таймер тут) т.к., как пишет ТС, "залипает" и фиг получил тут.

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


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

20 minutes ago, AleksBak said:

Добавлю:

Ну вот, получается, что в CubeIDE нельзя настроить отладчик чтобы останавливал периферию при останове?? А я думал, что как в Keil-е можно...

Плохо. Очень плохо. Что же у STM такой бардак со средами???

Хотел "заморозить" периферию, что прерывания создает (таймер тут) т.к., как пишет ТС, "залипает" и фиг получил тут.

А добавить в main() USER ... религия не позволяет ?

Много чего нельзя в CubeMx, но если хочется, то можно.

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


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

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

А добавить в main() USER ... религия не позволяет ?

:) Я атеист. Еще бы узнать, что это за "USER"

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


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

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

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

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

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

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

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

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

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

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