Здравствуйте.
Требуется выводить битовый поток посредством GPIO со скоростью порядка 5 мегагерц в секунду
На текущий момент получается со скоростью 1.5 Мгц
На текущий момент задача решается в лоб:
Код
if (tmp & 0x01) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x02) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x04) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x08) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x10) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x20) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x40) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
if (tmp & 0x80) set(LED_SDI); else clr(LED_SDI); set(LED_CLK); asm ("nop"); clr(LED_CLK);
...
Собственно интересует, существует-ли какой-либо быстрый ввод-вывод для данного семейства (fast IO).
И интересует, как работают прерывания от периферии в Linux - скорость перехода в прерывание, и возможность обработки этого прерывания в течение длительного времени (порядка десятков, максимум сотни мс).