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

 
 
 
Reply to this topicStart new topic
> STM32F407VET6 Вызов неприсвоенного прерывания, Вектор 0x1С - RESERVED
nanorobot
сообщение Jan 28 2016, 15:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Дивайс на STM32F407 под ChibiOs. Ubuntu + Eclipse + GCC. Происходит незапланированное прерывание. Обработчик дефолтный - пустой. Поставил отдельные затычки на каждый незапланированный вектор. Выяснил, что прерывание проискодит по вектору 0х1С - то есть Reserved. Что бы это могло значить??

Сообщение отредактировал nanorobot - Jan 28 2016, 15:29
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 28 2016, 15:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (nanorobot @ Jan 28 2016, 17:22) *
Происходит незапланированное прерывание.

Как это выяснили?
QUOTE
Обработчик дефолтный - пустой.

Загадочная фраза. Что Вы хотели сказать? То, что у Вас этого обработчика нет? То, что он есть, но не вызывается? То, что есть, но просто заглушка?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jan 28 2016, 15:50
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(zltigo @ Jan 28 2016, 20:39) *
Как это выяснили?

Загадочная фраза. Что Вы хотели сказать? То, что у Вас этого обработчика нет? То, что он есть, но не вызывается? То, что есть, но просто заглушка?


прошу прощения, некорректно выразился. именно заглушка одна на все неиспользуемые осью вектора.
я сделал индивидуальные заглушки на каждый вектор .


Цитата(nanorobot @ Jan 28 2016, 20:48) *
прошу прощения, некорректно выразился. именно заглушка одна на все неиспользуемые осью вектора.
я сделал индивидуальные заглушки на каждый вектор .



в моем случае управление улетало на эту самую общую заглушку.
сейчас улетает на заглушку вектора 0х0000001С
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 28 2016, 16:16
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Допустим, испортился стек, и при возврате из функции процессор улетел, куда попало.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jan 28 2016, 16:26
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(ViKo @ Jan 28 2016, 21:16) *
Допустим, испортился стек, и при возврате из функции процессор улетел, куда попало.



да... с указателями намудрил
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 28 2016, 16:27
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (ViKo @ Jan 28 2016, 18:16) *
Допустим, испортился стек, и при возврате из функции процессор улетел, куда попало.

Да, наиболее вероятный случай. "Куда попало" оказалось этой самой заглушкой. Начать с простого - в этой заглушке прежде всего глянуть а действительно-ли сейчас режим прерывания и адрес возврата.
Но может, конечно и контролер чудить. Но с этим уже разбираться полсле того, как станет ясно, что действительно контроллер прерываний послал.
У Автора, правда "M" кортекс, а не "А" - у эмок с контролером прерыаний вроде все без затей.




--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 29 2016, 05:38
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Так а самый простой вариант - это прерывание кто-то включил и оно иногда срабатывает - не рассматривали? Плюс любое прерывание можно активировать софтварно...
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 29 2016, 07:25
Сообщение #8


Гуру
******

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



Цитата(Непомнящий Евгений @ Jan 29 2016, 08:38) *
Так а самый простой вариант - это прерывание кто-то включил и оно иногда срабатывает - не рассматривали? Плюс любое прерывание можно активировать софтварно...

Интересно, какое прерывание работает через вектор 0x1C? Хочу всё знать.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 29 2016, 07:51
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(scifi @ Jan 29 2016, 10:25) *
Интересно, какое прерывание работает через вектор 0x1C? Хочу всё знать.

Давайте поточнее в терминологии.
Что такое вектор 0x1C? Это 28-прерывание, закрепленное за TIM2?
Или адрес, по которому должен лежать адрес обработчика?
Напомню, что в отличии от AVR, в таблице векторов прерываний размещается не код, а адреса подпрограмм прерываний.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 29 2016, 07:53
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Зарезервированное sm.gif

Ок, тогда присоединяюсь к комментаторам выше
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Jan 31 2016, 13:20
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(nanorobot @ Jan 28 2016, 17:22) *
Выяснил, что прерывание проискодит по вектору 0х1С - то есть Reserved. Что бы это могло значить??


Может где-то некорректный define?.
ChibiOs генерит программное(системное) прерывание для своих нужд для другого процессора в котором этот вектор задействован.

Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 31 2016, 17:36
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(misyachniy @ Jan 31 2016, 16:20) *
Может где-то некорректный...

подход?

Как я понял со слов ТС. Он по адресу 0x1C разместил адрес заглушки - подпрограммы, которая размещается, например, по адресу 0x0800_1500.
По непонятным причинам PC улетает в окрестность 0x0800_1500, что ТС воспринимает как вызов зарезервированного прерывания,
лечит не там, где надо и заодно путает нас)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Feb 1 2016, 12:51
Сообщение #13


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Может еще такое случиться: случилось прерывание с вектором по меньшему адресу, а там заглушки не было -- оно и доислолнялось до этой заглушки.
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 1 2016, 13:50
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Tarbal @ Feb 1 2016, 15:51) *
Может еще такое случиться: случилось прерывание с вектором по меньшему адресу, а там заглушки не было -- оно и доислолнялось до этой заглушки.

Не может.
Вызов прерывания - это не переход на программу обработки прерывания, а копирование адреса из таблицы векторов прерываний и переход по этому полученному адресу. Если бы случилось прерывание с меньшим номером, скопировался бы соответствующий для него адрес обработчика, а это никак не связано с адресом следующего обработчика - тут вам не AVR, где в таблице векторов размещались не адреса, а инструкции обработчика (да, чаще всего там был безусловный переход или iret).
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Feb 1 2016, 15:17
Сообщение #15


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(adnega @ Feb 1 2016, 16:50) *
Не может.
Вызов прерывания - это не переход на программу обработки прерывания, а копирование адреса из таблицы векторов прерываний и переход по этому полученному адресу. Если бы случилось прерывание с меньшим номером, скопировался бы соответствующий для него адрес обработчика, а это никак не связано с адресом следующего обработчика - тут вам не AVR, где в таблице векторов размещались не адреса, а инструкции обработчика (да, чаще всего там был безусловный переход или iret).


Ну тогда не может sm.gif
Go to the top of the page
 
+Quote Post

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

 


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


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