eXeL@B —› Программирование —› взаимодействие с устройствами |
Посл.ответ | Сообщение |
|
Создано: 13 января 2012 18:38 · Личное сообщение · #1 |
|
Создано: 13 января 2012 18:59 · Личное сообщение · #2 |
|
Создано: 13 января 2012 20:28 · Личное сообщение · #3 |
|
Создано: 13 января 2012 20:50 · Личное сообщение · #4 В общем я своего рода ОС разработчик. Задача такая: Имеем голое железо(виртуальная машина допустим) без ОС. Допустим на жестком диске записана некая программа на чистом ассемблере. Включаем ПК(виртуальную машину), выполняется загрузчик, который загружает программу на жестком диске в память. Итак: имеем программу запущенную в чистом виде(на ассемблере) без ОС. Теперь, что я хочу: я хочу узнать, что вообще подключено к ПК, какие устройства. и как можно с ними взаимодействовать... посылать команды(сигналы, пакеты данных) и т. п. я рассуждал из следующих соображений: 1) у биоса наверняка есть информация о интерфейсах, которые подключаются к мат. плате. и наверное он их как-то идентифицирует 2) у устройств наверняка должна быть функция на которую они должны отзываться, позывной что ли какой-нибудь вернуть, типа есть устройство на связи, или я посылаю сигнал в пустую, т. е. данный разъем не занят 3) ну и собственно каким образом происходит посылка сигналов по нужной мне шине данных... не буду же я посылать команды для колонок в pci-express допустим или в sata :D\ P.S. надеюсь я изложил понятно, простите за мой плохой русский) |
|
Создано: 13 января 2012 20:57 · Личное сообщение · #5 Если вы хотите знать больше про биос и что в биосе, советую почитаь книгу "Дизассемблирование биос" в инете можно найти книгу, насколько я знаю, в биосе зажаются диапазоны портов, а также про IRQ прерывания почитать ... ( и еще гектар информации ) Одним словом, тут одним постом можно такого написать, что больше еще запутатся можно | Сообщение посчитали полезным: Hell Knight |
|
Создано: 13 января 2012 21:18 · Личное сообщение · #6 |
|
Создано: 14 января 2012 10:54 · Личное сообщение · #7 |
|
Создано: 14 января 2012 11:06 · Поправил: Veliant · Личное сообщение · #8 Hell Knight пишет: у биоса наверняка есть информация о интерфейсах, которые подключаются к мат. плате. и наверное он их как-то идентифицирует Через PCI BIOS можно получить информацию и управлять железом подключенном через PCI (почти все железо) Hell Knight пишет: у устройств наверняка должна быть функция на которую они должны отзываться, позывной что ли какой-нибудь вернуть, типа есть устройство на связи, или я посылаю сигнал в пустую, т. е. данный разъем не занят Ага VendorID и DeviceID Hell Knight пишет: ну и собственно каким образом происходит посылка сигналов по нужной мне шине данных... не буду же я посылать команды для колонок в pci-express допустим или в sata :D\ Почти так и есть. Получаешь адреса или порты для управления железом из pci bar и работаешь с железом напрямую, посылая данные в порты или записью в нужные адреса С тем что висит на USB соответственно работаешь, используя его ресурсы. Правда там геморой тк имеется 3 режим AHCI, UHCI и EHCI | Сообщение посчитали полезным: Hell Knight |
|
Создано: 14 января 2012 17:00 · Личное сообщение · #9 Veliant пишет: С тем что висит на USB соответственно работаешь, используя его ресурсы. Правда там геморой тк имеется 3 режим AHCI, UHCI и EHCI USB 3.0 - XHCI, USB 2.0 - EHCI, USB 1.1 - UHCI, OHCI. AHCI - это SATA контроллер. И там везде кроме записи в I/O или Memory Mapped I/O для подачи команд надо списки в памяти строить для PCI Bus Master (DMA) для передачи данных от/к устройству. | Сообщение посчитали полезным: Hell Knight, Veliant |
|
Создано: 14 января 2012 18:11 · Личное сообщение · #10 |
eXeL@B —› Программирование —› взаимодействие с устройствами |