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

Код работает только с дебагером

Подключаю J-LINK. Нажал Download and Debug - все бежит, все работает. Остановливаю дебагер. Выключил - включил напряжение - запускаю без дебагера - плата мертвая.Я даже не могу понять в чем проблема - плата не реагирует на команды с терминала, не высвечивает инфу на дисплее.Как с этой бедой бороться?

 

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


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

Подключаю J-LINK. Нажал Download and Debug - все бежит, все работает. Остановливаю дебагер. Выключил - включил напряжение - запускаю без дебагера - плата мертвая.Я даже не могу понять в чем проблема - плата не реагирует на команды с терминала, не высвечивает инфу на дисплее.Как с этой бедой бороться?

 

А Вы установили в Options->Debugger->Setup->Driver=J-Link/J-Trace ?просто легко можно код в симуляции запустить

 

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


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

А Вы установили в Options->Debugger->Setup->Driver=J-Link/J-Trace ?просто легко можно код в симуляции запустить

установил конечно. в симуляции он падает на обращениях к аппаратной периферии.

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


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

установил конечно. в симуляции он падает на обращениях к аппаратной периферии.

 

Тогда нужно искать.Проверьте откуда стартует программа в файле *.icf там же проверьте область векторов прерывания.

Далее для проверок нужен свободный вывод микроконтроллера который будет ваши монитором(Можно светодиодом моргать)

Его настраиваем как выход и пишем макросы что бы этим выводом можно было дергать.Еще нужен хотя бы осцил или простой логический анализатор тип Saleae

 

Я не знаю какой тип процессора используете но подозреваю что на ядре Cortex-xx.

Если так то первое, что нужно проверить это не влетает ли софт в исключения.Устанавливаем наш монитор в исключениях загружаем запускаем смотрит.

Далее есть ли фаулты или нет алгоритм отладки примерно такой.Отключаем все модули оставляем один main.Последовательно подключаем модули, мониторим на предмет работоспособности.

Где то так, но подозреваю что где то банально память переполняется и прога влетает в хард-фаулт.

Часто так бывает под дебагером все работает самостоятельно нет.

 

 

 

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


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

Тогда нужно искать.Проверьте откуда стартует программа в файле *.icf там же проверьте область векторов прерывания.

Далее для проверок нужен свободный вывод микроконтроллера который будет ваши монитором(Можно светодиодом моргать)

Его настраиваем как выход и пишем макросы что бы этим выводом можно было дергать.Еще нужен хотя бы осцил или простой логический анализатор тип Saleae

 

Я не знаю какой тип процессора используете но подозреваю что на ядре Cortex-xx.

Если так то первое, что нужно проверить это не влетает ли софт в исключения.Устанавливаем наш монитор в исключениях загружаем запускаем смотрит.

Далее есть ли фаулты или нет алгоритм отладки примерно такой.Отключаем все модули оставляем один main.Последовательно подключаем модули, мониторим на предмет работоспособности.

Где то так, но подозреваю что где то банально память переполняется и прога влетает в хард-фаулт.

Часто так бывает под дебагером все работает самостоятельно нет.

у меня Кортекс-М4

Когда бежит с дебагером все работает прекрасно - никаких исключений. А как диагностировать без дебагера на мертвой плате?

 

 

спасибо. изучаю.

 

Все работало прекрасно. Вдруг произошла такая беда.

Я думал из за того что перевел формирование задержек с таймера на DWT

void Delay_us(uint32_t us)
{
    uint32_t ticks = 120 * us;  //freq = 120Mhz
    DWT->CYCCNT = 0;
    DWT->CTRL = 1;
    while (DWT->CYCCNT < ticks);
    DWT->CTRL = 0;    
}

Но у меня вначале есть

 //enable debug timer for delay function
   CoreDebug->_DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

так что проблем быть не должно

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

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


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

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

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

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

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

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

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

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

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

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