ZyboにUbuntuからRS232Cで接続してZyboへ入力できない

2022年10月22日

問題発生状況

  • ZyboのPSをVitisで開発し、シリアル通信でキーボード入力を受け付けたい
  • Ubuntu20.04のcuコマンドでZybo側からの出力(printfxil_printf)を確認した
    • 接続コマンドは下記の通り
      $ sudo chmod 666 /dev/ttyUSB1
      $ sudo cu -s 115200 -l /dev/ttyUSB
  • 次に、Zyboでinbyte関数を書いてUbuntu側からのキーボード入力を行おうとしたら、入力しても反応がない

解決策

  • cuコマンドからではなく、pySerialのminiterm.pyでシリアル接続する
  • 手順
    1. pySerialのライブラリをインストール
      $ pip3 install pyserial
    2. pySerialのソースをGithubからclone
      $ git clone https://github.com/pyserial/pyserial.git
    3. miniterm.pyを実行
      $ python3 pyserial/serial/tools/miniterm.py /dev/ttyUSB1 115200
  • (きれいな方法ではないが、これでフロー制御OFFで通信できた。試した他のアプローチは詳細に記載)

詳細

問題の原因

  • sttyコマンドで、cu接続の設定を確認したところ、フロー制御がONになっており、これが問題らしい
    (下記のixonの部分)
    $ stty -a -F /dev/ttyUSB1
    speed 115200 baud; rows 0; columns 0; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ;
    eol2 = ; swtch = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
    werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 1;
    -parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal crtscts
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff
    -iuclc -ixany -imaxbel -iutf8
    -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
    -echoprt echoctl echoke -flusho -extproc

失敗アプローチ

  • すべて詳細未調査

失敗1:フロー制御をOFFにしてcuコマンドを使う

  • stty -a /dev/ttyUSB1 -ixonでフロー制御をOFFにできそうだった(接続前はixon-ixonになっていることは確認した)が、いざ接続してみるとixonになっていた

失敗2: miniterm.pyコマンドを使えるようにする

  • 下記のコマンドでpython-serialパッケージのインストールを試みたが、エラー
    $ sudo apt-get update
    $ sudo apt install -y python-serial

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    E: Unable to locate package python-serial

失敗3: miniterm-3.pyコマンド(?)を使えるようにする

  • 下記のコマンドでpython3-serialパッケージをインストール
    $ sudo apt install python3-serial
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Suggested packages:
    python3-wxgtk3.0 | python3-wxgtk
    The following NEW packages will be installed:
    python3-serial
    0 upgraded, 1 newly installed, 0 to remove and 111 not upgraded.
    Need to get 72.4 kB of archives.
    After this operation, 478 kB of additional disk space will be used.
    Get:1 http://us.archive.ubuntu.com/ubuntu focal/main amd64 python3-serial all 3.4-5.1 [72.4 kB]
    Fetched 72.4 kB in 1s (71.8 kB/s)
    Selecting previously unselected package python3-serial.
    (Reading database … 249493 files and directories currently installed.)
    Preparing to unpack …/python3-serial_3.4-5.1_all.deb …
    Unpacking python3-serial (3.4-5.1) …
    Setting up python3-serial (3.4-5.1) …
  • miniterm-3.pyコマンドを実行したが、見つからない(miniterm.pyコマンドも同様)
    $ miniterm-3.py --help
    miniterm-3.py: command not found

参考サイト