OSDev
http://osdev.ru/

PCI
http://osdev.ru/viewtopic.php?f=7&t=762
Страница 1 из 2

Автор:  Fatal_Error [ 10 июл 2013, 21:21 ]
Заголовок сообщения:  PCI

И снова я, и снова здравствуйте :D
хочу понять как пользоваться PCI. читал вики, википедию. но не совсем до конца понял. чтобы что-то прочитать от устройства нужно в регистр адреса положить номер шины, номер устройства, номер функции и регистр. а что это собственно такое? с номером шины и устройства более менее понятно, а вот номер функции и регистр - тьма тьмущая...

Автор:  SII [ 10 июл 2013, 21:37 ]
Заголовок сообщения:  Re: PCI

Номер функции -- это просто номер устройства внутри устройства :) Просто иерархия такая: шина - устройство - функция. Например, на видюхе присутсвует не только собственно видюха, но ещё и аудиокодек (для выдачи звука по HDMI), и ещё что-то может присутствовать -- и все эти вещи могут быть оформлены разными функциями одного устройства.

Ну а регистр -- это регистр и есть. Это программно доступная хрень для работы с устройством. В частности, есть регистры, хранящие коды идентификации производителя железяки, самой железяки и т.д.

Автор:  iz56 [ 10 июл 2013, 21:55 ]
Заголовок сообщения:  Re: PCI

Пожалуй, можно написать ОС - и не зная ничего про PCI. Только не очень полезную.

Автор:  SII [ 10 июл 2013, 22:10 ]
Заголовок сообщения:  Re: PCI

Вполне можно. Опрос устройств на PCI и умение их настраивать нужны для полноценных систем (коими являются, например, Винда или Линух), но не требуется для обеспечения базового функционала оси -- т.е. управления памятью, переключения задач, синхронизации и т.д., а также работы с теми устройствами, которые настраивает BIOS.

Автор:  Fatal_Error [ 10 июл 2013, 22:22 ]
Заголовок сообщения:  Re: PCI

мне надо с сатой работать. как я понял там только PCI

Автор:  Fatal_Error [ 10 июл 2013, 22:25 ]
Заголовок сообщения:  Re: PCI

если мне, к примеру, в голову взбредет на PCI искать SATA AHCI, то я должен буду перебирать в цикле все шины? т.е. шина 0, устройство 0, функция 0 и регистр 0, а затем проверять что вернула PCI, т.е. код класса\подкласса и т.д. если не то, то следующая шина? или не так?

Автор:  SII [ 10 июл 2013, 23:02 ]
Заголовок сообщения:  Re: PCI

Угу, именно полный перебор. Таким путём ось строит топологию шин и подключенных к ним устройств, а заодно собирает список требуемых ресурсов, потом выделяет эти самые ресурсы, настраивает устройства, подыскивает драйверы...

Автор:  phantom-84 [ 11 июл 2013, 10:16 ]
Заголовок сообщения:  Re: PCI

PCI BIOS возвращает вполне корректный "номер последней шины" - дальше можно не искать. Еще если нет нулевой функции, то другие функции устройства можно не проверять.

Автор:  Fatal_Error [ 11 июл 2013, 15:14 ]
Заголовок сообщения:  Re: PCI

стал я проверять все шины начиная с нулевой.
Цитата:
xor bx, bx
mov dx, 0
@@:
push bx bx bx dx
call ReadPCIReg
inc dx
jmp @b

первый раз мне в ответ пришло 12378086h. а дальше на всех шинах -1. т.е. устройства нету. что это значит? О_О

Автор:  Fatal_Error [ 11 июл 2013, 15:15 ]
Заголовок сообщения:  Re: PCI

DWORD ReadPCIReg(word bus, word dev, word func, word reg) - прототип. чтобы было понятно :)

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/