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

 
 
> Определение источника IRQ прерывания
Kirill_Good
сообщение Jan 24 2013, 15:31
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528



Добрый день, помогите с определением источника прерывания в системе. В драйвере есть handler, который регистируется при probe драйвера. Как узнать того кто спровоцировал это прерывание? Схематики платы нет, информации по тому какие пины, какая именно модель микросхемы привязана нет. Можно ли начать плясать от исходников драйвера? Как и куда смотреть дальше чем код драйвера? Может из комментариев в коде можно понять. Где табличка с IRQ. Знания в этой области размазанные, не получается выстроить логическую дорожку. Есть документация на проц.

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kurtis
сообщение Jan 24 2013, 19:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Я так понимаю, что вам известен номер прерывания и по нему нужно определить какой это пин?

Думаю что это сильно зависит от архитектуры процессора, например для процессоров от freescale, макрос gpio_to_irq() выглядит так
Цитата
#define gpio_to_irq(gpio) (MXC_GPIO_IRQ_START + (gpio))

где MXC_GPIO_IRQ_START это
Цитата
#ifdef CONFIG_MXC_TZIC
#define MXC_INTERNAL_IRQS 128
#elif defined CONFIG_ARM_GIC
/* assuem 256 is enough for GIC */
#define MXC_INTERNAL_IRQS 256
#else
#define MXC_INTERNAL_IRQS 64
#endif

#define MXC_GPIO_IRQ_START MXC_INTERNAL_IRQS


Т.е. грубо говоря, gpio_to_irq(pin) это равно (#ЧИСЛО + pin), и дальше уже нужно смотреть как представляются пины в вашей конкретной архитектуре, например e freescale, регистры gpio разбиваются на банки по 32 gpio. Если нужно обратиться к 5-му пину, 4-ого банка, то значение Pin будет равно ((4-й банк-1)*32 + 5-й пин) = (3 * 32 + 5) = 101. Но, например, для самсунгов, там уже как-то по другому.

По этому, если вам нужно определить pin, то нужно посмотреть в каком виде и как пины представляются для вашей архитектуры.

Цитата
Флаг SHARED?

Вы бы сообщили о какой платформе речь идет? Я не уверен, но мне кажется что флаг SHARED характерен для x86 артитектуры, на arm я с ним не сталкивался, как на других - не знаю.
Go to the top of the page
 
+Quote Post
Kirill_Good
сообщение Jan 24 2013, 19:26
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528



Платформа ST если не ошибаюсь или SH , на счет флага разделения можно наверно в документе найти. На самом деле волнует вопрос кто может быть еще источником прерывания, кроме пина? Кто может еще заставить выполниться обработчику? А если речь идет gpio to irq, то получается что есть пин у SoC внешний, к нему от девайса тянется дорожка , у последнего это тоже выделенный пин, который занимается только генерацией прерывания. Просто девайс в моем случае это ИК приемник, неужели у него столько выводов ? Или же просто шлется какой то код по линии дата, SoC складывает это в регистр и генерит прерывание по внутренней линии что есть какие то даные, хотя у меня это ошибочное событие возникает один раз. Макрос gpio to irq точно говорит о том что внешний девайс должен иметь выделенный пин прерывания?

Или меня не туда несет?
Go to the top of the page
 
+Quote Post



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

 


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


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