Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.05.2025
Сообщений: 1

Как сделать драйвер диска на языке C и ассемблере?

28.05.2025, 04:41. Показов 1199. Ответов 2

Студворк — интернет-сервис помощи студентам
Я не нашёл информацию в интернете, я делаю свою ос и мне нужно код этого драйвера или хотя бы как драйвер диска работает полное объяснение
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2025, 04:41
Ответы с готовыми решениями:

Зачем нужен драйвер и как написать простейший драйвер
Хотя в интернете и есть на русском языке некоторые обяснения что такое драйвер для его...

Ассемблер в паскале: как загрузить массив во встроенный ассемблер и произвести над любым из его чисел сложение(вычитание).
хочу написать программу в паскале с использованием встроенного ассемблера, но прежде чем начать...

Драйвер чтения данных из СОМ-порта(Ассемблер)
Доброго времени суток,может завалялся у кого драйвер DOS на ассемблере под COM-порт(без разницы на...

2
Эксперт .NET
 Аватар для Usaga
14129 / 9349 / 1350
Регистрация: 21.01.2016
Сообщений: 35,140
28.05.2025, 05:26
Artem_infOS, устройство драйвера определяется не только железом, которым он драйвит, но и архитектурой ОС. А поскольку ты сам свою ОС пишешь, то ты единственный и должен знать как этот драйвер должен выглядеть.

Ну и "диски" разные бывают. Очень разные. Полное объяснение ты нигде не найдёшь потому, что это нафиг никому не надо расписывать.

Можешь посмотреть исходники ядра Linux или FreeBSD. Там модули (драйверы) входят в состав ядра и их можно взять за основу.
1
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6208 / 2442 / 403
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
28.05.2025, 08:03
Цитата Сообщение от Artem_infOS Посмотреть сообщение
или хотя бы как драйвер диска работает полное объяснение
Вот последовательность действий на начальном этапе:

1. Поиск контроллеров накопителей на мат.плате
Искать в "PCI-Config-Space" или вручную чз порты 0x0CF8 (CONFIG_ADDRESS) + 0x0CFC (CONFIG_DATA), или-же удобно использовать функцию прерывания int-1Ah. AX=B103h. Девайсам "MassStorage" назначен класс(01), подкласс(08:01) задаёт тип контроллера, а последний байт(PI) указывает на "Programming Interface", т.е. метод программирования:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     mov    ax, 0xB103
     xor    si,si
 
     mov    ecx,0x010802      ;<--- NVMe M.2
;    mov    ecx,0x010801      ;<--- SATA NVM
;    mov    ecx,0x010601      ;<--- SATA AHCI
;    mov    ecx,0x010600      ;<--- SATA IDE
;    mov    ecx,0x01018F/8A   ;<---  ATA IDE
;    mov    ecx,0x010100      ;<---  ATA Native
 
     int    0x1a
     or     ah,ah
     jnz    @NotFound
.....
2. Идентификация устройства
Если на любой из подклассов int-1Ah вернёт нуль, значит есть контроллер и устройство на его шине, и это определит дальнейший фронт работы в зависимости от интерфейса. Можно начать с идентификации накопителя, для чего необходимо получить доступ к физ.портам в/в, или их отображением в памяти MMIO. Эта информация хранится в регистрах BAR[5:0] там-же в "PCI-Config-Space" - прочитать их можно функцией int-1Ah. AX=B10Ah (read dword). Определившись с базовым портом/регистром накопителя, отправляешь в него АТА-команду "Identify Device" с кодом 0xEC, чтобы получить размер в секторах, поддержку DMA, и всё остальное.

3. Обработчики запросов
Доступ к накопителям на RW осуществляется исключительно через физ.порты или регистры MMIO, т.к. других способов просто не существует в природе. Можно найти готовые высокоуровневые программные решения, но всё это будет лишь обёрткой для чтения/записи портов.

Здесь в зависимости от интерфейса качаешь спеки с сайта t13 или pcisig, где оговариваются все нюансы. Так-же много полезной инфы есть в доках на чипсет (пусть будет) PCH9. В части(13) найдёшь базовые сведения о портах и регистрах перечисленных выше подклассов. Проблема в том, что буквально все интерфейсы программируются по разному, поэтому однозначного ответа тут быть не может. Что-то общее есть между IDE, а вот AHCI вообще из другой оперы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2025, 08:03
Помогаю со студенческими работами здесь

Драйвер на ассемблере
Поставили цель написать курсовую. В качестве работы выступает драйвер для ОС Windows под ноутбук с...

Ввод числа ассемблерной вставкой (вызов scanf из ассемблерной вставки)
Здравствуйте! Задача: Напишите программу, в которой создается и заполняется натуральными числами...

Подскажите как перевести на язык ассемблер
Помогите перевести на язык ассемблер эту строчку k = ( k &gt;&gt;1 ) &amp; 0x70

Как создать процесс Windows на языке ассемблера?
вот недоделанный мой пример: TITLE (.asm) ;386 Include Irvine32.inc .data

Как сложить 2 числа на языке Ассемблера?
Напишите пожалуйста как сложить 2 числа в Ассемблере, допустим 2+3, и вывести на экран. И если не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru