jak poznać numer przerwania / GPIO dla określonego pin w Linuksie

Robię projekt, w którym muszę poradzić sobie z przerwaniem w Linuksie.

Płyta, której używam, to ARM9Board oparty na MCU S3C6410 firmy Samsung (procesor arm 11) i ma następujący interfejs We / Wy:

Tutaj wpisz opis obrazka

Jak widać na obrazku mam piny EINTx dla zewnętrznych przerwań i piny GPxx jako piny GPIO i nie mam nic przeciwko użyciu żadnego z nich, ale nie mam ich numerów !

Dla pinów EINTx:

When I call

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

I potrzebujesz numer przerwania, aby przekazać go jako pierwszy paramter funkcji, więc jak Mogę uzyskać numer irq na przykład pin EINT16 ?

Dla pinów GPxx: ta sama historia, jak muszę GPIO pin nuumber przekazać go do tych funkcji

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

Czyli jak poznać numer GPIO dla GPP8 pin ?

Przeszukałem dokumenty tablicy i arkusz danych, ale nie zawiera nic o tym , jak zdobyć te numery, jakiś pomysł lub pomoc, gdzie szukać ?

Author: embedded.kyle, 2012-06-26

2 answers

Wbudowany Linux, którego używasz, powinien mieć sterownik GPIO, który ma #define instrukcje dla pinów GPIO. Następnie można uzyskać numer IRQ konkretnego GPIO za pomocą czegoś takiego jak:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

Obsługa Linux GPIO lib dla tego konkretnego układu jest dostępna w następującym pliku:

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

Tam znajdziesz wszystkie #define wypowiedzi dla różnych GPIO.

Zobacz sekcję o GPIO Konwencje w ich dokumentacji:

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

 8
Author: embedded.kyle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-27 09:30:29

Pracowałem też nad pinem GPIO, ale jest on na innej płycie, AM335x. tak dla twojej wiadomości, jest na to sporo sposobów. Jedną z metod, których używamy, jest użycie płyty pamięci, aby uzyskać dostęp (zapis lub odczyt) pin GPIO.

To jest naprawdę dobry artykuł, który pomoże mi uruchomić rzeczy. Zarejestruj dostęp do GPIOs z Beaglebone poprzez mapowanie pamięci

 0
Author: jlsl2008,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 13:36:28