С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
putsi

Precise data bus error

21.09.2015, 16:32. Показов 3665. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Контроллер STM32F407VET6, программа настойчиво вылетает в HordFault_Homdler. В регистре CFSR устанавливаются биты 15 (Bus Fault Address Register(BFAR) votyd flag) и 9 (Precise data bus error), что означает кривую попытку доступа к памяти по адресу, который содержится в р-ре BFAR. Содержимое р-ра BFAR на момент перехода в Hord Fault - 0x08100000.
Ошибка возникает при вызове процедуры из обработчика прерывания несколько раз (если из прерывания никакие процедуры не вызываются, ошибка не возникает).
Вызов процедуры выглядит так:

Code
1
2
3
4
5
6
7
8
9
10
TIM2_IRQHomdler PROC                  ;обработчик таймера
...                      ;код
BL       SetOutput  ;вызов процедуры
...                       ;код
BX       LR            ;возврат из обработчика
ENDP
SetOutput           PROC                  ;процедура
...                       ;код
BX       LR            ;возврат из процедуры в обработчик таймера
ENDP
Является ли такое написание кода ошибочным, или причину следует искать в чём-то другом?
П.С. Гонял в отладчике. В месте, где должен произойти возврат из обработчика в основной код, программа переходит в то место, где она возвращается из процедуры (следующая строчка).
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2015, 16:32
Ответы с готовыми решениями:

Swift compiler error Command failed due to signal: Bus error: 10
Mavericks 10.9.5, VMWare 10.0.3, xCode 6.0.1 (вообще перепробовал все выпуски, в том числе и 6.1 6А1052d от 22 октября 2014).При запуске...

Bus error
Имею необходимость делать лабы на C под linux (ubuntu) Тема лабы - работа с файлами и memory mapped files вот кусок текста программы...

Ошибка Bus Error
Доброго времени суток! Сразу хочу сказать, что на Мас я перешёл совсем недавно, следовательно освоение идём полным ходом, но некоторые...

5
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
22.09.2015, 11:48
Из обработчика прерывания не должны вызывать процедуры! Пересмотрите алгоритм работы Вашей программы.
0
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 95
22.09.2015, 12:27
Цитата Сообщение от __bt__
Из обработчика прерывания не должны вызывать процедуры! Пересмотрите алгоритм работы Вашей программы.
да ладно

Кто использует FriiRTOS знает, что там полно процедур типа xxxFromISR(), которые предназначены специально для вызова из прерывания
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
22.09.2015, 14:46
Предохраняться нужно, если на асме кодим. SetOutput вероятно юзается ещё и в основном коде, и не сохраняет но меняет регистры которые не падают в стек. К тому-же некоторые команды на асме не корректно выполняются в прерывании в обоих режимах стека / всё что связанно с большими числами. В таких случаях делается выход с запретом прерываний и подменой стека на обработчик , и уже потом оттуда переход в основной поток с подменами стека и режимов ядра. Муторно и глючно. Если шибко сильно нужно - проще написать на С, получится медленнее но стабильнее.
0
putsi
22.09.2015, 19:33
SetOutput вероятно юзается ещё и в основном коде, и не сохраняет но меняет регистры которые не падают в стек
Неа, она вызывается только из одного места (пока). Регистры используются R0..R3, т.е. всё, что нужно, в стеке сохраняется.
К тому-же некоторые команды на асме не корректно выполняются в прерывании в обоих режимах стека / всё что связанно с большими числами.
Стек используется только Main, пока не переключаю.
Опытным путём дошёл вот до чего:
Code
1
2
3
            PUSH       {LR}
BL          Set_Output
POP        {LR}
И все переходы начали куда надо срабатывать. Теперь проблема другая. Выходит, что у меня неверные представления о работе NVIC и стека.:)
putsi
23.09.2015, 07:22
К тому-же некоторые команды на асме не корректно выполняются в прерывании в обоих режимах стека / всё что связанно с большими числами.
Можно подробнее? Или ссылку на эту информацию. Почему-то мне это не встретилось нигде.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2015, 07:22
Помогаю со студенческими работами здесь

Bus error во многих приложениях
Здравствуйте. Внезапно, без каких-то видимых причин на моей системе (openSUSE Tumbleweed) перестали запускаться (или стали часто падать)...

Error BC30466: Namespace or type 'Data' for the Imports 'System.Data' cannot be found
.NET beta 2 Пытаюсь писать vb под asp.net и откомпилять в dll... Вот заголовок: Imports System Imports System.Web Imports...

Parse error: syntax error, unexpected 'data' (T_STRING), expecting ']' in
Ошибка: Parse error: syntax error, unexpected 'data' (T_STRING), expecting ']' in /home/bitrix/www/about/contacts/index.php on line 53 ...

Parse error: syntax error, unexpected 'data' (T_STRING), expecting ']' in
Вот код <a href="<?=$arFields;?> " > <img src="<? echo CFile::GetPath($arFields); ?> " alt="" data-bx-app-ex-alt="<? echo...

Ошибка - System.Windows.Data Error: 40 : BindingExpression path error: 'name' property not found on 'object' '
Здравствуйте, у меня есть Главное окно, есть 2 контрола. В 1-ом контроле у меня listBox, во втором label, соединяю я их в MainWindow. Так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru