Jump to content

    

Сохранить значения symbolic memory в файл, как ?

Добрый день подскажите, можно ли сохранить из под отладки все значения переменных в symbolic memory, нашел сохранение диапазона адресов в hex файл, но это не визуально.

Дело в том что пытаюсь найти баг, который через несколько суток, перетирает структуру (константные значения тоже перетираются левыми значениями), так вот сделал выдачу по запросам несколько перименных по usart, но это как то медленно происходит,  хочу сразу увидеть что случилось, с озу и откуда началось перетирание.  Появилась идея после "зависона" ПО подключиться к нему через отладчик, но  остановиться в векторе прерывания reset, и от туда считать ОЗУ и тд. Но вот сохранить всю память как она отображается в symbolic memory как-то не нашел.

 

 

Share this post


Link to post
Share on other sites
11 минут назад, pokk сказал:

Добрый день подскажите, можно ли сохранить из под отладки все значения переменных в symbolic memory, нашел сохранение диапазона адресов в hex файл, но это не визуально.

А что "не визуально"? Что это значит?  :umnik2:

11 минут назад, pokk сказал:

хочу сразу увидеть что случилось, с озу и откуда началось перетирание.

Поставьте watchpoint на изменение интересующей ячейки памяти. И увидите сразу.

Share this post


Link to post
Share on other sites
4 hours ago, jcxz said:

Поставьте watchpoint на изменение интересующей ячейки памяти. И увидите сразу.

Ошибка происходит через сутки и больше под отладкой столько не просидит(частенько слетает отладочный режим от любого включение бп) + основной комп на ночь обесточивается, а плата гоняется в другой комнате, где есть постоянное сетевое напряжение.    

5 hours ago, jcxz said:

А что "не визуально"? Что это значит?  :umnik2:

Ну голый dump памяти сложно анализировать..., когда тебе надо посмотреть значение кучу массивов и структур, а у тебя только адреса... как-то не очень вручную зависимости искать (примеренная -> адрес).  Хотя уже сейчас есть идея, считать все ОЗУ, а потом на другой плате  через отладчик обратно заполнять ОЗУ и анализировать через memory, symbolic memory сколько угодно.

Share this post


Link to post
Share on other sites
10 минут назад, pokk сказал:

Ошибка происходит через сутки и больше под отладкой столько не просидит(частенько слетает отладочный режим от любого включение бп) + основной комп на ночь обесточивается, а плата гоняется в другой комнате, где есть постоянное сетевое напряжение.

Можно запустить высокочастотное периодическое прерывание (скажем 1 МГц или выше - в зависимости от тактовой CPU) и в его ISR контролировать проблемные адреса. При обнаружении модификации - сбрасывать куда-нить дамп регистров и верхушку текущего стека. Чем выше частота - тем точнее будет определена точка модификации. Я сам уже не одну проблему с разрушением памяти таким способом нашёл.

Ещё вариант (если есть MPU): закрыть проблемные адреса от записи через MPU, приоткрывая защиту только на время штатных записей и ловя fault при попытке левых записей.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now