マルチポートシリアルアダプタ:ドライバをロードしても機能しません。

マルチポートシリアルアダプタ:ドライバをロードしても機能しません。

このシリアルアダプタを購入しました

ここに画像の説明を入力してください。

Debian は Linux で認識されます

lspci -k

02:00.0 Serial controller: Device 1c00:3253 (rev 10)
    Subsystem: Device 1c00:3253
    Kernel driver in use: serial 

連続レポート設定は正常です。

setserial -g /dev/ttyS0
/dev/ttyS0, UART: 16850, Port: 0xe8c0, IRQ: 16
setserial -g /dev/ttyS1
/dev/ttyS1, UART: 16850, Port: 0xe8c8, IRQ: 16

だから私はsystemdを使ってシリアルログインを有効にしました。

cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]
ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/
systemctl daemon-reload
systemctl start [email protected]

cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]
ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/
systemctl daemon-reload
systemctl start [email protected]

試してみるために2つのポートを有効にしましたが、そのうち何も機能しません。 Minicom -D 外部 PC または内部 PC では動作せず、黒い画面が表示されますが、シリアルアクティビティはありません。ソフトウェア/ハードウェア制御とソフトウェア/ハードウェア制御のない一般的な9600 8N1を設定しましたが、何も機能しません。古典的なechoコマンドを送信しても機能しません。

echo "proof" > /dev/ttyS0
cat -V < /dev/ttyS0 

なぜ動作しないのですか?

編集:インターネット検索では、ボードに外部(sic!)ドライバが必要であることがわかりました。もちろん、最新のカーネルでコンパイルされたコードを更新しないので、少し難しいです。

編集-2: 古いドライバが見つかりました

https://github.com/wd5gnr/WCH4SDriver.git

もちろんコンパイルはできませんが…

root/WCH4SDriver/wch_serial.c: In function ‘ser_wait_modem_status’:
/root/WCH4SDriver/wch_serial.c:1340:9: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-Werror=implicit-function-declaration]
     if (signal_pending(current))
         ^~~~~~~~~~~~~~
         timer_pending
/root/WCH4SDriver/wch_serial.c: In function ‘ser_open’:
/root/WCH4SDriver/wch_serial.c:2109:8: error: ‘struct tty_struct’ has no member named ‘alt_speed’
     tty->alt_speed = 0;
        ^~
/root/WCH4SDriver/wch_serial.c: In function ‘wch_ser_register_ports’:
/root/WCH4SDriver/wch_serial.c:3116:7: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration]
       init_timer(&sp->timer);
       ^~~~~~~~~~
       init_timers
/root/WCH4SDriver/wch_serial.c:3118:26: error: assignment to ‘void (*)(struct timer_list *)’ from incompatible pointer type ‘void (*)(long unsigned int)’ [-Werror=incompatible-pointer-types]
       sp->timer.function = wch_ser_timeout;

編集-3: これでガイドついにドライバーが動作するようになりました。 wch.ko /dev/ttyWCH0および/dev/ttyWCH1ドライバが2人の新しい開発者を作成しましたが、minicomを使用してまだログインできません...

答え1

解決策が見つかりました:逆ケーブルのインストール!誰かがシリアルポートケーブルの1つを逆さまに接続しました。ケーブルを正しい順序で交換した後、外部ドライバなしですべてがうまく機能します。

関連情報