Доступ к железу по адресам

skyformstd

Вообщем пусть есть железо, на pci, lpt, etc... известен диапазон его адресов, каким образом записывать/считывать данные по этим адресам, например в ХР? В досе насколько помню были команды inportb,outportb. Под виндой они не работают.Я так понимаю надо писать драйвер.Где об этом можно почитать и насколько это сложное занятие?
И еще более общий вопрос.Эти адреса, которые выдаются устройству - фактически адреса в ОП?

yolki

DDK в зубы и вперёд! ©
// Driver Developer Kit
Прямой ввод-вывод через порты вроде как запрещён в винде. только если через эмуляторы.
что конкретно хоть надо? С какой железкой общаться?

rosali

 
Эти адреса, которые выдаются устройству - фактически адреса в ОП
Если устройство на PCI, то вобщем-то да, физические адреса на этой шине и физические адреса памяти это единое адресное пространство. Чипсет собственно разруливает какие запросы куда перенаправлять. И работа с такими устройствами осущесвляется простыми командами типа mov, только придётся как-то вывести физические адреса устройства в виртуальное пространство процесса. То есть или все-таки написать драйвер, или скорее всего есть уже такой, надо только найти. С lpt не знаю, наверное действительно через in/out работают.
PS. Я никогда драйверов не писал, тем более под Винду. Я так, теоретик...

Kalya777

Не думаю что для описания передачи данных в PCI-устройства
используется ассемблер.

skyformstd

Короче есть такая программа:
"TVicHW32 - представляет собой набор драйверов и сопутствующих интерфейсных модулей, которые позволяют программисту управлять аппаратурой компьютера непосредственно из Win32-приложения. TVicHW32 позволяет обращаться к портам компьютера, работать с заданными регионами физической памяти и обрабатывать аппаратные прерывания, читать серийные номера жестких дисков, работать с контроллером клавиатуры. Интерфейс к драйверам реализован в виде DLL, и VCL-компонента."

она shareware. Надо реализовать часть "позволяет обращаться к портам компьютера, работать с заданными регионами физической памяти". Хотя она похоже не столь супер универсальна, сколь в ней есть отдельно разработанные функции для работы и с lpt и com и pci и все такое...
Ладно, попробую начать с lpt чтоли, хоть результат можно видеть...
ЗЫ:DDK я установил, только в инете стоящих мануалов я не нашел, вообще непонятно с какого края цепляться...

bansek

Вчера наткнулся на интересную штуку: на сайте www.sysinternals.com (или где-то так, сейчас не могу проверить - инет не работает) есть много интересного, в том числе описывается, что можно замапить любой участок из \Devices\PhysMem в пр-во своего процесса и читать это дело.

rosali

Не думаю что для описания передачи данных в PCI-устройства
используется ассемблер.

Не думаю что для программирования процессора используется ассемблер

Kalya777

Раз не сталкивался с написанием драйверов, то лучше помолчи


Не думаю что для программирования процессора используется ассемблер
Оставить комментарий
Имя или ник:
Комментарий: