реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Busfault Handler STM32L151RDT6, Адрес, на котором вылетает
MiklPolikov
сообщение Nov 6 2015, 13:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Программа стабильно оказывается в Busfault Handler
Значения регистров стабильно равны
SCB->CFSR = 0x00008200
SCB->BFAR = 0x1800F267
Попадание в Busfault Handler совпадает по времени с запуском или работой DMA + SDIO
ОС FreeRTOS

Вопросы :
1) Правильно ли я понимаю, что 0x1800F267 это адрес, по которому программа попыталась вернутся из функции или прерывания, и не смогла, т.к. этот адрес не существующий ?
2) Верно ли предположение, что загрузка неправильного адреса в PC происходит пре переключении контекста ОС ?
3) Что делать дальше ? В какую сторону думать ?


Заранее спасибо !
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 6 2015, 14:42
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(MiklPolikov @ Nov 6 2015, 18:50) *
3) Что делать дальше ? В какую сторону думать ?

Стеки увеличить?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 6 2015, 14:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Nov 6 2015, 16:50) *
1) Правильно ли я понимаю, что 0x1800F267 это адрес, по которому программа попыталась вернутся из функции или прерывания, и не смогла, т.к. этот адрес не существующий ?

Нет, это адрес, попытка доступа к которому вызвала исключение. Адрес инструкции, при выполнении которой случился bus fault, можно получить из stack frame.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 6 2015, 19:07
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Мне не нравится число 0x1800F267. Наверное в выравнивании по 4 байта проблема.

Проверьте значение указателей и добейтесь чтобы они делились на 4.
Go to the top of the page
 
+Quote Post
ig_z
сообщение Nov 6 2015, 20:19
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Tarbal @ Nov 6 2015, 21:07) *
Проверьте значение указателей и добейтесь чтобы они делились на 4.

Это же кортекс, там нет арм режима. Поэтому младший битик д.б. равен 1
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 6 2015, 21:35
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(ig_z @ Nov 7 2015, 00:19) *
Это же кортекс, там нет арм режима. Поэтому младший битик д.б. равен 1


Надо же! Век живи -- век учись.

Сообщение отредактировал Tarbal - Nov 6 2015, 21:35
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Nov 6 2015, 22:04
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Проблему удалось решить.
Нашёлся указатель, который вылетал и что-то портил в ОС
Впрочем, он нашёлся случайно.
Как систематизировать его поиск, имея исходные данные SCB->BFAR = 0x1800F267 , осталось неясным.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 6 2015, 22:12
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MiklPolikov @ Nov 7 2015, 01:04) *
Как систематизировать его поиск, имея исходные данные SCB->BFAR = 0x1800F267 , осталось неясным.

А так?

Надо где-нибудь большими буквами написать, что основным источником данных для разборок с fault'ами на Cortex-M является содержимое стека, а не регистров (хотя они, бесспорно, тоже нужны). Регулярно всплывает этот вопрос.
Go to the top of the page
 
+Quote Post
etoja
сообщение Nov 8 2015, 17:38
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Это плата за использование операционной системы. Ошибку можно никогда не найти.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 9 2015, 03:36
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(etoja @ Nov 8 2015, 23:38) *
Это плата за использование операционной системы. Ошибку можно никогда не найти.

Операционка-то причём????
Go to the top of the page
 
+Quote Post
Alechek
сообщение Nov 9 2015, 06:53
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(jcxz @ Nov 9 2015, 08:36) *
Операционка-то причём????

Притом что вылет, как правило, происходит в момент работы с семафорами/очередями. В том числе, в момент переключения контекста.
Приходится выяснять, какой объект поганится, какие переменные лежат до/после него, потом смотреть, кто с этими переменными работает. Либо ставить бряку на диапазон адресов.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 9 2015, 08:02
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Alechek @ Nov 9 2015, 12:53) *
Притом что вылет, как правило, происходит в момент работы с семафорами/очередями. В том числе, в момент переключения контекста.
Приходится выяснять, какой объект поганится, какие переменные лежат до/после него, потом смотреть, кто с этими переменными работает. Либо ставить бряку на диапазон адресов.

И что? Проблема на 99.99% в пользовательском ПО. Если оно криво написано, то оно такое же кривое будет и без ОС. Наличие ОС не влияет на сложность поиска багов.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016