cpl, я тоже уже начал склоняться к написанию драйвера для gpio. Но так как драйверы не разу не писал, ни под Linux, ни под Windows, хочется как-то обойти пока это дело (хоть я понимаю что скорее всего не получится). Вот что нагуглил:
Цитата
Задержка через порты ввода/вывода
Другой способ обеспечить задержку в несколько микросекунд - это порты ввода/вывода. Запись или чтение любого значения из порта 0x80 (о том, как это сделать, см. выше) обеспечивает задержку почти точно равную одной микросекунде, независимо от типа и скорости вашего процессора. Чтобы обеспечить задержку в несколько микросекунд, вы можете выполнить эту операцию несколько раз. Запись в этот порт не оказывает никакого влияния на компьютер (и некоторые драйверы используют это). Таким образом, обычно выполняется задержка в {in|out}[bw]_p() (см. asm/io.h).
На самом деле, операции ввода/вывода на большинство портов в диапазоне от 0 до 0x3ff тоже дают задержку около одной микросекунды. Так что, если вы, например, производите запись в параллельный порт, для обеспечения задержки, просто добавьте дополнительные inb() из порта.
Вопрос такой, сколько процессорного времени занимает считать функцией read() 1 байт из файла драйвера gpio? И возможно ли с помощью этого управлять временем? Тогда можно было бы запускать цикл с нужным числом вызовов этой функции.
aaarrr, если под аппаратное реализацией вы имеете ввиду, припаивание еще какого-то внешнего девайса, то это категорически не подходит.