Ne yazık ki seri bağlantı noktaları PlugNPlay değildir, bu nedenle çekirdek hangi cihazın takılı olduğunu bilmez. Bir HowTo eğitimini okuduktan sonra çalışma fikrini aldım.
/dev/
İşletim sistemleri gibi unix dizin olarak adlandırılan dosyaları içeren ttySn (bir sayı olmak n) . Çoğu mevcut cihazlarla uyuşmuyor. Hangilerinin yaptığını bulmak için bir komut verin:
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
Yukarıdaki, bilgisayarımın örnek bir çıktısıdır. Birkaç seri portun başlatıldığını görebilirsiniz:
ttyS0
, ttyS1
, ttyS4
, ttyS5
.
Bunlardan biri takılı bir cihaza pozitif voltaj verecek . Böylece, dosya içeriğini /proc/tty/driver/serial
cihaza takılı olan ve olmayanlar ile karşılaştırarak cihazımızla ilgili ttyS'leri kolayca bulabiliriz . Öyleyse şimdi yapın:
$ sudo cat /proc/tty/driver/serial> /tmp/1
(un) bir cihazı takın
$ sudo cat /proc/tty/driver/serial> /tmp/2
Sonra iki dosya arasındaki farkı kontrol edin. Aşağıda bilgisayarımın bir çıktısı var:
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
Üç sayıyı dmesg çıktısıyla karşılaştırarak hangisinin bağlantı noktası olduğunu belirleyebiliriz:
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Dolayısıyla cihazımız /dev/ttyS0
görev tamamlandı!