Linux Serial Port Documentation

- Giriş
     Linux sistemlerinde serial port haberleşmesi, bir bilgisayar ve bu bilgisayara USB yolu ile bağlı bir donanım arasında gerçekleşir.
     USB yolu ile bilgisayara bağlanan donanım, dev dizininde kendisine ait bir tane dosya seçer veya oluşturur ve bu dosya yardımıyla bilgisayar ile veri transferini gerçekleştirir. Başarılı bir haberleşme için donanım ve bilgisayar arasında öncelikle gerekli bir kaç anlaşmanın yapılması lazımdır.

- Port Nasıl Açılır ?
     Donanım bilgisayara bağlandıktan sonra haberleşmek için kendisine seçtiği veya oluşturulduğu bir dosya kullanır. Linux sistemlerinin bazılarında bu dosyanın adı ttyUSBX iken bazılarında ise ttyUSBX olabilir. Şayet bağlanan donanım bir microchip içeriyorsa, haberleşeceği dosyanın adı ttyACMX olur.(X bir doğal sayıdır.) Bu dosyaya yazılan veriyi bilgisayar okuyabilir, dosyaya herhangi bir veri yazabilir.
     
     - Doğru Port Açıldığı Nasıl Anlaşılır ?
          Port açma işleminin istenilen donanımla yapıldığını anlamak için donanımın, bilgisayarın çağrısına cevap vermesi gerekmektedir. Bu nedenle donanım ile bilgisayar arasında bir tokalaşma, selamlaşma vb. işlemi olmalıdır. Bilgisayarın veri transfer dosyasına bir değer gönderip, bunun karşılığında donanımdan bir değer beklemektedir. Selamlaşma değerleri doğru ise iletişime geçilebilir.

- BAUD Rate Nedir ?
     BAUD rate, iletim yolundan bir saniyede alınan sembol sayısına verilen isimdir. Donanım ile bilgisayarın başarılı bir şekilde haberleşebilmesi için BAUD rate değerlerinin aynı olması gerekir. Böylece bilgisayar, transfer işlemi gerçekleşecek dosyaya, donanımla arasında belirlenen BAUD rate değerine göre veri yazıp okuyabilmelidir ki donanım da aynı hızda okuyup yazabilsin. BAUD rate oranlarının farklı olması durumda haberleşmede bir senkronizasyon sorunu meydana gelir.

    - Port BAUD Rate Değerini Ayarlama
          Veri transferini başarılı bir şekilde sağlamak için donanım ile bilgisayar arasında sabit bir BAUD rate olmalıdır. Bunun için haberleşecek dosya POSIX tarafından belirlenen bir kaç fonksiyon yardımı ile ilklendirilir. Böylece her iki uç arasında da yazma ve okuma hızları belirlenir ve eşitlenir.
          
- Porta Nasıl Veri Gönderilir ?
      Port açılıp, BAUD değeri eşitlendikten sonra veri transfer dosyasına yine POSIX standartları tarafından belirlenen write fonksiyonu sayesinde veri yazılır. Bu işlem, klasik bir C dosya işlemine çok benzemektedir. Sadece arada kernel ile haberleşmeyi sağlayacak bir label bulunmamaktadır.
      Fonksiyon direk olarak kernel üzerinden çağrılır, bu nedenle hızlıdır.
      
- Porttan Nasıl Veri Okunur ?
     Port açılıp, BAUD değeri eşitlendikten sonra yine veri transfer dosyasına donanım tarafından yazılan veri, yine POSIX standartları tarafından belirlenen read fonksiyonu sayesinde bilgisayar tarafından okunur. Veri okuma işlemi de, yine klasik bir C dosya işlemine çok benzemektedir.
     Kernel üzerinden direk çağrılan fonksiyon vasıtası ile olur, hızlıdır.
     
- Sonuç
      Sonuç olarak, Linux işletim sistemlerinde serial porta veri yazma ve okuma işlemlerinde önce veri transfer işlemlerini sağlayacak dosya açılır. 
      Daha sonra başarılı bir veri transferi için donanım ile bilgisayar arasında bir BAUD rate değeri belirlenir. POSIX tarafından belirlenen write ve read fonksiyonları ile veri okuma ve yazma işlemi yapılır. 

Popular posts from this blog

Polya’nın Problem Çözme Teknikleri

Mikroislemci Temelleri