Как получить информацию о производителе диска? - PullRequest
2 голосов
/ 11 июля 2011

Я учусь программировать шину ATA.В Bochs кажется, что мой код для чтения / записи работает, однако я не могу сказать это наверняка, пока не попробую его на реальном диске.Поэтому мне нужно выяснить, как получить информацию о производителе диска, что является наименее важным, когда речь идет о его функциональности, но, с другой стороны, печать этой информации на экране - одна из тех вещей, которые могут убедить меня, что я не собираюсь винитьвесь мой компьютер.Я пытался отгадать это, но мне не очень повезло.Если бы вы могли предоставить мне некоторые ссылки или советы, это было бы здорово.thx stu.

ps - предпочтительны решения без прерываний

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Я нашел решение в этом pdf (ищите команду Indetify Device), и здесь есть хороший код C здесь . Существует также много информации о osdev , которая, на мой взгляд, является наилучшей, если вам не очень нравится читать исходные коды. С Bochs он работает отлично, с Qemu он работает отлично, с моим настольным ПК он работает нормально, но, конечно, ноутбуки чувствуют себя несколько особенными, поэтому я пока не могу заставить его работать на них. Один печатает 40 символов, которые выглядят как пи, а другой вообще ничего не печатает. Если у вас есть идеи, в чем может быть дело, поделитесь своим мнением со мной. Надеюсь, что ссылки помогут другим, кто ищет эту информацию.

EDIT

ок, мой плохой (конечно), я забыл ждать BSY. Правильный способ получения нужной информации аналогичен описанию команды osdev под командой IDENTIFY. Также убедитесь, что вы прочитали все данные после отправки команды, иначе индикатор занятости не погаснет.

0 голосов
/ 13 июля 2011

Я думаю, вам стоит попробовать исследовать libata из ядра Linux.

...