Это довольно сжатые сроки.OrangePi Zero работает на частоте 1,2 ГГц, поэтому 150 нс - это 180 тактов.Это не дает вам времени на многое.
Первое, что нужно сделать, это использовать ktime_get_ns (), чтобы просто измерить, сколько времени занимает вызов gpio_set_value ().Или уберите задержку и измерьте ее прицеломВозможно, вы уже знаете ответ, если вы задержали 350 нс и измерили 920 нс, тогда это займет около 600 нс.
Вы вызываете gpio_set_value (), которая включает безопасную, переносимую библиотеку Linux gpio.Максимально возможная производительность будет состоять в том, чтобы написать свой собственный драйвер для GPIO, который идет прямо в регистры HW и устанавливает два состояния с задержкой как одно действие.
Даже с пользовательским драйвером вы 'Будут задержки, вызванные часами, приводящими в движение gpio, и временем нарастания и спада устройства.