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

 
 
> Ошибка UNALIGNED ACCESS
ULF21
сообщение Dec 19 2016, 08:33
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 19-12-16
Пользователь №: 94 685



Здравствуйте
Периодически программа попадает в HardFault_Handler При этом в регистре HFSR выставлен бит FORCED и в регистре UFSR выставлен бит UNALIGNED.
То есть возникает отказ программы - usage fault который приводит в обработчик HardFault_Handler.
В проекте используется STM32F417, FreeRtos, LWIP. В большинстве случаев при ошибке в стеке находятся функции LWIP. Ошибка возникает крайне редко один раз в
несколько дней.
Программа компилируется с флагом --no_unaligned_access.
Из-за чего возникает ошибка понятно - при использовании некоторых инструкций обращения к памяти с выставленной единицей в младших битах может возникать такая ошибка.
Неясно почему возникает такая ошибка с включённым флагом --no_unaligned_access да ещё и раз в несколько дней и второе возможно ли обработать или игнорировать
эту ошибку и продолжить выполнение программы дальше?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Alex A. Mihaylov
сообщение Dec 19 2016, 09:07
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 15-11-10
Из: Санкт-Петербург
Пользователь №: 60 892



Можно и обработать и продолжить. Документация по ядру ARM cortex-[какой-там-у-вас] вам в помощь. Для Uboot и linux в свое время невыравненный доступ именно так и делался (перехватом HardFault и возвратом назад с нужными значениями, полученными побайтно). Персонально у меня готового решения нет.

Почему ток происходить? А сам lwip как собирается? А пакеты нормальные приходят? Может раз в день битый пакет ловим (и не фильтруем)? Луна в козероге в конце концов. Маловероятно что вот так кто-то разберется что у вас происходит.
Go to the top of the page
 
+Quote Post
novikovfb
сообщение Dec 19 2016, 09:10
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



Почему происходит: Вероятно, где-то в программе есть нехорошие манипуляции с указателями (указатель на char присваивается указателю на int и т.п.).
По-хорошему, ошибку надо найти и исправить, потому что не исключены неправильные результаты без HARD FAULT.
Go to the top of the page
 
+Quote Post
krux
сообщение Dec 19 2016, 11:24
Сообщение #4


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



поскольку всё равно
Цитата
Программа компилируется с флагом --no_unaligned_access.

предлагаю выкинуть по тексту все char и им подобные, а использовать только 32-разрядные переменные в чистом виде.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post

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

 


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


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