|
ArcaOS 5.0 Русская версия
Пакет русификации ArcaOS 5.0 OS/2 давно доступен.
Поддерживается любая версия: 5.0, 5.0.1, 5.0.2.
eCo Software может выпустить и другие пакеты
(Немецкий, Голландский, Бразильский Португальский, Испанский, Шведский и т.д.)
|
TITLE: Путь к Plug'n'Play
DATE: 2001-09-10 18:24:22
AUTHOR: Дмитрий Поляков
С OS/2 я познакомился в 1998 году, чему поспособствовал
сисоп BBS LimeLight station, который записал мне компакт диск с
кучей осевого софта. Видимо, если бы ни это событие, OS/2 до
сих пор являлась бы для меня просто ещё одной операционной
системой как BeOS, Linux, QNX и т.п. В то время меня сильно
привлекло качество программного обеспечения, сделанного для
этой системы, такого как ZOC или к примеру, Lotus
SmartSuite. Как оказалось, ситуация с драйверами была куда
хуже чем с просто приложениями. В первую очередь, я начал
устанавливать драйвер для своей звуковой карты (в то время
это была Gravis Ultrasound PnP Pro), что не явилось для меня
тривиальной задачей. Только после прочтения документации,
я наконец-то выяснил, что оказывается необходимо запустить
какую то программу под названием minstall. Догадаться до
этого было сложно. Слово PnP в названии звуковой карты на её
работу в OS/2 не повлияло никак, чего нельзя сказать о
работе карты в MS Windows. В Windows карточка сразу же
определялась при запуске системы. Всё это говорило мне, что
в OS/2 с драйверами дела плохи. С тех пор накопилось
достаточно много опыта, да и проблемы с драйверами сами по
себе пропали, например взять тот же SDD. Если ранее
приходилось искать драйвер на сайте производителя, версии
которого под OS/2 могло не оказаться (как часто и происходило), то
с появлением SDD нехватка драйверов для видеоадаптеров
исчезла. Наверное, всем понятно, что с драйверами в Windows
проблем вообще нет и, наверное теперь уже не будет. Нет
сложностей, как в установке, так и в поиске. На фоне таких
статей как
"Стратегия развития OS/2"
ко мне пришла мысль реализовать такую же систему определения
устройств, как это сделано в Windows, но отсутствие знаний
API OS/2, документации и времени всё погубило. Далее я
расскажу мои мысли по поводу того, как можно реализовать
Plug'n'Play в OS/2 и если кто то сможет это реализовать -
пускай попробует. Я думаю, что многие люди будут благодарны
этому человеку.
Путь к Plug'n'Play
Драйверы, как правило, устанавливаются для устройств,
которые подключены к шинам ISA и PCI. Для получения списка и
ресурсов устройств на этих шинах существуют различные
способы. При поиске устройств мы получаем его
идентификатор. Существует постоянно обновляемая
база данных соответствия идентификаторов устройств самим устройствам.
С получением списка для шины PCI особенных проблем нет. В OS/2
для этого всё есть. В файле pddref.inf из DDK (раздел
Generic IOCtl Commands \ Category 80h OEMHLP IOCtls) описаны
функции для работы с PCI, в том числе и поиск устройств на
шине. Также список можно получить с помощью прерывания BIOS
1Ah, которое в OS/2 непонятно как выполнить (разве что в
VDM, но это не путь), и можно ещё таким образом:
PCItype:=0;
outp($CF8,0);
outp($CFA,0);
if (inp($CF8)=0) and (inp($CFA)=0) then PCItype:=2
else begin
tmp:=inpl($CF8);
outpl($CF8,$80000000);
if inpl($CF8)=$80000000 then PCItype:=1;
outpl($CF8,tmp);
end;
case PCItype of
1:begin {PCI type 1}
for i:=0 to 511 do
begin
outpl($CF8,$80000000+i*longint(2048));
tmp:=inpl($CFC);
if ((tmp and $FFFF)<>$FFFF) and ((tmp shr 16)<>$FFFF) then
{_PCI Device: Vendor: (l and $FFFF) Device: (l shr 16)_}
end;
end;
2:begin {PCI type 2}
outp($CF8,$80);
outp($CFA,0); {Bus select?}
for i:=0 to 15 do
begin
tmp:=inpl(i*256 +$C000);
if ((tmp and $FFFF)<>$FFFF) and ((tmp shr 16)<>$FFFF) then
{_PCI Device: Vendor: (l and $FFFF) Device: (l shr 16)_}
end;
outp($CF8,0);
end;
end;
С шиной ISA ситуация несколько сложнее. Каких либо
специальных функций в OS/2 я к сожалению не нашел. По поводу
ISA/PnP есть документация от Microsoft, найти котрую можно
по адресу
ftp://ftp.microsoft.com/developr/drg/Plug-and-Play/Pnpspecs.
Второй способ - это использовать PnP BIOS. Но тут возникает
небольшая проблема - код 16-и битный и находится ниже
первого мегабайта. На вопрос, как его выполнить, мне ответить
никто не смог. Так что остаётся надеяться на документацию от
Microsoft.
Вообще, о том, каким образом организуется Plug'n'Play
можно прочитать по следующему адресу:
http://members.hyperlink.net.au/~chart.
Там же есть и исходники, правда под DOS.
Как это реализовать в OS/2
Можно написать объект для Presentation Manager, который
при загрузки самого PM будет опрашивать драйвер (который,
разумеется тоже нужно написать), на предмет списка устройств
и сверять его с результатом предыдущей загрузки системы.
Если он (список) не совпадает, то смотрим, какие новые
устройства у нас появились. В соответствии с этим начинаем
устанавливать те или иные драйверы. Можно не использовать
никакой драйвер, а просто взять с
этой странички
уже готовые
программы, несколько изменить, да и всё. Единственное что
смущает - это то, что они будут работать в VDM. Где и как
хранить драйверы - нужно ещё подумать. А можно пойти по примеру
Windows и взять за основу идентификации устройства .inf-файл.
P.S. Вообще, всё это уже должен был кто-то реализовать.
Вот например в eComStation почему бы не сделать? Удобно ведь.
Автор: Поляков Дмитрий
Комментарии: Alex G. 2001-09-10 19:06:08 | А надо? iSA как бы умерла уже. Может лучше доделать USB support в оси - благо сырцы открыли...
| Yuri Prokushev 2001-09-11 10:24:02 | Есть одна сложность - сами драйвера. Определение устройств - это хорошо. Ну, нашли мы его. А дальше что делать? | 2001-09-11 11:28:02 | Что делать ?
1. Иметь с дистрибутивом оси множество драйверов.
2. Открывать браузер с URL'ом драйвера.
| Василий А. Сидоров 2001-09-11 16:05:46 | 1. Int1A "закрыто". Intel'ом. "Читайте конфигурационные регистры напрямую". Его же (Intel'а) рекомендация.
2. "rmview /da". Чего, говоришь, нет в OS/2? Виндовозного "Обнаружено новое устройство"? "В сад" (c).
3. С любым PnP nonPnP-aware драйвер создаст кучу проблем. Кто будет писать "правильные" драйверы? | Автор 2001-09-11 16:18:21 | Речь ведь не идёт о создании той же rmview или чего то подобного, а всего лишь об упрощении установки
драйверов. За основу можно взять тот же rmview,
кстати. | Василий А. Сидоров 2001-09-11 18:47:42 | "Процесс установки драйверов" заключается в прописывании device/basedev в CONFIG.SYS.
Если не хочется "делать это" ручками - есть DDINSTALL.
Вопрос в другом - где взять PnP-aware драйверы? | GA 2002-02-23 14:10:53 | For Plug and Play one needs
(1.)Plug and Play bios, P&P OS, and P&P Hardware
(2.)Hardware Tree: Built by BUS enumerators. RAM record of all devices on system
(3.)Bus Enumerator: Driver based on BUS (i.e. SCSI, IDE). Allows unique and constant ID of each device on system
(4.)An auto-detection which BUS enumerators are in effect
(5.)Hardware tree is displayed as the device manager (stored in hkey_local_machine)
(6.)Plug and Play OS requires: Configuration Mgr., Hardware Tree, BUS Enumerator, Resource Arbitrators
(7.)Plug and Play Device drivers must: Register with configuration mgr., wait for resources (device) before becoming active, and respond to dynamic config (not jumper-laden)
(8.)P&P finds legacy cards by checking specific I/O ports and memory addresses.
(9.)Legacy cards can only be found by setup and "Add New Hardware"
This should be a model for development... | GA 2002-02-23 14:22:18 | Updating ESCD...About Plug n Pray
see: [url]
with some detailed advices | GA 2002-02-23 15:00:30 | A tool for PCI hardware recognition:
PCI044VK.ZIP 300K 2-22-02
A PCI & AGP bus sniffer v0.44.vk with recognition of hardware types. PCI.EXE and CHKPCI.EXE are command line
programs with VIO output(Jan., 5th 2002)
One can download it from [url]
If one has no registration one can download free with telnet
See the direct call for a telnet session on the site |
Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).
|
|
Готовая eComStation на SSD диске
Последний активный опрос: Какая высота барьера RPM?
[Google]
|
IBM OS/2 Warp
|