Цитата
1. Каким образом на C можно установить/прочесть сразу группу...
2. Можно ли как-то программно установить направление портов (ввод/вывод)?...
3. Реально ли из под Linux поймать IRQ?...
Можно все из перечисленного. Читайте DataSheet на AT91RM9200, раздел "Parallel Input/Output Controller (PIO)". На С все делается путем записи и чтения регистров PIO:
PIO Enable Register PIO_PER Write-only
PIO Disable Register PIO_PDR Write-only
PIO Status Register PIO_PSR Read-only
PIO Output Enable Register PIO_OER Write-only
PIO Output Disable Register PIO_ODR Write-only
PIO Output Status Register PIO_OSR Read-only
PIO Glitch Input Filter Enable Register PIO_IFER Write-only
PIO Glitch Input Filter Disable Register PIO_IFDR Write-only
PIO Glitch Input Filter Status Register PIO_IFSR Read-only
PIO Set Output Data Register PIO_SODR Write-only
PIO Clear Output Data Register PIO_CODR Write-only
PIO Output Data Status Register PIO_ODSR Read-only
PIO Pin Data Status Register PIO_PDSR Read-only
PIO Interrupt Enable Register PIO_IER Write-only
PIO Interrupt Disable Register PIO_IDR Write-only
PIO Interrupt Mask Register PIO_IMR Read-only
PIO Interrupt Status Register PIO_ISR Read-only
PIO Multi-driver Enable Register PIO_MDER Write-only
PIO Multi-driver Disable Register PIO_MDDR Write-only
PIO Multi-driver Status Register PIO_MDSR Read-only
PIO Pull-up Disable Register PIO_PUDR Write-only
PIO Pull-up Enable Register PIO_PUER Write-only
PIO Pad Pull-up Status Register PIO_PUSR Read-only
Поскольку регистры 32-разрядные, то возможно чтение или запись сразу до 32 бит.
Если использовать утилиту GPIO, то, конечно, все делается медленно, вот пример скрипта, выдает на ножку PB22 сигнал с частотой 1 герц:
#!/bin/sh
while [ 1 ]; do
/usr/bin/gpio +PB22
sleep 1
/usr/bin/gpio -PB22
sleep 1
done
Для быстрого управления нужно писать программу на С.