Сейчас на форуме: zds, UniSoft, ManHunter (+5 невидимых)

 eXeL@B —› Программирование —› взаимодействие с устройствами
Посл.ответ Сообщение

Ранг: 18.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 13 января 2012 18:38
· Личное сообщение · #1

Посоветуйте что нужно почитать, что бы осветить такие вопросы:

1) Получение списка доступных шин (от биоса наверное), каким образом
2) Передача данных(команд) по нужной шине, устройству подключенных к ПК
3) Распознавание устройства подключенного к той или иной шине




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 января 2012 18:59
· Личное сообщение · #2

Тебе наверное сюда http://www.wasm.ru/forum/viewforum.php?id=21 , там ИМХО больше помогут.

-----
Yann Tiersen best and do not fuck




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 13 января 2012 20:28
· Личное сообщение · #3

Вопрос слишком размытый, надо пару гиг перечитать...
Будет проще, если сформулируешь конкретную задачу или вопрос.



Ранг: 18.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 13 января 2012 20:50
· Личное сообщение · #4

В общем я своего рода ОС разработчик.
Задача такая:
Имеем голое железо(виртуальная машина допустим) без ОС.
Допустим на жестком диске записана некая программа на чистом ассемблере.
Включаем ПК(виртуальную машину), выполняется загрузчик, который загружает программу на жестком диске в память.

Итак:
имеем программу запущенную в чистом виде(на ассемблере) без ОС.

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

я рассуждал из следующих соображений:
1) у биоса наверняка есть информация о интерфейсах, которые подключаются к мат. плате.
и наверное он их как-то идентифицирует
2) у устройств наверняка должна быть функция на которую они должны отзываться, позывной что ли какой-нибудь вернуть, типа есть устройство на связи, или я посылаю сигнал в пустую, т. е. данный разъем не занят
3) ну и собственно каким образом происходит посылка сигналов по нужной мне шине данных...
не буду же я посылать команды для колонок в pci-express допустим или в sata :D\

P.S. надеюсь я изложил понятно, простите за мой плохой русский)



Ранг: 23.4 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 13 января 2012 20:57
· Личное сообщение · #5

Если вы хотите знать больше про биос и что в биосе, советую почитаь книгу "Дизассемблирование биос" в инете можно найти книгу, насколько я знаю, в биосе зажаются диапазоны портов, а также про IRQ прерывания почитать ... ( и еще гектар информации )
Одним словом, тут одним постом можно такого написать, что больше еще запутатся можно

| Сообщение посчитали полезным: Hell Knight


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 13 января 2012 21:18
· Личное сообщение · #6

по этой теме столько книг написано.. читать не перчитать
есть даже уже готовые ОС с открытым кодом!
открываете и читаете на любом языке, будьто С С++ asm
ReactOS
Linux
FreeBSD
Haiku
итд



Ранг: 18.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 14 января 2012 10:54
· Личное сообщение · #7

Ну про исходники я не сомневался, что там можно найти, просто хотелось найти какую-нибудь теорию.
Ну "Дизассемблирование биос" думаю это, то что доктор прописал ;)
Надеюсь найду ответы на нужные мне вопросы.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 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

Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 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

Ранг: 18.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 14 января 2012 18:11
· Личное сообщение · #10

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

Начал штурм "Дизассемблирование BIOS"


 eXeL@B —› Программирование —› взаимодействие с устройствами
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати