Search the Community
Showing results for tags 'debug'.
-
Visual studio code + cortex debug
iamnot posted a topic in Программирование
Приветствую участников форума. Вопрос к знакомым со средой Visual Studio Code. Не удается запустить отладку контроллера из среды VS Code с плагином cortex-debug. Причем контроллер прошивается и что то даже исполняется, но при постановке на паузу VS Code не показывает точку где остановился. Такое ощущение что нет связи строк кода с иполняемым elf файлом. -
attiny85: watchdog зависает
dontsov posted a topic in MCS51, AVR, PIC, STM8, 8bit
Прошу помощи! Счетчик импульсов (watchdog в режиме генерации прерываний) на attiny85 считает импульсы просыпаясь раз в 250мс и раз в сутки выходит из цикла и общается по i2c. Возникла проблема — очень редко attiny85 уходит в бесконечный цикл. Как я это понял: 1. Устройство не выходит на связь через 15 мин. 2. Потребление вместо 12-17мкА стабильно 670мкА (без скачков и какой то работы). Нажатие на кнопку приводит к выходу из цикла. Т.е. цикл работает - состояние кнопки проверяется. Гипотеза: ISR(WDT_vect) не вызывается. Подозрения на некорректный ресет watchdog. Проблема проявляется крайне редко и не понятно как отловить. После зависания wdt_count = 15, т.е. значению иницилизации. Эту информацию вывел только что, поэтому поймал пока 1 зависание. Странно, что потребление линией 670мкА (измеряю EFM32 Energy monitor), потому что когда Ватериус считает импульсы - там четкие скачки потребления из-за пробуждения из deepsleep. volatile int16_t wdt_count; /* Вектор прерываний сторожевого таймера watchdog */ ISR( WDT_vect ) { wdt_count--; WDTCR |= bit( WDIE ); // так делать написано в datasheet } void resetWatchdog() { MCUSR = 0; WDTCR = bit( WDCE ); // Пробуждаемся (проверяем входы) каждые 250 мс WDTCR = bit( WDIE ) | bit( WDP2 ); // 250 ms #define ONE_MINUTE 240 // 1 минута примерно равна 240 пробуждениям wdt_reset(); } inline void counting() { power_adc_enable(); //т.к. мы обесточили всё а нам нужен компаратор adc_enable(); //после подачи питания на adc if (counter0.is_impuls()) { info.data.value0++; //нужен т.к. при пробуждении запрашиваем данные info.states.state0 = counter0.state; info.adc.adc0 = counter0.adc; storage.add(info.data); } #ifndef LOG_ON if (counter1.is_impuls()) { info.data.value1++; info.states.state1 = counter1.state; info.adc.adc1 = counter1.adc; storage.add(info.data); } #endif adc_disable(); power_adc_disable(); } //Запрос периода при инициализции. Также период может изменится после настройки. // Настройка. Вызывается однократно при запуске. void setup() { .... } void loop() { power_all_disable(); // Отключаем все лишнее: ADC, Timer 0 and 1, serial interface set_sleep_mode( SLEEP_MODE_PWR_DOWN ); // Режим сна resetWatchdog(); // Выход по прошествию WAKE_EVERY_MIN минут или по нажатию кнопки for (unsigned int i = 0; i < ONE_MINUTE && !button.pressed(); ++i) { wdt_count = info.wakeup_period_min; while ( wdt_count > 0 ) { noInterrupts(); if (button.pressed()) { interrupts(); break; } else { counting(); //Опрос входов. Тут т.к. https://github.com/dontsovcmc/waterius/issues/76 interrupts(); sleep_mode(); // Спим (WDTCR) } } } wdt_disable(); // disable watchdog power_all_enable(); // power everything back on storage.get(info.data); // Берем из хранилища текущие значения импульсов info.wdt = wdt_count; LOG_BEGIN(9600); LOG(F("Data:")); .... } Вот здесь была в другом проблема. Теперь не перезагружается... Но вот зависает: Если кто-то может потратить чуть больше времени, чтобы отладить проблему за вознаграждение - пишите. Спасибо! -
Столкнулся с очень редкими зависаниями (цикла? чипа?) attiny85 в Ватериусе. Проявляется через пару суток, когда период пробуждения ESP короткий (15 мин). Не могу понять причины. Требуются консультации + симулировать прошивку в AVR Studio. https://github.com/dontsovcmc/waterius/blob/master/Attiny85/src/main.cpp То, что Ватериус завис видно, потому что он перестает выходить на связь через 15 мин + потребление 400мкА, вместо 12-17мкА. Если нажать на кнопку, то Ватериус выйдет на связь. Взаимодействие, оплату предлагайте. Спасибо!
-
Здравствуйте уважаемые В процессе подключения возникли трудности с выводом пинов дебаггера на вейвформу (да и вообще). В комплекте имеется Vivado 2019.1, Arty Z7(10), Linux. Пины для дебага подключал в Синтезированном проекте через панель дебага. Топ лефел выполнен в IP Integrator'е подключено Zunq PS, которое используется только для запуска моих модулей и вычитки полученных данных по AXI. Сначала пробовал сгенерировать битфайл и просто залить - тогда вообще не видит ila, помогло сгенерировать, отправить в SDK там прошить и запустить простую программу мигания светодиодами (как индикатор работы) и потом сканировать хардвар в Vivado. Но теперь не видно никаких probe. Ругающийся файл перегенерировал и пересобирал проект не раз. В имплемент папке естьточно такой же .ltx файл с именем проекта. Пробовал перенастраивать и так и сяк. И запускать дебаг в SDK и программировать по очереди оттуда и отсюда. Ничего не помогает. Выдаётся одно и то же сообщение. Решения, увы, Сеть не показывает. Может кто-то сталкивался?
-
Добрый день, хочу поделится ссылкой на проект U-boot для платы ZedBoard Возможно будет полезно новичками которые хотят подробнее разобраться с загрузчиком или что-то подправить под себя. Проект позволяет собирать U-boot из исходников и так же запускать его из под SDK с точками останова как в режиме bare-metal. Все инструкции в репозитории + видеоинструкция. Если у кого получится повторить буду рад услышать ответ. Из особенностей для отладки пришлось закомментировать часть функций SPL, все комментарии добавленные мной начинаются с /* mollex: comment , количество небольшое. Ссылка на проет: https://github.com/mollex/workspace20154_uboot_dev