シリアルポート情報ポーリング

シリアルポート情報ポーリング

まず、このような質問をする私が愚かだということを申し上げたいです。この情報はオンラインになければなりませんが、どこにも見つからないようです。私は一生懸命に見えるようですが、何も私が望むものを得ることができないようです。

状況はこんな感じです。 2つのLinuxミニボードがあります。メーカーとすべてがまったく同じです。ボードには12個のシリアルポートがあります。問題は、1つのボードではすべてのシリアルポートが正常に動作しますが、他のボードではすべてが混乱していることです。ほとんどは/ devディレクトリにないので見つかりません。

だから私は、ワークボード上のポートのIOアドレス(そして変更されていないと仮定するとIRQもあるでしょう)を見つけて、その情報を入手して/ devに新しいエントリを作成して問題を解決できると思いました。製造元はボードのピンがマップされるアドレスを変更しません。合理的だと思いますか?私が予想していないのは、実際に動作しているシステムからこの情報を取得するのに問題があるということです。

だから実際の質問はこれです:/ devに12個のエントリがあり、すべてシリアルポートにマッピングされており、すべて機能しますが、そのエントリから情報を取得するツールは機能しません。私が試したことは次のとおりです。


フィルタdmesg:

root@linaro-ubuntu:/dev# dmesg | grep tty
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p1 rootwait video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb1:off video=mxcfb2:off fbmem=28M vmalloc=400M
bootconsole [ttymxc0] enabled
imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
console [ttymxc0] enabled, bootconsole disabled
imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX
imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX
imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX
imx-uart.4: ttymxc4 at MMIO 0x21f4000 (irq = 62) is a IMX
init: tty1 main process (5754) killed by TERM signal

わかりました。良い情報のようです。 ttymxc0が端末であることを知っています。残りはシリアルポートを使用しています。 IOアドレスは大丈夫に見え、IRQは/proc/interruptsのどれとも競合しません。しかし、待って、他のシリアルポートはどこにありますか?彼らもここにいるべきではありませんか?他の場所で見つけることができる限り、それほど気になりません。


setシリアルコマンド:

次の論理的なステップは、seterial を台無しにすることです。

root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc1
/dev/ttymxc1, UART: undefined, Port: 0x0000, IRQ: 59
root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc2
/dev/ttymxc2, UART: undefined, Port: 0x0000, IRQ: 60
root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc3
/dev/ttymxc3, UART: undefined, Port: 0x0000, IRQ: 61
root@linaro-ubuntu:/dev# setserial -g /dev/ttymxc4
/dev/ttymxc4, UART: undefined, Port: 0x0000, IRQ: 62

逆重い、これは嫌だ。私は、setserialがハードウェアと通信せずにドライバ情報だけを読むことを知っているので意味がありますが、少なくともdmesgを解析するときに表示される情報が正しく表示されることを願っています。ただ偶然でも、少なくともIRQは正しいです。しかし、別のシリアルポートでこれを試してみると、次のようになります。

root@linaro-ubuntu:/dev# setserial -g /dev/ttyHBA1
/dev/ttyHBA1, UART: undefined, Port: 0x0000, IRQ: 0
root@linaro-ubuntu:/dev# setserial -g /dev/ttyHBA2
/dev/ttyHBA2, UART: undefined, Port: 0x0000, IRQ: 0

それは全体的に多くです。アドレスがなく、IRQが0に設定されています(これがシステムがまったくわからないデバイスのデフォルト値であるか、実際にIRQ 0に設定されているかどうかはわかりません。そうでなければなりません。置き換える必要があります。)

だからseterialは私に何も与えません。 seterialがハードウェアと直接通信する方法があると聞きましたが、オンラインではこれに関するドキュメントが見つかりませんでした。マニュアルページも私にとってあまり役に立たなかった。ここで誰でも私を助けることができますか?


今私は少し圧倒されました。 sttyは私が望む情報を提供していないと思います。

/proc/tty/driver/serialなどのファイルから読み込む方法が見つかりました/proc/ioports。最初のファイルは私のシステムにはなく、2番目のファイルは空です。私はオンラインで他のファイル提案を見つけましたが、もう何も機能しませんでした。

Ubuntuの「スキャンポート」への言及も見ましたか?ただし、リポジトリやGoogleでは見つかりません。

あああ。どうなりますか?利用可能なシリアルポートがあり、これに関する情報を取得したいと思います。これはLinuxですが、一般的にそのようなシステム情報は横、後ろ、逆さまに見られます。なぜこのような問題が発生しますか?

ベストアンサー1

おすすめ記事