2016-10-19 35 views
1

アプリケーションは、USB経由でシリアル通信を使用し、PCがHDDから起動するときに正常に動作します。LIVE USBブートによるUSB経由でのシリアル通信

私は動作中のOSのliveUSBイメージ(.iso)を作成しました。 .isoイメージを含むUSBドライブから同じPCを起動しました。

ここで、DUTが接続され、アプリケーションが実行されます。これは、ほとんどの場合、の行に「」という行があることを報告します。しかし、それはいくつかの試みで動作しますが、それは非常に矛盾しています。

ライブUSBのブートとHDDのブートがどのように違うのか分かりませんでした。

FYI、PCには4.0.4 LinuxカーネルのFedora Core 22があります。

シリアル通信:ボーレートは115200で、1ストップビットです。

ご迷惑をおかけして申し訳ありません。

おかげで、

シャハブ

編集

私はdmesgをチェックし、ライブUSBブートに、

cdc_acm : failed to set dtr/rtsを違いを発見しました。それ以外の場合は見られません。これと同様にquestionがstackoverflowにあります。

また、デバイスが接続され、PCがLive USBスティックから起動すると、シリアル通信が正常に機能します。デバイスへのUSBケーブルが抜かれ、再度差し込まれた場合は、問題を報告します。

+0

ライブUSBとHHDのMBRが異なります。これは、USBスティックがBIOSによってどのようにフォーマットされ、表示されるかにも依存します。一部のBIOSでは、HDD、FDDなどの選択が可能です。 –

+0

@EugenKonkovコメントありがとうございます。しかし、どのようにMBRがシリアル通信を中断させるのか理解できませんでした。 – user3612463

+0

アプリケーションはHDDのようなフォーマットのデータを期待していますが、別のフォーマット(ISO)で取得します。そのため、上記のエラーが表示されます。どちらの場合でも受け取ったバイト単位を比較することができますか?受信したデータをファイルにダンプし、ファイルからアプリケーションにリダイレクトします。ファイルからデータをリダイレクトするときにアプリケーションでエラーが発生しない場合は、問題があることを確認します。エラーが発生した場合は、問題がデータ内にあります。 –

答えて

0

USBケーブルを再接続すると、シリアルポート番号が増えて、/ dev/ttyUSB0が死んでいる可能性があります。おそらくは新しい/ dev/ttyUSBXが動作しています。アプリケーションが/ dev/ttyUSB0を開いたままにすると、アプリを再起動するまで削除されません。古いttyUSB0を読み続けると、ゴミが出るでしょう。 2番目のヒントは、ライブから起動するときには読み込み専用のファイルシステムを持っているため、/ devフォルダに新しいものを作成できないため、新しいデバイスは表示されません。

+0

ありがとう。しかし、 'dmesg'コマンドを使用するたびに、デバイスが'/dev/ttyACM0'と表示されることがわかりました。 – user3612463

+0

毎回アプリケーションを再起動して、デバイスを再接続します。私は自分のアプリケーションを殺してから、デバイスを再接続します。 '/ dev/ttyACM0'として検出された後で、私はアプリケーションを起動します。 – user3612463

関連する問題