jenya7 0 21 июня, 2018 Опубликовано 21 июня, 2018 · Жалоба Подключаю J-LINK. Нажал Download and Debug - все бежит, все работает. Остановливаю дебагер. Выключил - включил напряжение - запускаю без дебагера - плата мертвая.Я даже не могу понять в чем проблема - плата не реагирует на команды с терминала, не высвечивает инфу на дисплее.Как с этой бедой бороться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pat 0 21 июня, 2018 Опубликовано 21 июня, 2018 · Жалоба Подключаю J-LINK. Нажал Download and Debug - все бежит, все работает. Остановливаю дебагер. Выключил - включил напряжение - запускаю без дебагера - плата мертвая.Я даже не могу понять в чем проблема - плата не реагирует на команды с терминала, не высвечивает инфу на дисплее.Как с этой бедой бороться? А Вы установили в Options->Debugger->Setup->Driver=J-Link/J-Trace ?просто легко можно код в симуляции запустить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 июня, 2018 Опубликовано 21 июня, 2018 · Жалоба А Вы установили в Options->Debugger->Setup->Driver=J-Link/J-Trace ?просто легко можно код в симуляции запустить установил конечно. в симуляции он падает на обращениях к аппаратной периферии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pat 0 21 июня, 2018 Опубликовано 21 июня, 2018 · Жалоба установил конечно. в симуляции он падает на обращениях к аппаратной периферии. Тогда нужно искать.Проверьте откуда стартует программа в файле *.icf там же проверьте область векторов прерывания. Далее для проверок нужен свободный вывод микроконтроллера который будет ваши монитором(Можно светодиодом моргать) Его настраиваем как выход и пишем макросы что бы этим выводом можно было дергать.Еще нужен хотя бы осцил или простой логический анализатор тип Saleae Я не знаю какой тип процессора используете но подозреваю что на ядре Cortex-xx. Если так то первое, что нужно проверить это не влетает ли софт в исключения.Устанавливаем наш монитор в исключениях загружаем запускаем смотрит. Далее есть ли фаулты или нет алгоритм отладки примерно такой.Отключаем все модули оставляем один main.Последовательно подключаем модули, мониторим на предмет работоспособности. Где то так, но подозреваю что где то банально память переполняется и прога влетает в хард-фаулт. Часто так бывает под дебагером все работает самостоятельно нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nixon 3 21 июня, 2018 Опубликовано 21 июня, 2018 · Жалоба https://www.iar.com/support/tech-notes/debu...un-stand-alone/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 21 июня, 2018 Опубликовано 21 июня, 2018 (изменено) · Жалоба Тогда нужно искать.Проверьте откуда стартует программа в файле *.icf там же проверьте область векторов прерывания. Далее для проверок нужен свободный вывод микроконтроллера который будет ваши монитором(Можно светодиодом моргать) Его настраиваем как выход и пишем макросы что бы этим выводом можно было дергать.Еще нужен хотя бы осцил или простой логический анализатор тип Saleae Я не знаю какой тип процессора используете но подозреваю что на ядре Cortex-xx. Если так то первое, что нужно проверить это не влетает ли софт в исключения.Устанавливаем наш монитор в исключениях загружаем запускаем смотрит. Далее есть ли фаулты или нет алгоритм отладки примерно такой.Отключаем все модули оставляем один main.Последовательно подключаем модули, мониторим на предмет работоспособности. Где то так, но подозреваю что где то банально память переполняется и прога влетает в хард-фаулт. Часто так бывает под дебагером все работает самостоятельно нет. у меня Кортекс-М4 Когда бежит с дебагером все работает прекрасно - никаких исключений. А как диагностировать без дебагера на мертвой плате? https://www.iar.com/support/tech-notes/debu...un-stand-alone/ спасибо. изучаю. Все работало прекрасно. Вдруг произошла такая беда. Я думал из за того что перевел формирование задержек с таймера на 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; так что проблем быть не должно Изменено 21 июня, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться