Как получить доступ к USB-порту через BIOS в 16-битном реальном режиме x86? - PullRequest
3 голосов
/ 04 декабря 2011

Я новичок в мире ассемблера,

Я пытаюсь написать несколько ассемблерных кодов для связи с аппаратными устройствами, такими как последовательный, параллельный, VGA, клавиатура и т. Д.

Я делаю это, находясь в реальном режиме процессора Intel x86, загружая свой код из boostrap, который я лично написал для загрузки моего кода сборки.

Ну, в соответствии с моими знаниями, которые я собрал изчитая руководства, мне проще всего было использовать BIOS INTs Service Routine (ISR), а с другой стороны, самый длинный путь - это доступ к различным регистрам аппаратного обеспечения, как, например, регистр состояния и регистры управления последовательного порта....

В1: Правильно ли я по этому поводу?

Я мог общаться с VGA и последовательным оборудованием, используя BIOS INT, но я не смог найти прерывания bios для контроллера USB..?!

Q2: Можете ли вы помочь мне в этом, чтобы иметь возможность общаться с USB-портом и другими оставшимися портами, просто сделайте это общим?

Q3:

Ответы [ 3 ]

4 голосов
/ 05 декабря 2011

Как говорит Алекс, универсальной поддержки USB на уровне BIOS нет.Тем не менее, были предприняты некоторые попытки сделать драйверы DOS реального режима для USB-устройств.Я нашел страницу с некоторыми исходниками, которые вы должны использовать: http://bretjohnson.us/source/source.htm

4 голосов
/ 02 октября 2013

В соответствии с руководством GEUB (http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-using-grub_002dinstall.html), в BIOS без ошибок будет представлен USB как жесткий диск. Таким образом, вы можете использовать прерывания жесткого диска (например, INT 0x13) для поиска и доступа к USB, как нормальное оборудование. BIOS делает то же самое для CDROM (см. http://wiki.osdev.org/El-Torito без режима эмуляции). Я думаю, что BIOS сделает это для всех поддерживаемых параметров загрузки, но я не нашел ни одного документа, поддерживающего это.

3 голосов
/ 04 декабря 2011

В BIOS компьютера нет ничего, что поддерживало бы USB-ввод-вывод, аналогичный всем другим в / в (клавиатура, дисплей, последовательный, параллельный, диск, динамик). USB пришел слишком поздно на вечеринку. Единственная вещь, связанная с USB, которую вы можете получить из BIOS, - это поддержка USB-клавиатур и хранилищ, подключенных через USB (вы можете загружаться с них на современных ПК). Кроме этого, вы должны реализовать свой собственный USB-стек.

...