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

 
 
 
Reply to this topicStart new topic
> STM32F - проблема с блоком прерываний, Программа падает, если пользую прерывания
A. Fig Lee
сообщение Jun 15 2011, 13:25
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Дали мне проект на работе под STM32 Cortex M3.
Надо готовый проект - 56 килобайт обрезать, выбросить не нужное
и загнать в 32 килобайта для более дешевого чипа.
Я его пообрезал, скомпилил и запустил.

Запустил на STM32F10xB-EVAL плате.
В IAR смог пройти несколько шагов - вылетел на 0хFFFFFFFFE - "CPU halted"
Закоментировал USB, RTC - заработало, в смысле луп крутится в айдле.
Добавил прерывание на SysTick - вылетел.
Закоментировал луп - сделал пустой - работает.
Интересная особенность - код
Код
if (function_return_false()) {
   call_big_function();
}

в лупе крашится (вылетает на 0х00000), хотя на call_big_function() попасть не может.
Если я меняю call_big_function() на коротенькую функцию
kick_watch_dog(), которая тоже не вызовется - все работает..

Никто не пхнет в правильном направлении?


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 15 2011, 14:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Не факт, что корень проблемы в прерываниях. Это может быть переполнение стека, выход за границы массива, неправильно сконфигурированное железо, помехи в питании и т.д.
Мой опыт показывает, что при таких непонятных глюках косвенные факты типа "тут закомментировал - больше не падает" не ведут к правильным выводам. Нужно пытаться собрать более точную информацию, приближающую к корню проблемы.
Ну и бывают тяжёлые случаи. Например, глюки компилятора или процессора. Первые ещё можно отловить отладчиком. А со вторыми остаётся только надеяться, что они все описаны в Errata.
Go to the top of the page
 
+Quote Post
brag
сообщение Jun 15 2011, 15:11
Сообщение #3


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

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



таблицу векторов проверьте
Go to the top of the page
 
+Quote Post
sayberex
сообщение Jun 15 2011, 20:45
Сообщение #4





Группа: Участник
Сообщений: 13
Регистрация: 18-11-07
Пользователь №: 32 429



И в добавок к сказанному scifi я еще дописал бы неправильные вычисления при работе с указателями когда попадаешь на access violation к примеру ну и еще наверное некорректные математические вычисления результатом коих может быть к примеру деление на ноль. А коли при вычислениях вводятся разные параметры то и ошибка вычисления может вылезать не каждый раз в коде в котором якобы ничего не менялось.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jun 16 2011, 12:50
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Спасибо, братцы..
Обрезал почти все до начальной инициализации..
Зову SysTick_Config(), потом
SCB->ICSR |= SCB_ICSR_PENDSTSET; - симулирую интеррапт - тут же вылетаю..

Как найду - сообщу результаты


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jun 16 2011, 13:15
Сообщение #6


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



А как обработчики прерываний объявлены, extern "C" не забыли?
http://electronix.ru/forum/index.php?showt...st&p=903847


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jun 16 2011, 13:39
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



LOL!
"Тупой и еще тупее".. 01.gif
Линкер файл. В опчем, проект был из 3х частей,
одна часть - бутлоадер 8к, основная часть - 56к.
И вот в этой основной части в линкер файле
таблица векторов была на 0х8002000 !!

"Позор Виктору Перестукину!" (с) 01.gif
brag как в воду глядел..
Первый проект на IAR, вчера только откопал где этот линкер файл лежит и как называется.

Уряяяяя!!!!! sm.gif


Цитата(SSerge @ Jun 16 2011, 09:15) *
А как обработчики прерываний объявлены, extern "C" не забыли?
http://electronix.ru/forum/index.php?showt...st&p=903847


Не, там чистый "С".


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:09
Рейтинг@Mail.ru


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