Это может быть возможно, но чтобы получить это из Linux, аппаратное обеспечение должно иметь определенные характеристики:
- вам нужно программируемое устройство таймера, которое может создавать прерывания с достаточно высоким приоритетом, чтобы другие действия ядра Linux (такие как планирование или другие прерывания, даже) не выгружали / блокировали обработчик прерываний и с достаточной гранулярностью / частота, соответствующая ограничениям стабильности вашего сигнала
- электрическая линия "прямоугольная волна" также должна быть программируемой, и операция (запись в регистр? Отображение в память записи в регистр? Специальная инструкция ЦП? ...?), Которая переключает свое состояние, должна быть гарантирована быстрее, чем кратчайшее время цикла, используемое с таймер выше (или вы можете получить "частоту муара")
Если это так, то ваш специальный драйвер таймера может переключать линию из своего обработчика прерываний высокого первичного уровня и создавать прямоугольную волну. Поскольку он и управляется прерываниями, и отделен от обычных источников / потребителей прерываний таймера (т. Е. Не используется совместно - нет задержки от возможной отправки нескольких событий таймера на прерывание), у вас гораздо больше шансов на достаточную точность.
Поскольку все это (наличие отдельно программируемого таймерного устройства, для начала) зависит от аппаратного обеспечения, вам нужно начать со спецификаций вашего CPU / SoC / платы и выяснить, доступно ли несколько независимых таймеров. .