Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка UNALIGNED ACCESS
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ULF21
Здравствуйте
Периодически программа попадает в HardFault_Handler При этом в регистре HFSR выставлен бит FORCED и в регистре UFSR выставлен бит UNALIGNED.
То есть возникает отказ программы - usage fault который приводит в обработчик HardFault_Handler.
В проекте используется STM32F417, FreeRtos, LWIP. В большинстве случаев при ошибке в стеке находятся функции LWIP. Ошибка возникает крайне редко один раз в
несколько дней.
Программа компилируется с флагом --no_unaligned_access.
Из-за чего возникает ошибка понятно - при использовании некоторых инструкций обращения к памяти с выставленной единицей в младших битах может возникать такая ошибка.
Неясно почему возникает такая ошибка с включённым флагом --no_unaligned_access да ещё и раз в несколько дней и второе возможно ли обработать или игнорировать
эту ошибку и продолжить выполнение программы дальше?
Alex A. Mihaylov
Можно и обработать и продолжить. Документация по ядру ARM cortex-[какой-там-у-вас] вам в помощь. Для Uboot и linux в свое время невыравненный доступ именно так и делался (перехватом HardFault и возвратом назад с нужными значениями, полученными побайтно). Персонально у меня готового решения нет.

Почему ток происходить? А сам lwip как собирается? А пакеты нормальные приходят? Может раз в день битый пакет ловим (и не фильтруем)? Луна в козероге в конце концов. Маловероятно что вот так кто-то разберется что у вас происходит.
novikovfb
Почему происходит: Вероятно, где-то в программе есть нехорошие манипуляции с указателями (указатель на char присваивается указателю на int и т.п.).
По-хорошему, ошибку надо найти и исправить, потому что не исключены неправильные результаты без HARD FAULT.
krux
поскольку всё равно
Цитата
Программа компилируется с флагом --no_unaligned_access.

предлагаю выкинуть по тексту все char и им подобные, а использовать только 32-разрядные переменные в чистом виде.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.