มีแหล่งข้อมูลสำหรับการเรียนรู้การเขียนไดรเวอร์หรือไม่?


26

ฉันมีประสบการณ์ในการออกแบบฮาร์ดแวร์และระบบฝังตัวในระดับที่เหมาะสม แต่ฉันไม่เคยเขียนไดรเวอร์สำหรับระบบปฏิบัติการมาก่อน

ฉันอยากจะรู้ว่ามีคำแนะนำที่ดีหรือไม่โดยเฉพาะอย่างยิ่งออนไลน์แม้ว่าหนังสือดี ๆ จะให้ความสนใจฉันนั่นจะทำให้ฉันเริ่มต้นได้ดีในสิ่งที่ฉันจำเป็นต้องรู้ในการออกแบบและใช้ไดรเวอร์สำหรับระบบปฏิบัติการ

นี่อาจจะมีคนยิงมาที่ฉันและถึงแม้ว่าฉันจะชอบที่จะดูคำแนะนำที่ดีไม่ว่าระบบปฏิบัติการนั้นจะขึ้นอยู่กับอะไรฉันก็อยากจะดูคำแนะนำที่เป็นหน้าต่างซึ่งส่วนใหญ่เป็นเพราะคนส่วนใหญ่ ฉันจะขายผลิตภัณฑ์จะมี windows

โปรดแจ้งให้เราทราบหากมีข้อมูลเพิ่มเติมใด ๆ ที่ฉันสามารถเพิ่มเพื่อทำให้ชัดเจนยิ่งขึ้น


1
เป็นคำถามที่ดีฉันสนใจสิ่งนี้เช่นกัน
Mr. Hedgehog

ฉันยอมรับคำตอบที่กว้างที่สุด สำหรับการรับข้อมูลสำหรับแต่ละระบบปฏิบัติการฉันชอบคำตอบ คำตอบของ Joby นั้นยอดเยี่ยมสำหรับ Linux โดยเฉพาะ ฉันมีเวลาตัดสินใจยาก
Kortuk

คำตอบ:


10

ประสบการณ์ล่าสุดของฉันในการเขียนไดรเวอร์ระบบปฏิบัติการจริงมากับ Linux และการอ้างอิงที่ดีที่สุดคือไดรเวอร์อุปกรณ์ Linux รุ่นที่ 3 โดย Jonathan Corbet, Alessandro Rubini และ Greg Kroah-Hartman (2005) ซึ่งได้กล่าวถึงแล้ว มันสามารถใช้ได้บนAmazon , Safari หนังสือ On-Lineและยังเป็นฟรีดาวน์โหลด

หนังสืออีกสองสามเล่มในหัวข้อเดียวกันคือไดรเวอร์อุปกรณ์ Linux ที่จำเป็นโดย Sreekrishnan Venkateswaran (2008) (มีอยู่ในSafari Books Online ) และการเขียนไดรเวอร์อุปกรณ์ Linux: คู่มือที่มีแบบฝึกหัด (เล่มที่ 3)โดย Dr Jerry Cooperstein (2009)

สำหรับไดรเวอร์อุปกรณ์ Windows หนังสือเล่มล่าสุดในหัวข้อ (เผยแพร่เมื่อสองสัปดาห์ก่อน) ดูเหมือนจะเป็นไดรเวอร์อุปกรณ์ Windows 7โดย Ronald D. Reeves, Ph.D. (2010) นอกจากนี้ยังมีอยู่บนซาฟารีหนังสือออนไลน์

หนังสือเล่มเก่าซึ่งครอบคลุม Windows XP คือ: การเขียนโปรแกรม Microsoft Windows Driver Model, Second Editionโดย Walter Oney (2002) นอกจากนี้ยังมีอยู่บนซาฟารีหนังสือออนไลน์

หนังสืออีกเล่มซึ่งดูเหมือนว่าจะไม่ได้รับการตีพิมพ์ แต่มีอยู่ใน Safari Books Online คือการพัฒนาไดรเวอร์ด้วย Windows Driver Foundationโดย Penny Orwick และ Guy Smith (2007) ฉันคิดว่ามันจะครอบคลุม Windows Vista

ในที่สุด Microsoft มีตัวชี้ไปยังบล็อกจำนวนมากและพูดคุยเกี่ยวกับการพัฒนาไดรเวอร์


ขอบคุณฉันขอแนะนำให้คุณทำให้โพสต์ของคุณมีลิงก์ไปยัง "ไดรเวอร์อุปกรณ์ Linux" มิฉะนั้นอย่างละเอียดมาก
Kortuk

11

คนขับรถที่ดีห่อหุ้มความสามารถของฮาร์ดแวร์และทำให้สามารถใช้งานได้กับระบบปฏิบัติการ / แอพพลิเคชั่นในลักษณะที่เป็นธรรมชาติ

วิธีที่ดีที่สุดในการทำเช่นนี้ขึ้นอยู่กับระบบปฏิบัติการที่คุณกำหนดเป้าหมายและฮาร์ดแวร์ประเภทใดที่ไดรเวอร์ใช้

ประสบการณ์ของฉันคือทั้งหมดที่มี Linux และ OSen ตามเวลาจริงขนาดเล็กที่กำหนดเอง

สำหรับลินุกซ์ผมอยากแนะนำให้อ่านไดรเวอร์ของอุปกรณ์ Linux มันเป็นการแนะนำที่ดีเกี่ยวกับรสชาติที่แตกต่างของไดรเวอร์ Linux และสิ่งที่เป็นนามธรรมที่ระบบปฏิบัติการจัดเตรียมไว้ให้

อุปกรณ์เช่นพอร์ตอนุกรมที่ข้อมูลจะถูกอ่านตามลำดับโดยปกติจะมีการจัดการโดยไดรเวอร์อุปกรณ์ตัวอักษรที่มีโหนดอุปกรณ์ใน userspace สำหรับแอปพลิเคชันเพื่ออ่าน catสามารถอ่านได้จากสิ่งเหล่านี้

อุปกรณ์การเข้าถึงแบบสุ่มเช่นที่เก็บข้อมูลแฟลชและฮาร์ดดิสก์ได้รับการจัดการโดยอุปกรณ์บล็อก ddสามารถเข้าถึงสิ่งเหล่านี้ สำหรับตัวอย่างที่ดีมีลักษณะที่เป็นลินุกซ์ MTDระบบ

ไดรเวอร์ที่เล่นซอระดับต่ำกับฮาร์ดแวร์จะต้องถูกนำมาใช้ในพื้นที่เคอร์เนล คุณอาจเลือกที่จะสร้างเคอร์เนลโมดูลที่โหลดได้แบบรันไทม์หรือเพื่อวางรหัสของคุณในแบบคงที่ในเคอร์เนล linux

ไดรเวอร์ที่สร้างขึ้นจากไดรเวอร์ทั่วไปที่มีอยู่เช่น USB อาจถูกเขียนใน userspace ใช้ตัวอย่างเช่นlibusb


4
ไดรเวอร์อุปกรณ์ Linux เป็นหนังสือที่ดี น่าเสียดายที่สิ่งเหล่านี้มีเฉพาะระบบปฏิบัติการ ลีนุกซ์อาจจะเขียนได้ง่ายที่สุด, เพราะมีไดร์เวอร์จำนวนมากในทรีซอร์สสำหรับการอ้างอิงอยู่แล้ว หากคุณเขียนโค้ดแบบฝังตัวเพื่อขับเคลื่อนอุปกรณ์ต่อพ่วงของไมโครโปรเซสเซอร์คุณอาจเข้าใจพื้นฐานของไดรเวอร์อุปกรณ์ได้ดี
เครื่องหมาย

ใช่ฉันลบความคิดเห็นของฉัน ความผิดฉันเอง.
Kortuk

1
ตามที่กล่าวถึงเครื่องหมายความกล้าของไดรเวอร์ซึ่งควบคุมฮาร์ดแวร์ที่แท้จริงจะเหมือนกันไม่ว่าคุณจะมีระบบปฏิบัติการหรือไม่ก็ตาม ความแตกต่างที่สำคัญเมื่อเขียนไดรเวอร์คือ 1) อินเทอร์เฟซจำเป็นต้องพอดีกับรุ่นมาตรฐาน (เช่นเปิดปิดอ่านอ่านเขียน ioctl) สำหรับระบบปฏิบัติการและ 2) วิธีการติดตั้งและเปิดใช้งานไดรเวอร์
tcrosley

1
@tcrosley หากคุณมีข้อมูลมากมายเกี่ยวกับข้อมูลเฉพาะเหล่านั้นฉันชอบที่จะเห็นคำตอบเกี่ยวกับมัน
Kortuk

3

ฉันไม่มีประสบการณ์ใด ๆ ในเรื่องนี้ แต่ฉันจะให้สองเซ็นต์ของฉัน

คุณสามารถเริ่มต้นได้ที่นี่http://www.osr.com/index.htmlหรือที่นี่https://www.osronline.com/index.cfm

ที่นี่ในบราซิลเรามีบล็อกที่ดีเกี่ยวกับปัญหานี้ มันเขียนในภาษาโปรตุเกสและภาษาอังกฤษ บทความส่วนใหญ่อยู่ในโปรตุเกสโชคไม่ดี

มีโพสต์ในภาษาโปรตุเกสเกี่ยวกับหนังสือในบล็อกนี้: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=th&u=http://driverentry.com.br/ บล็อก /% 3Fp% 3D825 & TWU = 1

ฉันหวังว่าฉันได้ช่วยเล็กน้อย


สิ่งนี้จะช่วยได้มากหากฉันถามคำถามว่า "ฉันจะเรียนภาษาโปรตุเกสออนไลน์ได้ทันเวลาเพื่อเรียนรู้การเขียนไดรเวอร์ได้อย่างไร" ขอขอบคุณที่ช่วยเหลือ
Kortuk

2
ไม่ต้องกังวลกับการเรียนรู้ภาษาโปรตุเกส ลิงค์เกี่ยวกับการพัฒนาไดรฟ์ที่ฉันส่งเป็นภาษาอังกฤษ แม้แต่ DriveEntry ก็เขียนเป็นภาษาอังกฤษด้วย น่าเสียดายที่โพสต์เกี่ยวกับหนังสือเป็นภาษาโปรตุเกส แต่หนังสือเป็นภาษาอังกฤษ และสิ่งที่สำคัญที่สุดคือหนังสือไม่ใช่โพสต์
Daniel Grillo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.