Программа для PCMCIA карточки
От: Аноним  
Дата: 25.10.05 17:33
Оценка:
Помогите новичку! Хочу считать данные с PCMCIA карточки собственного производства. Подсоединил карточку к ПК (через адаптер PCI/PCMCIA). Windows определил её, выделил под неё ресурсы (в том числе порты ввода/вывода) и естественно требует драйвера. Могу я, без написания драйвера, обратится к карточке по указанным windows адресам портов ввода/вывода (с помощью, например, ассемблерного кода).
Re: Программа для PCMCIA карточки
От: TarasCo  
Дата: 26.10.05 06:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Помогите новичку! Хочу считать данные с PCMCIA карточки собственного производства. Подсоединил карточку к ПК (через адаптер PCI/PCMCIA). Windows определил её, выделил под неё ресурсы (в том числе порты ввода/вывода) и естественно требует драйвера. Могу я, без написания драйвера, обратится к карточке по указанным windows адресам портов ввода/вывода (с помощью, например, ассемблерного кода).


можете, но для начала нужно снять привелегию с интсрукций ввода/вывода (in/out ). Как — не документированно, но известно . Но при этом все равно не получится установить обработчик прерывания, не получится обращаться у памяти устройства ( регистрам ). Поэтому лучше отбросить сомнения и пуститься во все тяжкие — писать драйвер.
Да пребудет с тобою сила
Re[2]: Программа для PCMCIA карточки
От: eesh  
Дата: 26.10.05 07:29
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Здравствуйте, Аноним, Вы писали:


А>>Помогите новичку! Хочу считать данные с PCMCIA карточки собственного производства. Подсоединил карточку к ПК (через адаптер PCI/PCMCIA). Windows определил её, выделил под неё ресурсы (в том числе порты ввода/вывода) и естественно требует драйвера. Могу я, без написания драйвера, обратится к карточке по указанным windows адресам портов ввода/вывода (с помощью, например, ассемблерного кода).


TC>можете, но для начала нужно снять привелегию с интсрукций ввода/вывода (in/out ). Как — не документированно, но известно . Но при этом все равно не получится установить обработчик прерывания, не получится обращаться у памяти устройства ( регистрам ). Поэтому лучше отбросить сомнения и пуститься во все тяжкие — писать драйвер.


Но моё устройство не использует прерывания (ровно как и DMA) и у него нет как таковой области памяти, только четыре регистра ввода, адреса которых мне выделил Windows. И всё что мне нужно — это считывать и записывать байты с этих портов. И что же всё равно без драйвера не обойтись?
Очень не хочется писать драйвер, так как никогда этого не делал. Может подскажите, как снять эту привилегию с регистров ввода/вывода и зачем это делать?
Re[3]: Программа для PCMCIA карточки
От: MNZ Россия  
Дата: 26.10.05 08:04
Оценка:
Здравствуйте, eesh, Вы писали:

E>Может подскажите, как снять эту привилегию с регистров ввода/вывода и зачем это делать?


Можно использовать один из распространённых драйверов (загружаются программно, затем из пользовательского режима можно напрямую обращаться к портам), например, giveio.sys. Их несколько разных, но делают одно и то же. В сети без труда найдёте.

Зачем? Да потому что в пользовательском режиме инструкции in, out и некоторые другие относятся к привелегированным и не допускаются к выполнению. И если загрузчик встретит их в приложении, будет сгенерировано исключение со всеми вытекающими. Вышеупомянутый драйвер как раз и даёт приложению полномочия выполнять подобные инструкции.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Программа для PCMCIA карточки
От: eesh  
Дата: 26.10.05 08:52
Оценка:
Здравствуйте, MNZ, Вы писали:

MNZ>Здравствуйте, eesh, Вы писали:


E>>Может подскажите, как снять эту привилегию с регистров ввода/вывода и зачем это делать?


MNZ>Можно использовать один из распространённых драйверов (загружаются программно, затем из пользовательского режима можно напрямую обращаться к портам), например, giveio.sys. Их несколько разных, но делают одно и то же. В сети без труда найдёте.


MNZ>Зачем? Да потому что в пользовательском режиме инструкции in, out и некоторые другие относятся к привелегированным и не допускаются к выполнению. И если загрузчик встретит их в приложении, будет сгенерировано исключение со всеми вытекающими. Вышеупомянутый драйвер как раз и даёт приложению полномочия выполнять подобные инструкции.


Спасибо большое теперь с Windows всё понятно!
Но, простите за назойливость (хочется до конца разобраться), а если запускать из-под DOS, то результат будет тот же? Или адреса портов, выделенные Windows, уже будут не действительны в DOS? Тогда как можно узнать DOSовские адреса ? При этом хочу заметить, что в CIS самой карточки вроде как указываются адреса ввода-вывода, которые ей нужны? Эта информация учитывается в Windows и DOS?
Re[5]: Программа для PCMCIA карточки
От: MNZ Россия  
Дата: 26.10.05 09:45
Оценка:
Здравствуйте, eesh, Вы писали:

E>Спасибо большое теперь с Windows всё понятно!

E>Но, простите за назойливость (хочется до конца разобраться), а если запускать из-под DOS, то результат будет тот же? Или адреса портов, выделенные Windows, уже будут не действительны в DOS? Тогда как можно узнать DOSовские адреса ? При этом хочу заметить, что в CIS самой карточки вроде как указываются адреса ввода-вывода, которые ей нужны? Эта информация учитывается в Windows и DOS?

В DOS приложение может делать всё что ему угодно, т.к. это однозадачная ОС и все ресурсы машины отдаются активному процессу. Про адреса в этом случае ничего не могу сказать. Здесь нужно своё железо знать, куда оно подключается и где это место в компьютере. Если речь идёт о Windows Virtual DOS Machine (VDM), то лучше не надо. Проще разобраться с моделью драйвера (уже готовые шаблоны имеются, кстати), чем потом глюки отлавливать. Ну или расчитывать на Win9x, там как в DOS к портам обращаться можно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.