Có tài nguyên cho việc học viết trình điều khiển?


26

Tôi có rất nhiều kinh nghiệm thiết kế phần cứng và hệ thống nhúng nói chung, nhưng tôi chưa bao giờ viết trình điều khiển cho một hệ điều hành.

Tôi muốn biết nếu có bất kỳ hướng dẫn tốt nào, tốt nhất là trực tuyến, mặc dù những cuốn sách hay sẽ khiến tôi quan tâm, điều đó sẽ cho tôi một khởi đầu tốt về những gì tôi cần biết để thiết kế và triển khai trình điều khiển cho một hệ điều hành.

Điều này có thể sẽ có người bắn vào tôi, và mặc dù tôi rất thích xem hướng dẫn tốt cho dù nó dựa trên hệ điều hành nào, tôi muốn xem hướng dẫn dựa trên cửa sổ, chủ yếu là do hầu hết mọi người Tôi sẽ bán một sản phẩm sẽ có cửa sổ.

Xin vui lòng cho tôi biết nếu có bất kỳ thông tin bổ sung nào tôi có thể thêm để làm cho điều này rõ ràng hơn.


1
Câu hỏi tuyệt vời, tôi cũng quan tâm đến câu hỏi này.
Ông Hedgekey

Tôi chấp nhận câu trả lời rộng nhất. Để có được thông tin cho mỗi hệ điều hành, tôi thích câu trả lời. Câu trả lời của Joby là đặc biệt tuyệt vời đối với Linux. Tôi đã có một thời gian khó khăn để quyết định.
Kortuk

Câu trả lời:


10

Hầu hết kinh nghiệm gần đây của tôi khi viết trình điều khiển hệ điều hành thực tế là với Linux và IMO tham khảo tốt nhất là Trình điều khiển thiết bị Linux, Ấn bản thứ 3 của Jonathan Corbet, Alessandro Rubini và Greg Kroah-Hartman (2005), đã được đề cập. Nó có sẵn trên Amazon , Safari Books On-Line và cũng là một bản tải xuống miễn phí .

Một vài cuốn sách khác về cùng một chủ đề là Trình điều khiển thiết bị Linux thiết yếu , của Saletrishnan Venkateswaran (2008) (cũng có sẵn trên Safari Books Online ) và Viết Trình điều khiển thiết bị Linux: hướng dẫn bài tập (Tập 3) của Tiến sĩ Jerry Cooperstein (2009).

Đối với trình điều khiển thiết bị Windows, cuốn sách mới nhất về chủ đề này (xuất bản hai tuần trước) dường như là Trình điều khiển thiết bị Windows 7 , bởi Ronald D. Reeves, Ph.D. (2010). Nó cũng có sẵn trên Safari Books Online .

Một cuốn sách cũ hơn, bao gồm Windows XP, là: Lập trình mô hình trình điều khiển Microsoft Windows, Ấn bản thứ hai , của Walter Oney (2002). Nó cũng có sẵn trên Safari Books Online .

Một cuốn sách khác, dường như không còn xuất bản nhưng có sẵn trên Safari Books Online, đang phát triển Trình điều khiển với Windows Driver Foundation , bởi Penny Orwick và Guy Smith (2007). Tôi giả sử nó sẽ bao gồm Windows Vista.

Cuối cùng, Microsoft đã chỉ ra rất nhiều blog, v.v. thảo luận về phát triển trình điều khiển.


Cảm ơn, tôi sẽ đề nghị bạn thực hiện bài đăng của mình cũng có liên kết đến "Trình điều khiển thiết bị Linux". Nếu không, rất kỹ lưỡng.
Kortuk

11

Một trình điều khiển tốt đóng gói các khả năng của phần cứng và làm cho chúng có sẵn cho HĐH / ứng dụng một cách tự nhiên.

Cách tốt nhất để làm điều này, phụ thuộc rất nhiều vào hệ điều hành mà bạn đang nhắm mục tiêu và trình điều khiển dành cho loại phần cứng nào.

Kinh nghiệm của tôi là tất cả với Linux và OSen thời gian thực tùy chỉnh nhỏ.

Đối với Linux, tôi khuyên bạn nên đọc Trình điều khiển thiết bị Linux . Đây là một giới thiệu tốt về các hương vị khác nhau của trình điều khiển Linux và sự trừu tượng mà hệ điều hành cung cấp cho chúng.

Các thiết bị như cổng nối tiếp nơi dữ liệu được đọc tuần tự thường được xử lý bởi trình điều khiển thiết bị ký tự với một nút thiết bị trong không gian người dùng để các ứng dụng đọc từ đó. catcó thể đọc từ những.

Các thiết bị truy cập ngẫu nhiên như lưu trữ flash và đĩa cứng được xử lý bởi các thiết bị khối. ddcó thể truy cập những. Để có một ví dụ tốt, hãy xem hệ thống MTD Linux .

Các trình điều khiển làm thay đổi mức độ thấp với phần cứng gần như chắc chắn sẽ cần được thực hiện trong không gian kernel. Bạn có thể chọn tạo một mô-đun hạt nhân có thể tải thời gian chạy hoặc đặt mã của bạn ở dạng tĩnh trong nhân linux.

Các trình điều khiển được xây dựng dựa trên các trình điều khiển chung hiện có, như USB, có thể được viết trong không gian người dùng. Sử dụng, ví dụ, libusb .


4
Trình điều khiển thiết bị Linux là một cuốn sách tốt. Thật không may, những điều này là rất cụ thể hệ điều hành. Linux có lẽ dễ viết nhất vì có rất nhiều trình điều khiển trong cây nguồn để tham khảo. Nếu bạn đã viết mã nhúng để điều khiển các thiết bị ngoại vi của bộ vi xử lý, bạn có thể nắm bắt được các nguyên tắc cơ bản của trình điều khiển thiết bị.
đánh dấu

Vâng, tôi đang xóa bình luận của tôi. lỗi của tôi.
Kortuk

1
Như markrages đã đề cập, can đảm của trình điều khiển, điều khiển phần cứng thực tế, sẽ giống nhau cho dù bạn có HĐH hay không. Sự khác biệt chính khi viết trình điều khiển là 1) các giao diện cần phải phù hợp với một mô hình chuẩn (ví dụ: mở, đóng, đọc, ghi, ioctl) cho HĐH và 2) phương thức cài đặt và kích hoạt trình điều khiển.
tcrosley

1
@tcrosley, Nếu bạn có nhiều thông tin về những chi tiết cụ thể đó tôi rất muốn xem câu trả lời về nó.
Kortuk

3

Tôi không có bất kỳ kinh nghiệm nào trong vấn đề này, nhưng tôi sẽ đưa hai xu của mình.

Bạn có thể bắt đầu tại đây http://www.osr.com/index.html hoặc tại đây https://www.osronline.com/index.cfm

Ở Brazil, chúng tôi có một blog tốt về vấn đề này. Nó được viết bằng tiếng Bồ Đào Nha và tiếng Anh. Hầu hết các bài viết là tiếng Bồ Đào Nha không may.

Có một bài viết bằng tiếng Bồ Đào Nha về những cuốn sách trong blog này: http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=en&u=http:// ứcentry.com.br/ blog /% 3Fp% 3D825 & twu = 1

Tôi hy vọng tôi đã giúp một chút


Điều này sẽ giúp ích rất nhiều nếu tôi đặt câu hỏi, "Tôi học tiếng Bồ Đào Nha trực tuyến ở đâu để học viết trình điều khiển?" Cảm ơn đã giúp đỡ.
Kortuk

2
Đừng lo lắng về việc học tiếng Bồ Đào Nha. Các liên kết về phát triển ổ đĩa mà tôi đã thông qua là bằng tiếng Anh. Ngay cả DriveEntry cũng được viết bằng tiếng Anh. Thật không may, bài viết về sách là tiếng Bồ Đào Nha, nhưng những cuốn sách bằng tiếng Anh. Và điều quan trọng nhất là những cuốn sách, không phải bài viết.
Daniel Grillo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.