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.
Jawaban:
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.
sumber
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.
cat
dapat membaca dari ini.Perangkat akses acak seperti penyimpanan flash dan hard disk ditangani oleh perangkat blok.
dd
dapat 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 .
sumber
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
sumber