2012-06-26 14 views
10

estoy haciendo un proyecto en el que necesito manejar una interrupción en Linux.cómo saber el número de Interrupt/GPIO para un pin específico en linux

la junta que estoy usando es un ARM9Board basado en el S3C6410 MCU por Samsung (brazo 11 de procesador) y tiene la siguiente interfaz I/O:

enter image description here

como la imagen muestra que tengo EINTx pines para interrupciones externas y pines GPxx como pines GPIO y no me importa usarlos, ¡pero no tengo sus números!

Para pernos que EINTx:

cuando llamo

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

necesito el número de interrupción que pasarla como el primer parametro de la función, así que ¿cómo puedo obtener el número de IRQ, por ejemplo, el pin EINT16?

Para pernos que GPxx: la misma historia que necesito el nuumber pin GPIO pasarlo a esas funciones

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

es decir ¿Cómo puedo saber el número de GPIO para el pasador GPP8?

busqué en los documentos de la junta y en la hoja de datos pero no contiene nada sobre cómo obtener esos números, alguna idea o ayuda sobre dónde buscar?

Respuesta

8

El Linux integrado que está utilizando debe tener un controlador GPIO que tenga instrucciones #define para los pines GPIO. A continuación, puede obtener el número IRQ del GPIO específica usando algo como:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

El apoyo lib Linux GPIO para ese chip en particular está disponible en el siguiente archivo:

linux/arch /arm/mach-s3c6400/include/mach/gpio.h

Allí encontrará todos los #define declaraciones para los diferentes GPIO.

están en la sección de Convenciones GPIO en su documentación:

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

+0

el kernel suministrado con el tablero tiene un controlador GPIO en/drivers/gpio pero ninguno de los archivos c tiene un #define para los pines, y encontré /include/linux/gpio.g pero contiene solo el declaración para funciones como gpio_request y gpio_to_irq pero no #define –

+0

¿Qué placa está usando? –

+0

este http://www.arm9board.net/sel/prddetail.aspx?id=365&pid=200 –

0

que estaba haciendo algún trabajo en el pin GPIO así pero es sobre una tabla diferente, AM335x. Solo para decirte, hay muy pocas formas de hacerlo. Uno de los métodos que estamos usando es el uso de la tarjeta de memoria para acceder (escribir o leer) el pin GPIO.

Este es un artículo realmente bueno para ayudarme a poner las cosas en marcha. Register access to the GPIOs of the Beaglebone via memory mapping

Cuestiones relacionadas