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

Дивайс под отладчиком (STLink V2) работает "неправильно" без него "правильно". Один образец lbdfqcf отдан работодателю на тестирование. Он рассказывает, что изредка случается некая хрень, которая, по его описанию, похожа на ту, что имееи место под отладчиком. Разобраться почему не работает под отладчиком не могу нескюлько дней. Суть "хрени" изложить затруднительно, очень привязана к специфике дивайса. Известны ли уважаемым коллегам некие общие принципы различия работы камня под отладчиком, и без него, м.б. что то с времянками?

 

 

 

внутри "хрень" можно описать так volatile переменная может модифицироваться в разных местах, и под отладчиком она получает значение, которое не должна иметь по логике работы

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

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


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

Предлагаю не зацикливатся на работе под отладчиком / не под отладчиком, а искать ошибку. У Кейла, к примеру, есть возможность ставить точки останова с условиями. Например, при записи в переменную.

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


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

Известны ли уважаемым коллегам некие общие принципы различия работы камня под отладчиком, и без него, м.б. что то с времянками?

К примеру, под отладчиком можно просматривать регистры периферии, не останавливая программу. Некоторая периферия меняет своё состояние при чтении её регистров отладчиком.

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

В общем, бывают нюансы.

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


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

К примеру, под отладчиком можно просматривать регистры периферии, не останавливая программу. Некоторая периферия меняет своё состояние при чтении её регистров отладчиком.

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

В общем, бывают нюансы.

 

"хрень" возникает без какой либо остановки. Live watch тоже не использется по причине его отсутствия (Ubunru | Eclipse | arm-none-eabi-gcc 5.3)

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


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

У Кейла, к примеру, есть возможность ставить точки останова с условиями. Например, при записи в переменную.

 

Уважаемый! Подскажите как включить такую фичу?

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

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


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

Уважаемый! Подскажите как включить такую фичу?

Я сейчас не при Кейле. Там у него в помощи расписано. Типа, brakepoint with condition.

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


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

Я такое встречал.

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

Если дефект пропадет - значит проблема в инициализации.

Где то не сброса настроек регистров периферии или тактирования перед инициализацией.

 

Если в программе есть ватчдог, то он и может приводить к редким проявлениям дефекта.

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


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

Может это и другая проблема и я пока отложил ее в сторону...

Плата работает под дебаггером и по power reset, но не работает по сбросу. Идеи?

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


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

Я сейчас не при Кейле. Там у него в помощи расписано. Типа, brakepoint with condition.

http://www.keil.com/support/man/docs/uv4/u...g_breakpnts.htm

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


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

Плата работает под дебаггером и по power reset, но не работает по сбросу. Идеи?

Например: неправильно инициализируется какая-то периферия (вне МК), которая сбрасывается power reset-ом, но не сбрасывается сбросом.

Например - внешняя SPI-FLASH. В процессе работы даёте ей команду SLEEP, после вкл. питания она не находится в SLEEP и отвечает на команды и Ваш стартовый код её нормально обнаруживает и инициализирует, а после сброса МК, чип FLASH не сбрасывается и может быть в SLEEP, тогда он не будет отвечать ни на какие команды кода инициализации.

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


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

Уважаемый! Подскажите как включить такую фичу?

Такое есть и в IAR и в QT встречал.и даже на крупных контроллерах AVR.

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


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

Например: неправильно инициализируется какая-то периферия (вне МК), которая сбрасывается power reset-ом, но не сбрасывается сбросом.

Например - внешняя SPI-FLASH. В процессе работы даёте ей команду SLEEP, после вкл. питания она не находится в SLEEP и отвечает на команды и Ваш стартовый код её нормально обнаруживает и инициализирует, а после сброса МК, чип FLASH не сбрасывается и может быть в SLEEP, тогда он не будет отвечать ни на какие команды кода инициализации.

Спасибо за совет. А чем тогда jtag помогает? Всего "внешнего" ethernet phy, никаких слипов.

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


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

Плата работает под дебаггером и по power reset, но не работает по сбросу. Идеи?

Перемычка бута не установлена ... )) Под jtag по любому будет работать... ))

А вообще бывали такие случаи, но в каждом конкретном случае свои проблемы были ... Не запомнилось ни разу ... ))

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


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

Что у вас на ноге NRST висит (подтяжки, емкость)?

 

UPD: отбой - не внимательно прочитал первый пост. извините.

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

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


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

Перемычка бута не установлена ... )) Под jtag по любому будет работать... ))

А вообще бывали такие случаи, но в каждом конкретном случае свои проблемы были ... Не запомнилось ни разу ... ))

Железо в попрядке - это отладочная плата от Кайла. Я ее использую для работы с OV7691/OV5640

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


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

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

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

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

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

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

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

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

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

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