Sürücü yazmayı öğrenecek kaynaklar var mı?


26

Genel olarak donanım ve gömülü sistemler tasarlama konusunda iyi bir deneyimim var, ancak bir işletim sistemi için sürücü yazmadım.

İyi çevrimiçi kitapların olup olmadığının, tercihen çevrimiçi olup olmadığının, iyi kitapların ilgini çekmesine rağmen, bir işletim sistemi için sürücü tasarlamak ve uygulamak için bilmem gerekenler konusunda iyi bir başlangıç ​​yapacağımı bilmek istiyorum.

Bu muhtemelen insanların bana ateş etmesine neden olacak ve her ne işletim sistemine dayanıyor olursa olsun, iyi bir rehber görmeyi sevsem de, çoğu insan olduğu için pencerelere dayanan bir rehber görmek istiyorum. Penceresi olacak bir ürün satardım.

Bunu daha net hale getirmek için ekleyebileceğim herhangi bir ek bilgi varsa lütfen bana bildirin.


1
Harika soru, bununla da ilgileniyorum.
Bay Kirpi

En geniş cevabı kabul ettim. Her işletim sistemi hakkında bilgi almak için cevabı sevdim. Joby'nin cevabı Linux'a özgü mükemmeldi. Karar vermekte zorlandım.
Kortuk

Yanıtlar:


10

Gerçek işletim sistemi sürücüleri yazma konusundaki son deneyimlerimin çoğu Linux'daydı ve IMO'nun en iyi referansı Linux Device Drivers, Jonathan Corbet, Alessandro Rubini ve Greg Kroah-Hartman (2005) tarafından yayınlanan 3. Baskı. Bu geçerli Amazon , Safari Books On-Line ve aynı zamanda bir şekilde, ücretsiz indirmek .

Aynı konuda Birkaç tane daha kitaplardır Temel Linux Aygıt Sürücüleri (geçerli ayrıca Sreekrishnan Venkateswaran (2008) tarafından, Safari Books Online ) ve egzersizler (Cilt 3) ile bir kılavuz: Yazma Linux Aygıt Sürücüleri Dr. Jerry Cooperstein tarafından (2009).

Windows aygıt sürücüleri için, (iki hafta önce yayınlanmış) Konuyla ilgili son kitabı gibi görünen Windows 7 Aygıt Sürücüsü Ronald D. Reeves, Ph.D., (2010). Aynı zamanda Safari Books Online'da da mevcuttur .

Windows XP'yi kapsayacak eski bir kitap şudur: Microsoft Windows Sürücü Modelini İkinci Sürüm , Walter Oney (2002) tarafından programlamak. Aynı zamanda Safari Books Online'da da mevcuttur .

Baskısı tükenmiş fakat Safari Books Online'da mevcut olan bir başka kitap ise Penny Orwick ve Guy Smith (2007) tarafından Windows Sürücü Vakfı ile Sürücü Geliştirmek . Windows Vista'yı kapsayacağını düşünüyorum.

Son olarak, Microsoft, sürücü geliştirmeyi tartışan birçok blog vb .


Teşekkürler, gönderinizi ayrıca "Linux Aygıt Sürücüleri" bağlantısına sahip olmanızı öneririm. Aksi takdirde, Çok kapsamlı.
Kortuk

11

İyi bir sürücü donanımın özelliklerini içine alır ve bunları işletim sistemi / uygulamalar için doğal bir şekilde kullanılabilir hale getirir.

Bunu en iyi şekilde yapmak, hangi işletim sistemini hedeflediğinize ve sürücünün ne tür bir donanıma bağlı olduğuna bağlıdır.

Tecrübelerim Linux ve küçük özel gerçek zamanlı OSen ile.

Linux için Linux Aygıt Sürücülerini okumanızı tavsiye ederim . Bu, Linux sürücülerinin farklı lezzetlerine ve işletim sisteminin kendilerine sağladığı soyutlamalara iyi bir giriş sağlar.

Verilerin sırayla okunduğu seri portlar gibi cihazlar, uygulamaların okuması için kullanıcı alanındaki bir cihaz düğümüne sahip karakter cihazı sürücüleri tarafından kullanılır. catbunlardan okuyabilir.

Flash depolama ve sabit diskler gibi rasgele erişim aygıtları blok aygıtlar tarafından yönetilir. ddbunlara erişebilir. İyi bir örnek olarak, Linux MTD sistemine bir göz atın .

Düşük seviyeli donanımla uğraşan sürücülerin neredeyse kesinlikle çekirdek alanda uygulanması gerekecektir. Çalıştırma zamanı yüklenebilir bir çekirdek modülü oluşturmayı veya kodunuzu statik olarak linux çekirdeğine yerleştirmeyi seçebilirsiniz.

USB gibi mevcut genel sürücülere dayanan sürücüler, kullanıcı alanına yazılabilir. Örneğin, libusb kullanarak .


4
Linux Aygıt Sürücüleri iyi bir kitaptır. Ne yazık ki, bu şeyler oldukça işletim sistemine özgü. Linux muhtemelen yazması en kolay olanıdır, çünkü kaynak ağacında zaten başvuru için çok fazla sürücü var. Bir mikroişlemcinin çevre birimlerini yönlendirmek için gömülü kod yazdıysanız, muhtemelen aygıt sürücüsünün temellerini iyi bir şekilde kavramışsınızdır.
34'te markrages

evet, yorumlarımı siliyorum. benim hatam.
Kortuk

1
Bahsedilen işaretler gibi, asıl donanımı kontrol eden bir sürücünün bağırsakları, işletim sisteminiz olsun ya da olmasın aynı olacaktır. Sürücü yazarken temel farklar 1) arayüzlerin işletim sistemi için standart bir modele (örneğin açık, kapalı, okun, yaz, vb.) Uyması ve 2) sürücünün yüklü ve etkin olduğu yöntemdir.
tcrosley

1
@tcrosley, Bu özellikler hakkında çok fazla bilginiz varsa, bununla ilgili bir cevap görmeyi çok isterim.
Kortuk

3

Bu konuda hiçbir tecrübem yok ama iki sentimi vereceğim.

Http://www.osr.com/index.html veya buradan https://www.osronline.com/index.cfm adresinden başlayabilirsiniz.

Brezilya'da bu konuda iyi bir blogumuz var. Portekizce ve İngilizce olarak yazılmıştır. Ne yazık ki çoğu makale Portekizce'dir.

Bu blogda Portekizce hakkında kitaplar hakkında bir yayın var: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=en&u=http://driverentry.com.br/ blog /% 3Fp% 3D825 ve TWU = 1

Umarım biraz yardım etmişimdir


"Sürücüleri yazmayı öğrenmek için zamanında çevrimiçi olarak nerede Portekizce öğrenirim?" Yardımlarınız için teşekkürler.
Kortuk

2
Portekizce öğrenmek hakkında endişelenme. Geçtiğim sürücü geliştirme ile ilgili bağlantılar İngilizce'dir. DriveEntry bile İngilizce olarak yazılmıştır. Ne yazık ki kitaplar hakkındaki yazı Portekizce, ancak kitaplar İngilizce. Ve en önemli olan şey kitap değil, yazı değil.
Daniel Grillo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.