Как узнать номер прерывания /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 через сопоставление памяти