Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Поиск бага

Непрочитано 22.08.2017, 18:14  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Поиск бага

Доброго дня...

Попался мне проект на STMF103... Писал не я, кода приличнинько....
Неизвестно при каких обстоятельствах бывают зависания программы...
Поставил вач... Но это же не выход из ситуации. Кто как осуществляет поиск таких багов ? Думаю поставить логирование программы через усб.
Реклама:
bass1981 вне форума  
Непрочитано 22.08.2017, 23:47  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,285
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Поиск бага

bass1981, очень давно придумали такое для BIOS - POST code называется.
А уж куда его писать - зависит от свободных ресурсов. Например в тот же UART. Или на I2C повесить расширитель портов. Думаю, что 256 кодов будет достаточно для борьбы с жуками .
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
bass1981 (23.08.2017)
Непрочитано 23.08.2017, 02:11  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Поиск бага

А вы мне идейку подкинули, не подумал... Во флешь писать.... Сижу думаю о нюансах...

BIOS - POST code .... ??? Гугланул, мельком глянул это все таки не для МК...
bass1981 вне форума  
Непрочитано 23.08.2017, 09:18  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,285
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Поиск бага

bass1981, и чем не для МК сей алгоритм?
Его суть в записи некоторого кода источника в порт. Если подвисло - известна последняя выполнявшаяся процедура и соответственно сужается зона поиска.
Не конкретная реализация, а сам алгоритм установки контрольных точек.
Писать во flash наверное не стоит, а вот установить расширитель портов I2C вполне нормально будет. Он будет работать как защёлка и хранить 8-ми битный код точки по аналогии с POST. Там уже надо просто подумать как совместить хранение и срабатывание wdt или просто убрать wdt для отладки…
Пользуюсь таким при невозможности прямой отладки зашитой программы - полет нормальный. Такое иногда даже в продакшн идёт как набор регистров состояния .
На том же интерфейсе можно и экран прикрутить уже с выводом массива данных в контрольных точках.
Отладочные средства - это совсем не данность свыше, а продукт нашей кочки зрения на проблему и ее решение.

PS Например PCF8574AT/3.512, Расширитель цифровых входов/выходов для шины I2C [SO-16] у чипа с диплом стоит 52 деревянных. Можно замутить отдельной платой с преобразователем уровня, отдельным питанием и светодиодами для индикации (типа сразу универсальный вариант).
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 23.08.2017 в 10:55.
mike-y-k вне форума  
Непрочитано 23.08.2017, 12:00  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Поиск бага

А по чему не во флешь ??
Конечно в стме геморойненько это делать постоянно нужно менять адрес записи...
Отключить ватч.... И сделать например ожидание считывания флешь после перезагрузки....
Выводы в порты более конечно актуально, но данное решение подходит когда проектируешь устройство и заранее продумываешь средство отладки...
А когда уже все по железу сделано... Нужно использоваться что есть... Есть USB...
У меня мысли : флешь или на время отладки рядом компустер. Или вообще под отладкой запустить , но что то мне кажется что она сама по себе отвалиться.....
Самое что удивительное сейчас пропишешь отладку и все при отладке будет работать.. )) (Маленькая пауза может извинить всю картину)... Вон у меня есть проект (перешел на V5 keil)..... В прерывании USART все пишется в буфер. В основном цикле проверяется буфер и отправляется в USB... Так после отправки слетание в exeption... Выручила пауза 5ms перед отправкой в USB ... Но данные могут отправляться не только по событию заполнения буфера и опять Exeption в момент приема по USART... Выставлял приоритеты прерываний, не чего не помогло... Думаю попробовать запретить отправку по USB после приема по USART... Или опять вернуться к 4ой версии кейла где все четко работало...
Ну ладно это другие бараны )))
bass1981 вне форума  
Непрочитано 23.08.2017, 23:03  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,285
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Поиск бага

bass1981, с I2C как-то уже истоптано все - главное возможность его использовать должна таки остаться, а остальное уже мелочи.
Всего 2 провода к плате (4 с Vdd и Gnd) и нет проблем. А код при зависании видно невооружённым глазом .
Минимально - одна микросхема, платка, 8 сопротивлений и столько же светодиодов. Можно ещё подтягивающие на неё поставить +2 сопротивления.
Ну и в части софта все тоже относительно просто - запись байта в порт для нужного приёмника. Ну ещё инициализация в самом начале (при необходимости).
Давно и успешно пользую эти расширители - очень удобно управлять чем-то и считывать данные.
И для отладки прекрасно подходят, особенно редких и загадочных зависаний.
В одном проекте даже сделал вариант со вторым МК, который запоминал выставленный код и при появлении на порту 0x00 (при инициализации) высылал его через UART для регистрации. В таком варианте и WDT не пришлось отключать. Ошибка была успешно локализована .
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 23.08.2017, 23:38  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Поиск бага

Сообщение от mike-y-k Посмотреть сообщение
bass1981, с I2C как-то уже истоптано все - главное возможность его использовать должна таки остаться, а остальное уже мелочи.
Один точно занят... )))) После завтра только получиться посмотреть другие свободны или нет... Как и говорил схемотехника растянута... Хотя накинуть два проводочка не составит труда .... Подумаю над предложением...
bass1981 вне форума  
Непрочитано 24.08.2017, 00:01  
dgrishin
Почётный гражданин KAZUS.RUN
 
Регистрация: 12.02.2013
Адрес: На болотах
Сообщений: 1,163
Сказал спасибо: 46
Сказали Спасибо 315 раз(а) в 244 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Поиск бага

А ведь можно скомпилировать программу с отладочной информацией и и запустить её под отладчиком.
Периодически делая start и stop можно поймать то место в коде где она зависает (по крайней мере в Keil так можно). Также там можно и выводить диагностические сообщения в отдельное окно.
dgrishin вне форума  
Непрочитано 24.08.2017, 00:51  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,285
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Поиск бага

bass1981, занят под I2C или по другому назначению ноги заняты?
Если первое, так там можно целых 127 устройств иметь - главное с подтяжкой разобраться. Со вторым вариантом уже сложнее .

dgrishin, тут дьявол именно в мелочах. Все будет строго по закону Мэрфи - в отладчике без проблем, а без него виснет. И если ошибка происходит один раз за несколько суток работы - удовольствие от отладки ещё то получится .
В одном очень простом устройстве перезагрузка по WDT из-за ошибки происходило раз в 2-3 недели. И только такое решение позволил за несколько месяцев итераций с контрольными точками по программе вычислить место, найти и исправить ошибку.
Ну и частенько в месте установки это просто нереально сделать . А ошибка на столе никак не воспроизводится, только в рабочем варианте…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 24.08.2017 в 01:05.
mike-y-k вне форума  
Непрочитано 24.08.2017, 05:56  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Поиск бага

Под I2C заняты.... Точно что там можно 127 устройств !!!
Предлагаете микросхему памяти повесить... ?

Да да в том то и дело что ошибка раз в двое суток происходит....

И зависать она может глубоко CMSIS и с какого места вызвана данная функция поди разберись... Это если например засунуть нулевой буфер и т.д ... А по всей программе вызовов данной функции штук 100....
Долго я один раз так ковырялся, нашел методом тыка такую ошибку...
Кстати !!!
В стеке должен оставаться адрес возврата как его в кейле найти можно ?
bass1981 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элементов в Eagle5.6.0 DistortionMAN Proteus, KiCAD и другие ECAD 10 28.09.2009 11:19
ищу исходник asm для AVR - поиск устройств 1-wire chipman Микроконтроллеры, АЦП, память и т.д 3 12.11.2007 14:53


Часовой пояс GMT +4, время: 03:04.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.