Как узнать номер прерывания /GPIO для конкретного вывода в linux

Я делаю проект, в котором мне нужно обрабатывать прерывание в Linux.

плата, которую я использую, представляет собой ARM9Board на основе MCU s3c6410 от Samsung (процессор 11-го уровня) и имеет следующие Интерфейс ввода/вывода:

enter image description here

поскольку изображение показывает, что у меня есть контакты EINTx для внешних прерываний и контактов GPxx как контакты GPIO, и я не против использовать их, но у меня нет их номеров!

Для контактов EINTx:

когда я звоню

int request_irq(unsigned int irq, void (*handler)(int, struct pt_regs *), 
unsigned long flags, const char *device); 

Мне нужно номер прерывания, чтобы передать его как первый параметр функции, так как я могу получить номер irq, например, контакт EINT16?

Для контактов GPxx: та же история, что и мне нужен GPIO pin nuumber, чтобы передать его этим функциям

int gpio_request(unsigned gpio, const char *label);
int gpio_direction_input(unsigned gpio);
int gpio_to_irq(unsigned gpio);

i.e Как узнать номер GPIO для вывода GPP8?

я искал документы и табличные документы, но в нем нет ничего о том, как получить эти цифры, какую-либо идею или помощь в том, где искать?

Ответ 1

Встраиваемый Linux, который вы используете, должен иметь драйвер GPIO с операторами #define для контактов GPIO. Затем вы можете получить номер IRQ конкретного GPIO, используя что-то вроде:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

Поддержка Linux GPIO lib для этого конкретного чипа доступна в следующем файле:

Linux/арка/рука/маш-s3c6400/включать/маш/gpio.h

Здесь вы найдете все операторы #define для разных GPIO.

См. раздел о соглашениях GPIO в своей документации:

http://www.kernel.org/doc/Documentation/gpio/gpio.txt

Ответ 2

Я тоже работал над контактом GPIO, но на другой плате AM335x. Просто, чтобы вы знали, есть немного способов сделать это. Один из методов, который мы используем, - использование платы памяти для доступа (записи или чтения) вывода GPIO.

Это действительно хорошая статья, которая поможет мне заставить все работать. Зарегистрировать доступ к GPIOs Beaglebone через сопоставление памяти