2012-06-26 23 views
10

Tôi đang thực hiện một dự án mà trong đó tôi cần xử lý ngắt trong Linux.làm thế nào để biết số gián đoạn/GPIO cho một pin cụ thể trong linux

hội đồng quản trị Tôi đang sử dụng là một ARM9Board dựa trên MCU s3c6410 của Samsung (cánh tay 11 bộ vi xử lý) và nó có I/O giao diện sau:

enter image description here

như hình ảnh cho thấy tôi có EINTx chân cho các ngắt bên ngoài và GPxx pins như GPIO pins và tôi không nhớ sử dụng bất kỳ của họ nhưng tôi không có số của họ!

Đối EINTx chân:

khi tôi gọi

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

tôi cần số lượng ngắt để vượt qua nó như là paramter đầu tiên của hàm, vì vậy làm thế nào tôi có thể nhận được số irq ví dụ pin EINT16?

Đối GPxx chân: những câu chuyện tương tự như tôi cần pin nuumber GPIO để vượt qua nó với những chức năng

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

tức là làm thế nào để tôi biết số GPIO cho pin GPP8?

tôi đã tìm kiếm các tài liệu của bảng và biểu dữ liệu nhưng nó không chứa bất kỳ thứ gì về cách lấy các con số đó, bất kỳ ý tưởng hoặc trợ giúp nào về nơi cần tìm?

Trả lời

8

Linux nhúng bạn đang sử dụng phải có trình điều khiển GPIO có các câu lệnh #define cho các chân GPIO. Sau đó bạn có thể nhận được số IRQ của GPIO cụ thể sử dụng một cái gì đó như:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

Linux GPIO hỗ trợ lib cho rằng chip đặc biệt là có sẵn trong các tập tin sau đây:

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

Ở đó bạn sẽ tìm thấy tất cả các câu lệnh #define cho các GPIO khác nhau.

Xem phần ước GPIO trong tài liệu của họ:

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

+0

hạt nhân được cung cấp cùng với bảng có trình điều khiển GPIO tại/drivers/gpio nhưng không phải tệp c có #define cho các chân và tôi tìm thấy /include/linux/gpio.g nhưng nó chỉ chứa khai báo các hàm như gpio_request và gpio_to_irq nhưng không #define hoặc –

+0

Bạn đang sử dụng bảng nào? –

+0

trang này http://www.arm9board.net/sel/prddetail.aspx?id=365&pid=200 –

0

tôi đang làm một số công việc trên pin GPIO cũng nhưng đó là trên một tấm ván khác nhau, AM335x. Chỉ để cho bạn biết, có rất ít cách để làm điều đó. Một trong những phương pháp chúng tôi đang sử dụng là sử dụng bảng bộ nhớ để truy cập (viết hoặc đọc) chốt GPIO.

Đây là một bài viết thực sự hay giúp tôi làm việc. Register access to the GPIOs of the Beaglebone via memory mapping