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

 
 
> Ошибка UsageFault_Handler в STM32F103RE
lehacheb
сообщение May 20 2015, 07:09
Сообщение #1


Участник
*

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



Использую процессор STM32F103, среда IAR 6.21. Пытаюсь на нем запустить GUI STemWin. Как будто уже заработало, но никак не могу избавиться от досадной ошибки. Обнаружил, что при иннициализации GUI процессор вылетает в ошибку CMSIS UsageFault_Handler. Отладчиком прошел и обнаружил, на какой именно команде вылетает - ассемблерная команда BLX R1, и что интересно, если в отладчике поставить брэйкпойнт на эту команду, а после остановки запустить выполнение программы дальше, программа в ошибку не вылетает, иннициализация GUI проходит и дальше все работает. Загружал уже много примеров из GUI, начал делать свое приложение. Но ошибка никуда не делась, программа остается нерабочей, запустить можно только с дебаггером. При вылете в UsageFault_Handler в регистре CFSR устанавливается флаг ошибки INVSTATE. Вот тут http://badembed.ru/hard-fault-memmanage-fa...ault-cortex-m3/ прочитал, что это может происходить при некорректном переходе из режима Thumb в ARM при выполенении команды безусловного перехода BLX, из-за неправильной установки младшего бита в команде из-за разности выравнивания по границе слова при переходе из 16-битного в 32-битный режим. При проходе отладчиком ничего некорректного не обнаружил (ну да оно и не зависает при пошаговой отладке этого места). Самое главное, что что-то изменить в этом коде я не могу, так как не имею исходников GUI, а подключаю откомпилированию библиотеку, скаченную с сайта st.com, и кусок ассемблерного кода с зависанием оттуда. Размеры и адреса памяти у меня вроде заданы правильно, увеличение размера стека не помогает. Также как и попытки методом тыка поменять опции проекта и настройки компилятора. Я понимаю, что наверное мало кто работал именно с emWin, и может быть это какой-то баг GUI, но уж точно кто-то сталкивался с такой ошибкой или просто хорошо разбирается, и подскажут что можно сделать
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lehacheb
сообщение Jun 4 2015, 05:23
Сообщение #2


Участник
*

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



Пробовал компилировать в разных версия IAREW ARM (6.50, 7.40). В принципе ничего не меняется. В зависимости от кода, опций компилятора и еще непонятно чего вылетает в разных местах кода,
ошибки разные (HardFault_Handler, BusFault_Handler, UsageFault_Handler), биты в регистре CFSR выскакивают тоже разные (INVSTATE, IACCVIOL, PRECISERR, IMPRECISERR, BFARVALID).
Никакое изменение опций проекта не помогает. Взял все настройки из примера проекта, который идет с библиотекой, не помогло.
Кроме младшего бита 0 в команде BLX программа может также вылетать по команде перехода по адресу, превышающему размеры FLASH (больше 0x807 FFFF). Как такое может быть?
Может кто-нибудь подскажет, куда обратиться за техподдержкой?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 6 2015, 07:44
Сообщение #3


Гуру
******

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



Вылетать fault из-за попытки переключения в ARM-режим может например если у Вас есть функция в asm-файле и перед ней Вы забыли указать директиву THUMB.
По дефолту IAR скомпилит функцию в ARM-режим и при попытке её вызова и будет означенный fault.

Цитата(lehacheb @ Jun 4 2015, 11:23) *
ошибки разные (HardFault_Handler, BusFault_Handler, UsageFault_Handler), биты в регистре CFSR выскакивают тоже разные (INVSTATE, IACCVIOL, PRECISERR, IMPRECISERR, BFARVALID).
...
Кроме младшего бита 0 в команде BLX программа может также вылетать по команде перехода по адресу, превышающему размеры FLASH (больше 0x807 FFFF). Как такое может быть?

Из-за тысячи причин. Например: внутри функции разрушаете стек и при попытке возврата из функции происходит переход по левому адресу.
Очевидно Вам следует заняться отладкой своего кода и поиском багов в нём.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- lehacheb   Ошибка UsageFault_Handler в STM32F103RE   May 20 2015, 07:09
- - Obam   Исходить надо из того, что Cortex-M не может иметь...   May 20 2015, 08:08
- - lehacheb   Значение R1 0x08004C30, да, ноль Получается ошибка...   May 20 2015, 08:16
- - Golikov A.   может где-то можно поставить ключик линкера/компил...   May 20 2015, 09:47
- - lehacheb   Да вот пытаюсь что-то найти, в настройках компилят...   May 20 2015, 11:54
|- - Obam   Цитата(lehacheb @ May 20 2015, 15:54) Да ...   May 20 2015, 12:13
- - lehacheb   Нет, я конечно выбираю контроллер STM32F10XXE. Вер...   May 20 2015, 12:27
|- - lehacheb   Цитата(jcxz @ Jun 6 2015, 10:44) Вылетать...   Jun 8 2015, 04:37
|- - Obam   Цитата(lehacheb @ Jun 8 2015, 08:37) Так ...   Jun 8 2015, 06:34
|- - KnightIgor   Цитата(lehacheb @ Jun 8 2015, 05:37) Так ...   Jun 8 2015, 06:37
|- - jcxz   Цитата(lehacheb @ Jun 8 2015, 10:37) Так ...   Jun 8 2015, 12:38
|- - lehacheb   Цитата(jcxz @ Jun 8 2015, 15:38) Вы что п...   Jun 9 2015, 08:17
|- - jcxz   Цитата(lehacheb @ Jun 9 2015, 14:17) Я не...   Jun 10 2015, 02:35
|- - lehacheb   Цитата(jcxz @ Jun 10 2015, 05:35) Вы сами...   Jun 10 2015, 05:18
- - Golikov A.   не проигнорят, ответят что разберутся, и вот тогда...   Jun 8 2015, 17:02
- - lehacheb   Цитата(Golikov A. @ Jun 8 2015, 20:02) не...   Jun 9 2015, 04:49
- - KnightIgor   Цитата(lehacheb @ Jun 9 2015, 05:49) Нет,...   Jun 9 2015, 06:48


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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 01:31
Рейтинг@Mail.ru


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