Использование socat для прямого последовательного соединения
Цель состоит в том, чтобы подключиться кembedded
использование устройстваserial
интерфейс. До сих пор я использовал:
stty -F /dev/ttyS2 115200 cs8 ixoff
socat readline,history=/etc/socat.history /dev/ttyS2,raw,echo=0
И это работает отлично, но потом я обнаружил, что во времяsystem boot
которые требуют от вас нажать одну клавишу без нажатияenter
, а такжеreadline
терпит неудачу там. Так что моя идея заключалась в том, чтобы связатьttyS2
вcons0
, но потом я обнаружил несколько проблем, таких как неспособность выйти (ctr+c
, ctr+q
ctr+]
и дажеesc
не работает),backspace
а такжеdelete
не работают, буквы набираются дважды и т. д. Итак, после некоторых проб и ошибок я придумал следующее:
socat /dev/cons0,raw,echo=0,crnl /dev/ttyS2,raw,echo=0,escape=0x03,crnl
raw
с обеих сторон позволяет одинkey press
вызватьboot option
echo=0
с обеих сторон мешаетkey press
удвоениеcrnl
с обеих сторон мешаютenter
key press
удвоениеescape=0x03
позволяет мнеquit
вещь нажатиемctr+c
Проблема в том, что когда я ухожуcons0
все чертовски, как будто оно каким-то образом сохранилоraw,echo=0,crnl
Настройки. Я знаю, что эта проблема, вероятно, слишком специфична для моего сценария, но мне просто нужен простой способ посылать нажатия клавиш на последовательный порт, как сputty
(который не доступен на моей платформе). я используюsocat
потому что он очень легкий, не требует дополнительных библиотек и потому что показанные команды являются частью большого скрипта, который используетexpect
.
Любые идеи и предложения с благодарностью.