Аппаратное обеспечение ввода: BeagleBone Black, с некоторым дистрибутивом GNU/Linux.Linux установил более высокую скорость передачи и связанные с ней настройки
Что я хочу достичь: Я хочу установить некоторые UART
периферийных для 921600
бода значения, и быть в состоянии установить другие последовательные-ассоциированные параметры (например, пуск/стоп-бит, четность, биты данных, управление HW потока, и т.д.).
До сих пор, в Linux, я обнаружил, по крайней мере, три способа настройки этих параметров:
- Использования
struct termios
файла формыtermios.h
заголовка. - Использование
struct termios2
отasm/termios.h
файл заголовка. - Использование утилиты GNU/Linux
stty(1)
.
чем проблема:
С первым методом я не могу использовать значение 921600
скорости (там нет определения для такого высокого значения, она идет только до 230400 baud
Так что этот метод не будет. работа.
Второй метод предлагает мне один способ изменить пользовательские baud
значения скорости, но также сложно, потому что он не предлагает некоторые функции, такие как tcgetattr()
, tcsendbreak()
, tcflush()
, и поэтому один. Эти функции присутствуют в первой -Описанный метод, и я не могу включить оба heade r файлов termios.h
и asm/termios.h
из-за (1).
Последний метод также не работает, или, по крайней мере, он не работает для всех параметров, которые я хочу сделать. Это текущий метод, который я использую, я открываю целевой файл, я получаю один файловый дескриптор, в этот дескриптор файла я устанавливаю параметры связи (бод (сначала я устанавливаю одно меньшее значение), четность, бит начала/остановки , и т. д.) с использованием первого метода, а затем я использую утилиту stty(1)
для изменения (переопределения) значения скорости передачи до 921600
(я делаю вызов функции system(...)
для выполнения этого).
Этот метод не работает, если я хочу, например, изменить HW flow control
(он не будет переопределять этот параметр, как это происходит с значением baud
).
Каковы решения?
Можно ли смешать два метода настройки параметров с помощью ссылки на связь UART
?
'setserial' выводит меня' Невозможно установить серийную информацию: недопустимый аргумент' при попытке установить параметр 'baud_base'. –
Вы уверены, что ваше оборудование поддерживает скорость 921600 бод? Попробуйте 'setserial -a/dev/<...>', чтобы просмотреть информацию о последовательном порту. – petrmikheev
См. Http://www.linurs.org/linux/SerialPort.html. – petrmikheev