Ynt: Assembly kullanarak donanım ile etkileşim

Başlatan barisertekin, 31 Mart 2013, 15:21:21

barisertekin

Merhaba,

Diyelim ki, tcp/ip ile haberleşme yapacağız ve bunu yüksek seviyeli bir programlama dili yerine assembly ile yapmak istiyoruz.

İhtiyacımız olanlar nelerdir?

Her elektronik cihaz gibi kendisine göndermemiz gereken verileri bilmemiz gerekiyor.
Fakat burada bir datasheet mevzu bahis değil.İşte bu yüzden driver diye birşey var.

Cihaz takıldığınıda veya çıkarıldığında bellek kontrol işlemleri yapan init ve exit methodları v.s. driver sayesinde yapılabiliyor.

Yani windows bu işi tam olarak nasıl yapıyor. Cihazı etkin bir şekilde nasıl kullanabiliriz?

Mesela benim ethernet kartım PCI-E veri yolu kullanıyor.

Byte[] olarak bir adet PCI-E data frame oluşturup driverda belirlenmiş bir interrupt mı tetiklememiz gerekiyor? (Bunlar kernel mod'da yapılabiliyor sadece sanırım çok dallı budaklı)

Bu konuyu kafada kuramadım.

Veya en basiti mac adresini cihaza nasıl soruyoruz?

Yardımcı olursanız sevinirim.

mesaj birleştirme:: 31 Mart 2013, 15:54:48

Windows Drivers Kit yazılımını inceledim.
Visual studio üzerine entegre edilip driver projesi açabiliyorsunuz.

http://code.msdn.microsoft.com/windowshardware/SKELETON-3a06c09e

Driver yazarken, cihazın tanımlamaları için callback sınıfları device.cpp & driver.h dosyalarında belirtiliyormuş.
Büyük ihtimalle windows bu tanımlamaları kullanıyor.

Gökhan BEKEN

#1
Eğer ethernet ile haberleşme ise amacınız enc28j60 kullanılıyor benim bildiğim bu entegre mikrodenetleyici ile seri(tx , rx) haberleşiyor. Bir de dahili ethernet modülü olan "j" sınıfı picler var.
Özel mesaj okumuyorum, lütfen göndermeyin.

barisertekin

Hayır amacım o değil. Ethernet bir örnekti. Bahsettiğiniz enc28j60 cihazının bir datasheet'i var. Bana x verisini gönder sana şunu yapıyım ibareleri mevcut. Fakat benim Realtek Ethernetim'i windows nasıl kullanıyor? Datasheet'ine mi bakıyor? Cevap hayır.
Driver sayesinde kullanıyor. Ben bu işlemlerin nasıl yapıldığını merak ediyorum.

Driver dosyalarında ne gibi tanımlamalar var?
Windows bunları nasıl kullanıyor?
Yüzlerce çeşit donanımı hangi yolla standarta bağlıyıp cihaz ile nasıl etkileşiyor?

Burak B

#3
Çok eski bir referanstır. Ama işine yarayacaktır.

Four-F KMD tutorials

Ayrıca eski bir arkadaşın bu konuda çeviri ve yazıları da mevcut.
Kernek Türk
"... a healthy dose of paranoia leads to better systems." Jack Ganssle