|
Ошибка UsageFault_Handler в STM32F103RE |
|
|
|
May 20 2015, 07:09
|
Участник

Группа: Участник
Сообщений: 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, но уж точно кто-то сталкивался с такой ошибкой или просто хорошо разбирается, и подскажут что можно сделать
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Jun 9 2015, 04:49
|
Участник

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

|
Цитата(Golikov A. @ Jun 8 2015, 20:02)  не проигнорят, ответят что разберутся, и вот тогда проигнорят... Только если проблема такая только у вас, то ответа будете ждать очень долго.... Нет, не только у меня! Вот у товарища Muhammadа такая же проблема, товарищ Хайзенберг хотел ему помочь, но все заглохло, а мне не отвечают. https://my.st.com/public/STe2ecommunities/m...currentviews=84А вообще планирую попробовать перейти на CooCox
|
|
|
|
|
Jun 9 2015, 06:48
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(lehacheb @ Jun 9 2015, 05:49)  Нет, не только у меня! Вот у товарища Muhammadа такая же проблема, товарищ Хайзенберг хотел ему помочь, но все заглохло, а мне не отвечают. Если посмотреть код и значения регистров, видно, что есть непроинициализированные структуры. В частности, инструкция по адресу 0х0800680E загрузила в R0 некоторый указатель. Затем со смещением 0x0C относительно него грузится R1, а затем по R1 со смещением 0x30 - регистр R2, по которому происходит улет. Похоже на таблицы виртуальных функций. Однако R0 равен NULL! Поэтому ни R1, ни затем R2 не могут быть правильными вообще. Из этого я предполагаю, что инициализация библиотеки произошла не полностью. Возможно, кроме GUI_Init() надо вызвать какие-то функции еще. Например, <гадание> драйверы железа, и т.п. </гадание>
|
|
|
|
Сообщений в этой теме
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 Пробовал компилировать в разных версия IAREW ARM (... Jun 4 2015, 05:23 jcxz Вылетать fault из-за попытки переключения в ARM-ре... Jun 6 2015, 07:44  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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|