Apakah ada sumber daya untuk belajar menulis driver?

26

Saya memiliki banyak pengalaman dalam mendesain perangkat keras dan sistem embedded secara umum, tetapi saya belum pernah menulis driver untuk sistem operasi.

Saya ingin tahu apakah ada panduan bagus, lebih disukai online, meskipun buku bagus menarik minat saya, yang akan memberi saya awal yang baik tentang apa yang perlu saya ketahui untuk merancang dan mengimplementasikan driver untuk sistem operasi.

Ini mungkin akan membuat orang-orang menembaki saya, dan meskipun saya akan senang melihat panduan yang baik tidak peduli apa OS yang didasarkan pada, saya ingin melihat panduan yang berbasis windows, sebagian besar karena kenyataan bahwa sebagian besar orang Saya akan menjual produk akan memiliki windows.

Harap beri tahu saya jika ada informasi tambahan yang dapat saya tambahkan untuk membuatnya lebih jelas.

Kortuk
sumber
1
Pertanyaan bagus, saya juga tertarik dengan yang ini.
Tn. Hedgehog
Saya menerima jawaban terluas. Untuk mendapatkan informasi untuk setiap OS, saya menyukai jawabannya. Jawaban Joby sangat bagus untuk Linux. Saya kesulitan memutuskan.
Kortuk

Jawaban:

10

Sebagian besar pengalaman saya baru-baru ini dalam menulis driver OS sebenarnya adalah dengan Linux, dan referensi terbaik IMO adalah Linux Device Drivers, Edisi ke-3 oleh Jonathan Corbet, Alessandro Rubini, dan Greg Kroah-Hartman (2005), yang telah disebutkan. Ini tersedia di Amazon , Safari Books On-Line , dan juga sebagai unduhan gratis .

Beberapa buku lagi dengan topik yang sama adalah Essential Linux Device Drivers , oleh Sreekrishnan Venkateswaran (2008) (juga tersedia di Safari Books Online ) dan Writing Linux Device Drivers: panduan dengan latihan (Volume 3) oleh Dr Jerry Cooperstein (2009).

Untuk driver perangkat Windows, buku terbaru tentang subjek (diterbitkan dua minggu lalu) tampaknya adalah Device Driver Windows 7 , oleh Ronald D. Reeves, Ph.D. (2010). Ini juga tersedia di Safari Books Online .

Buku yang lebih tua, yang akan mencakup Windows XP, adalah: Memprogram Model Driver Microsoft Windows, Edisi Kedua , oleh Walter Oney (2002). Ini juga tersedia di Safari Books Online .

Buku lain, yang tampaknya tidak dicetak tetapi tersedia di Safari Books Online, adalah Developing Drivers with the Windows Driver Foundation , oleh Penny Orwick dan Guy Smith (2007). Saya menganggap itu akan mencakup Windows Vista.

Akhirnya, Microsoft memiliki petunjuk ke banyak blog, dll, membahas pengembangan driver.

tcrosley
sumber
Terima kasih, saya sarankan Anda membuat posting Anda juga memiliki tautan ke "Linux Device Drivers." Kalau tidak, sangat teliti.
Kortuk
11

Driver yang baik merangkum kemampuan perangkat keras dan membuatnya tersedia untuk OS / aplikasi secara alami.

Cara terbaik untuk melakukan ini, sangat tergantung pada sistem operasi yang Anda targetkan dan jenis perangkat keras apa yang digunakan untuk driver itu.

Pengalaman saya adalah semua dengan Linux dan OSen custom-time kustom kecil.

Untuk Linux, saya sarankan membaca Driver Perangkat Linux . Ini memberikan pengantar yang baik untuk berbagai rasa driver Linux dan abstraksi sistem operasi menyediakan untuk mereka.

Perangkat seperti port serial tempat data dibaca secara berurutan biasanya ditangani oleh driver perangkat karakter dengan simpul perangkat di userspace agar aplikasi dapat dibaca. catdapat membaca dari ini.

Perangkat akses acak seperti penyimpanan flash dan hard disk ditangani oleh perangkat blok. dddapat mengakses ini. Sebagai contoh yang bagus, lihatlah sistem MTD Linux .

Driver yang melakukan mengutak-atik level rendah hampir pasti akan perlu diimplementasikan dalam ruang kernel. Anda dapat memilih untuk membuat modul kernel runtime loadable atau untuk menempatkan kode Anda secara statis di kernel linux.

Driver yang dibangun di atas driver generik yang ada, seperti USB, dapat ditulis di userspace. Menggunakan, misalnya, libusb .

Toby Jaffey
sumber
4
Linux Device Drivers adalah buku yang bagus. Sayangnya, hal-hal ini sangat spesifik untuk OS. Linux mungkin paling mudah ditulis, karena ada begitu banyak driver di pohon kode yang sudah ada untuk referensi. Jika Anda telah menulis kode tertanam untuk menggerakkan periferal mikroprosesor, Anda mungkin memiliki pemahaman yang memadai tentang dasar-dasar driver perangkat.
markrages
ya, saya menghapus komentar saya. salahku.
Kortuk
1
Seperti yang disebutkan dalam marka, nyali pengemudi, yang mengontrol perangkat keras yang sebenarnya, akan sama apakah Anda memiliki OS atau tidak. Perbedaan utama ketika menulis driver adalah 1) antarmuka harus sesuai dengan model standar (misalnya buka, tutup, baca, tulis, ioctl) untuk OS, dan 2) metode di mana driver diinstal dan diaktifkan.
tcrosley
1
@ tcrosley, Jika Anda memiliki banyak informasi tentang hal-hal spesifik itu, saya ingin sekali melihat jawabannya.
Kortuk
3

Saya tidak punya pengalaman dalam masalah ini, tapi saya akan memberikan dua sen saya.

Anda dapat mulai di sini http://www.osr.com/index.html atau di sini https://www.osronline.com/index.cfm

Di sini, di Brasil kami memiliki blog yang bagus tentang masalah ini. Itu ditulis dalam bahasa Portugis dan Inggris. Sayangnya sebagian besar artikel dalam bahasa Portugis.

Ada posting dalam bahasa Portugis tentang buku di blog ini: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=en&u=http://driverentry.com.br/ blog /% 3Fp% 3D825 & twu = 1

Saya harap saya telah membantu sedikit

Daniel Grillo
sumber
Ini akan banyak membantu jika saya mengajukan pertanyaan, "Di mana saya belajar bahasa Portugis online pada waktunya untuk belajar menulis driver?" Terima kasih telah membantu.
Kortuk
2
Jangan khawatir tentang belajar bahasa Portugis. Tautan tentang pengembangan drive yang saya lewati adalah dalam bahasa Inggris. Bahkan DriveEntry juga ditulis dalam bahasa Inggris. Sayangnya posting tentang buku-buku itu dalam bahasa Portugis, tetapi buku-buku itu dalam bahasa Inggris. Dan yang paling penting adalah buku, bukan pos.
Daniel Grillo