Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
прерывание в Linux
ARMbeginner
Добавлено 18.08.2012 22:06
0
Сообщение: 1
ARMbeginner
5

Пункты: 311
Регистрация: 30.05.2012
Очень нужно разобраться с прерываниями в Linux.
Читаю "Linux Device drivers", есть функция:

int request_irq(unsigned int irq,

irqreturn_t (*handler)(int, void *, struct pt_regs *),

unsigned long flags,

const char *dev_name,

void *dev_id);


Например, нужно задать прерывание от USART, или от SPI_ENDRX, и не знаю как задать подобные прерывания(а речь идёт именно о "внутренних" прерываниях) в модулях Linux. Наверное функция "request_irq" принимает в качестве "unsigned int irq" некое число, которое и определяет источник, но где определены эти числа никак не могу найти.
Спуститься к концу Подняться к началу
Персональная информация
dx
Добавлено 19.08.2012 08:29 Сообщение: 2
dx
3.5

Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
Вок к примеру для at91sam9260:
http://lxr.free-electrons.com/source/arch/arm/mach-at91/include/mach/at91sam9260.h#L17

ID переферии и есть тем числом
Спуститься к концу Подняться к началу
Персональная информация
ARMbeginner
Добавлено 19.08.2012 08:49 Сообщение: 3
ARMbeginner
5

Пункты: 311
Регистрация: 30.05.2012
Цитата
Вок к примеру для at91sam9260:
http://lxr.free-electrons.com/source/arch/arm/mach-at91/include/mach/at91sam9260.h#L17

ID переферии и есть тем числом


Премного благодарен. А если у меня заданы прерывания от SPI и по приёму и по передаче(или одновременно невозможно?) - всё равно нужно просто указать SPI Peripherial ID?
Спуститься к концу Подняться к началу
Персональная информация
dx
Добавлено 19.08.2012 10:21 Сообщение: 4
dx
3.5

Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
В обработчике Вы должны проверять SPI_SR

http://lxr.free-electrons.com/source/drivers/spi/spi-atmel.c#L575
Спуститься к концу Подняться к началу
Персональная информация
dx
Добавлено 19.08.2012 10:24 Сообщение: 5
dx
3.5

Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
imr = spi_readl(as, IMR);
status = spi_readl(as, SR);
pending = status & imr;

if (pending & SPI_BIT(OVRES)) {
...
} else if (pending & (SPI_BIT(RXBUFF) | SPI_BIT(ENDRX))) {
...
}else if ....
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux