Чи є ресурси для навчання писати драйвери?


26

Я маю пристойний досвід проектування апаратних засобів та вбудованих систем загалом, але я ніколи не писав драйвер для операційної системи.

Мені хотілося б знати, чи є якісь хороші посібники, бажано в Інтернеті, хоча хороші книги мене зацікавлять, це дасть мені хороший початок з того, що мені потрібно знати, щоб розробити та впровадити драйвери для операційної системи.

Напевно, це люди, які стріляють на мене, і хоча я хотів би бачити хорошого керівництва незалежно від того, на якій ОС він базується, я хотів би бачити посібник на основі Windows, в основному через те, що більшість людей Я б продав товар, мав би вікна.

Будь ласка, дайте мені знати, чи є додаткова інформація, яку я можу додати, щоб зробити це більш зрозумілим.


1
Чудове запитання, мене теж цікавить це.
Містер Їжачок

Я прийняв найширшу відповідь. Для отримання інформації для кожної ОС мені сподобалась відповідь. Відповідь Джобі була чудовою специфікою для Linux. Я важко вирішив.
Кортук

Відповіді:


10

Більшість мого недавнього досвіду написання справжніх драйверів ОС були з Linux, а найкраща посилання IMO - це драйвери пристроїв Linux, 3-е видання Джонатана Корбета, Алессандро Рубіні та Грега Кроа-Хартмана (2005), про які вже згадувалося. Він доступний на Amazon , Safari Books On-Line , а також як безкоштовне завантаження .

Ще кілька книг на цю тему - Основні драйвери пристроїв Linux від Sreekrishnan Venkateswaran (2008) (також доступні в Safari Books Online ) та Написання драйверів пристроїв Linux: посібник із вправами (том 3) доктора Джері Куперштейна (2009).

Для драйверів пристроїв Windows остання книга з цього приводу (опублікована два тижні тому), як видається, є драйвером пристроїв Windows 7 , к.е.н. (2010). Він також доступний на Safari Books Online .

Старішою книгою, яка охоплювала б Windows XP, є: Програмування моделі драйверів Microsoft Windows, друге видання , Вальтер Оней (2002). Він також доступний на Safari Books Online .

Ще одна книга, яка, як видається, не надрукована, але доступна в Safari Books Online, - « Розробка драйверів» із Фондом драйверів Windows , Пенні Орвік та Гай Сміт (2007). Я припускаю, що він охоплює Windows Vista.

Нарешті, Microsoft має вказівники на багато блогів тощо, які обговорюють розвиток драйверів.


Дякую, я б запропонував вам, щоб у вашій публікації також було посилання на "драйвери пристроїв Linux". Інакше Дуже ретельно.
Кортук

11

Хороший драйвер інкапсулює можливості апаратного забезпечення та робить їх доступними для ОС / додатків природним чином.

Як найкраще це зробити, багато що залежить від того, на яку операційну систему ви орієнтуєтесь та яке обладнання для драйвера.

У мене є досвід роботи з Linux і невеликими спеціалізованими ОС в режимі реального часу.

Для Linux я рекомендую прочитати драйвери пристроїв Linux . Це добре знайомиться з різними смаками драйверів Linux та абстракціями, які забезпечує їх операційна система.

Пристрої, такі як послідовні порти, де дані читаються послідовно, зазвичай обробляються драйверами символьних пристроїв з вузлом пристрою в просторі користувачів для додатків для читання. catможна прочитати з них.

Блокові пристрої обробляються пристроями випадкового доступу, такими як флеш-пам’ять та жорсткі диски. ddможе отримати доступ до них. Для гарного прикладу ознайомтеся з системою Linux MTD Linux .

Драйвери, які виконують низькі рівні з апаратним забезпеченням, майже напевно потрібно буде реалізовувати у просторі ядра. Ви можете зробити модуль ядра, завантажуваного під час виконання, або розмістити свій код статично в ядрі Linux.

Драйвери, які базуються на існуючих загальних драйверах, як-от USB, можуть бути записані в просторі користувачів. Використовуючи, наприклад, libusb .


4
Драйвери пристроїв Linux - це хороша книга. На жаль, ці речі дуже специфічні для ОС. Для Linux, мабуть, найпростіше написати, тому що в дереві вихідних джерел так багато драйверів. Якщо ви написали вбудований код для управління периферійними пристроями мікропроцесора, ви, мабуть, добре розумієте основи драйвера пристрою.
відмітки

так, я видаляю свої коментарі. моє ліжко.
Кортук

1
Як уже згадувалося, кишки драйвера, який контролює фактичне обладнання, будуть однаковими, чи є у вас ОС чи ні. Основні відмінності при написанні драйверів полягають у тому, що 1) інтерфейси потрібно вмістити в стандартну модель (наприклад, відкрити, закрити, прочитати, записати, ioctl) для ОС, і 2) метод, за допомогою якого драйвер встановлюється та активується.
tcrosley

1
@tcrosley, Якщо у вас є багато інформації про ці особливості, я хотів би побачити відповідь на це.
Кортук

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=uk&u=http://driverentry.com.br/ блог /% 3Fp% 3D825 & twu = 1

Сподіваюся, я трохи допомогла


Це допоможе багато, якщо я запитаю питання: "Де я можу вчити португальську в Інтернеті, щоб навчитися писати водії?" Дякуємо за допомогу.
Кортук

2
Не переживайте за вивчення португальської мови. Посилання про розвиток накопичувачів, які я пройшов, є англійською мовою. Навіть DriveEntry написаний і англійською. На жаль, публікація про книги є португальською, але книги - англійською. І найважливіше - це книги, а не посада.
Даніель Грілло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.