Шина ISA, доступ из винды

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Шина ISA, доступ из винды

Сообщение TripleKill »

Имеется комп с материнкой Chaintech 7AJA2. На последней есть ISA-слот.
Можно ли к нему обращаться напрямую, скажем из Delphi? Если да, то что для этого нужно, и где можно почитать об этом?
Нашёл книгу Блохнин С.М. - Шина ISA персонального компьютера IBM PC/AT, но там приведены технические подробности, а меня интересуют программные.
Может, кому-то доводилось делать приставки к компу по этой шине?
Спасибо.
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: Шина ISA, доступ из винды

Сообщение Flasher »

Что значит "обращаться к слоту"? Это же шина, и она не имеет каких-либо ответных частей. Вешаться туда очень легко- лепишь дешифратор адреса и вуаля...
Аватара пользователя
Evgeny1
Друг Кота
Сообщения: 4106
Зарегистрирован: Пн авг 10, 2009 01:18:55
Откуда: Электросталь
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Evgeny1 »

вот пример реализации
http://radiokot.ru/circuit/digital/pcmod/09/
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: Шина ISA, доступ из винды

Сообщение TripleKill »

Evgeny1, спасибо за ссылку.

Может, я не совсем корректно выразился. Меня интересует именно программное обращение к ней.
Например, к LPT я могу обратиться по адресу $378. Это самое обращение можно легко описать с помощью asm-вставок в пресловутом delphi: mov al, $378; out al, dx - как-то так.
Дешифратор же адреса вроде как железка, или я вас неправильно понял?
Допустим, у меня есть плата из статьи, приведённой Evgeny1, которая вставлена в ISA. Как мне теперь получить на компе данные с этой платы?
Если допустим проводить аналогию с тем же LPT, я должен установить в регистрах AL, AH адрес, и считать с него данные?
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: Шина ISA, доступ из винды

Сообщение Flasher »

да
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Леонид Иванович »

TripleKill писал(а):Например, к LPT я могу обратиться по адресу $378. Это самое обращение можно легко описать с помощью asm-вставок в пресловутом delphi: mov al, $378; out al, dx - как-то так.


Это проходит под Win98, но не проходит под XP. Нужно или писать свой драйвер устройства, или использовать готовый универсальный драйвер, который открывает доступ к портам IO.

Приходилось делать много разных плат на ISA-шину, сначала на простой логике, потом на CPLD. В промышленных компьютерах эта шина используется по сей день.
Вложения
DAC12-4A.jpg
(245.99 КБ) 952 скачивания
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: Шина ISA, доступ из винды

Сообщение TripleKill »

Flasher, спасибо, это и хотел услышать.

Леонид Иванович писал(а):универсальный драйвер


PortTalk прокатит? С программатором работает через COM. C дельфи тоже эту же прогу юзал, всё работало.

И ещё момент: а какой диапазон адресов я могу задавать? Т.е. я прочитал, что есть 24 линии адреса, но где у этого диапазона начало и конец? Опять же, обращаясь по адресу 378 я знаю, что попаду в LPT. А как тут?

P.S. В диспетчере устройств есть "Порт чтения данных ISAPNP". Там три диапазона ввода-вывода, 0А79-0А79, 0279-0279 и 0274-0277. Если, конечно, это что-нибудь значит. Система XP.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Леонид Иванович »

TripleKill писал(а):PortTalk прокатит?


По идее, покатит.

В адресном пространстве есть "дырки", не занятые стандартным оборудованием. По памяти все возможные адреса своих плат не скажу, нужно смотреть в книгах. Но обычно использовал что-то из диапазона 100Н - 16FH. Для того, чтобы можно было поставить сразу несколько плат, устанавливал dip-переключатель на некоторые линии адреса.
Вложения
isa_addr.gif
(20.49 КБ) 851 скачивание
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: Шина ISA, доступ из винды

Сообщение TripleKill »

Спасибо, буду изучать дальше)
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Tolmi »

TripleKill писал(а):И ещё момент: а какой диапазон адресов я могу задавать? Т.е. я прочитал, что есть 24 линии адреса, но где у этого диапазона начало и конец? Опять же, обращаясь по адресу 378 я знаю, что попаду в LPT. А как тут?

В шине ISA изначально практиковалась неполная дешифрация портов ввода-вывода. Поэтому реально там используются три младших байта ( в смысле весь диапазон 0000-0FFF ) 24 разряда - это полная адресная шина памяти. Там полный диапазон 000000-FFFFFF (16 мегабайт), но реально только 00000-FFFFF, (первый мегабайт) а остальное - пляски с бубном.
P.S. В диспетчере устройств есть "Порт чтения данных ISAPNP". Там три диапазона ввода-вывода, 0А79-0А79, 0279-0279 и 0274-0277. Если, конечно, это что-нибудь значит. Система XP.

Это чуть не то. Чип на материнке, который делает гейт на шину ISA, кроме всего прочего, умеет отыскивать на шине ISA платы расширения, которые умеют PnP, и через эти порты можно считать конфигурацию имеющегося оборудования. Поскольку всё это было придумано под самый закат эры ISA, то практической пользы от этого особо никакой. Сетевые карточки 3COM, помню, хорошо умели PnP, да ещё кое-какие модемы. Но если знать отуда надо читать, то на все эти плаг-энд-плеи можно смело забить, оно и без них хорошо работает.
In theory, theory and practice are the same. In practice, they're not.
astinis
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Чт сен 20, 2007 10:48:31
Откуда: Ставрополь

Re: Шина ISA, доступ из винды

Сообщение astinis »

Леонид Иванович писал(а):
TripleKill писал(а):PortTalk прокатит?


По идее, покатит.

В адресном пространстве есть "дырки", не занятые стандартным оборудованием. По памяти все возможные адреса своих плат не скажу, нужно смотреть в книгах. Но обычно использовал что-то из диапазона 100Н - 16FH. Для того, чтобы можно было поставить сразу несколько плат, устанавливал dip-переключатель на некоторые линии адреса.


Леонид Иванович, при всем уважении, хочу немного поправить на счет адресного пространства(в свое время тоже немало проектировал и делал железок на ISA), адреса 100Н - 16FH можно использовать, но очень осторожно. 100Н - 16FH работают без проблем на i88-286, а вот с i386 и выше начнутся проблемы(порты бывают заняты), сам с этим сталкивался.
Исходя из выше и ссылаясь на официальную документацию - лучше использовать адресное пространство с 300Н - конец не помню, но по 360Н можно.:)

P.S. Минимально, для работы с ISA нужны сигналы - AEN, IOR, IOW, D0-D7, A0-A13
astinis
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Чт сен 20, 2007 10:48:31
Откуда: Ставрополь

Re: Шина ISA, доступ из винды

Сообщение astinis »

Tolmi писал(а):
TripleKill писал(а):И ещё момент: а какой диапазон адресов я могу задавать? Т.е. я прочитал, что есть 24 линии адреса, но где у этого диапазона начало и конец? Опять же, обращаясь по адресу 378 я знаю, что попаду в LPT. А как тут?

В шине ISA изначально практиковалась неполная дешифрация портов ввода-вывода. Поэтому реально там используются три младших байта ( в смысле весь диапазон 0000-0FFF ) 24 разряда - это полная адресная шина памяти. Там полный диапазон 000000-FFFFFF (16 мегабайт), но реально только 00000-FFFFF, (первый мегабайт) а остальное - пляски с бубном.

Чуть-чуть не так - реальный адрес вычисляется, насколько я помню Питера Абеля, путем сложения значений 2х регистров - CS(регистр сегмента кода) и IP, со смещением последнего на 4 бита вправо.
Что же касается портов, то напрямую можно обратится только (вот здесь у меня провал в памяти - уж очень давно это было) к определенному диапазону адресов, выше - только косвенная (через регистры) адресация.
По моему так - если не ошибаюсь:)
astinis
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Чт сен 20, 2007 10:48:31
Откуда: Ставрополь

Re: Шина ISA, доступ из винды

Сообщение astinis »

TripleKill писал(а):
И ещё момент: а какой диапазон адресов я могу задавать? Т.е. я прочитал, что есть 24 линии адреса, но где у этого диапазона начало и конец? Опять же, обращаясь по адресу 378 я знаю, что попаду в LPT. А как тут?


В принципе ничего сложного с работой шины ISA нет. Правда предложенная http://radiokot.ru/circuit/digital/pcmod/09/ в качестве примера для осмысления не подойдет -у нее логика дешифрации в ПЛМке (черный ящик).
Вот эта схемка isa пост-кодов ближе к осмыслению -правда у нее один адрес дешифрации 80Н
Изображение
НО, если в ней заменить ЛЕ1 и Ла2 на ИД4/ИД7 + цифровой компаратор LS86 (нашего аналога не помню) получится полноценный дешифратор универсального контроллера на необходимое количество портов. Не забываем при этом, что шину данных между ISA и устройством нужно тоже развязать, установив что-то двунаправленное типа АП6 (LS245).
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Леонид Иванович »

astinis писал(а):100Н - 16FH работают без проблем на i88-286, а вот с i386 и выше начнутся проблемы


Всё может быть. Но, по крайней мере, в книге "Руководство по архитектуре IBM PC AT" (помните, черная такая, большая, 949 страниц) диапазон 100Н - 16FH значится как "резерв". Лично я ни разу не сталкивался с занятостью этих портов, большинство плат работают по сей день именно в этой "дырке", причем не только на 386, но и на 486, а чаще всего на старых пентиумах. Производство "Интеграла" до сих пор берет ISA платы для автоматизации техпроцессов, в цехах стоят компьютеры с ISA.

astinis писал(а):Исходя из выше и ссылаясь на официальную документацию - лучше использовать адресное пространство с 300Н - конец не помню, но по 360Н можно.:)


Диапазон 300Н - 31FH значится как "prototype card", он свободен. А вот с 320H идет жесткий диск, потом может быть сетевая плата и прочее железо. Я еще использовал "дырку" 3E0 - 3EF, что между видеоадаптером и гибкими дисками. Программатор и эмулятор ПЗУ работали именно там, причем на всех доступных машинах.

astinis писал(а):цифровой компаратор LS86 (нашего аналога не помню)


Не LS86, а LS85, аналог - К555СП1.


В качестве примера присоединил схемы плат ISA на логике и на ПЛИС.
Вложения
isa_dio.pdf
(28.88 КБ) 420 скачиваний
dac12-4.pdf
(66.88 КБ) 373 скачивания
DAC12_4.zip
(1.71 КБ) 323 скачивания
astinis
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Чт сен 20, 2007 10:48:31
Откуда: Ставрополь

Re: Шина ISA, доступ из винды

Сообщение astinis »

Вот, нашел в качестве примера
Вложения
portibm.pdf
(119.27 КБ) 579 скачиваний
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Шина ISA, доступ из винды

Сообщение Мурик »

TripleKill писал(а):[Это самое обращение можно легко описать с помощью asm-вставок в пресловутом delphi: mov al, $378; out al, dx - как-то так.
Под NT системой не прокатит.
Нужен драйвер, например такой как во вложении (он в месте с исходниками).
astinis
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Чт сен 20, 2007 10:48:31
Откуда: Ставрополь

Re: Шина ISA, доступ из винды

Сообщение astinis »

Леонид Иванович писал(а):
astinis писал(а):100Н - 16FH работают без проблем на i88-286, а вот с i386 и выше начнутся проблемы


Всё может быть. Но, по крайней мере, в книге "Руководство по архитектуре IBM PC AT" (помните, черная такая, большая, 949 страниц) диапазон 100Н - 16FH значится как "резерв". Лично я ни разу не сталкивался с занятостью этих портов, большинство плат работают по сей день именно в этой "дырке", причем не только на 386, но и на 486, а чаще всего на старых пентиумах. Производство "Интеграла" до сих пор берет ISA платы для автоматизации техпроцессов, в цехах стоят компьютеры с ISA.

Я, когда читал ваш пост, тоже вспомнил об этой книге, именно ссылаясь на нее данные я делал для себя универсальный программатор на ISA шине и адресное пространство брал со 100Н. Все великолепно работало на 88/286, потом к нам пришли 386 и вот здесь начались проблемы. Переделал программатор на 300Н - проблемы ушли. Вот после этого я, в своих разработках использовал адресс начиная с 300Н.

Диапазон 300Н - 31FH значится как "prototype card", он свободен. А вот с 320H идет жесткий диск, потом может быть сетевая плата и прочее железо. Я еще использовал "дырку" 3E0 - 3EF, что между видеоадаптером и гибкими дисками. Программатор и эмулятор ПЗУ работали именно там, причем на всех доступных машинах.

Совершенно верно.

Не LS86, а LS85, аналог - К555СП1.


Точно.
Прошло каких то 20 лет, но как же давно это было.:)
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: Шина ISA, доступ из винды

Сообщение TripleKill »

Всем большое спасибо, информация действительно очень полезная.
Имеет ли какое-то значение то, что шина в компе 16-битная, длинная? Она совместима с 8-битной?
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Леонид Иванович »

Хотите, используйте 8 бит, хотите - 16.
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Шина ISA, доступ из винды

Сообщение Tolmi »

astinis писал(а):
Tolmi писал(а):В шине ISA изначально практиковалась неполная дешифрация портов ввода-вывода. Поэтому реально там используются три младших байта ( в смысле весь диапазон 0000-0FFF ) 24 разряда - это полная адресная шина памяти. Там полный диапазон 000000-FFFFFF (16 мегабайт), но реально только 00000-FFFFF, (первый мегабайт) а остальное - пляски с бубном.

Чуть-чуть не так - реальный адрес вычисляется, насколько я помню Питера Абеля, путем сложения значений 2х регистров - CS(регистр сегмента кода) и IP, со смещением последнего на 4 бита вправо.

Это в точки зрения работы процессора. С точки зрения шины изначальная 8-битная версия ISA поддерживала только 20 разрядов адресной шины, а потому адресоваться там может только первый мегабайт адресного пространства памяти. в 16-ти битной версии ISA добавили ещё 4 адресных ноги и чуть перемудрили с управлением. В целях обеспечения совместимости между 8-ми и 16-ти битными картами работа с последними была упрощена, поэтому я и написал, что полный 16-мегабайтный доступ к адресному пространству делается ... не совсем уж элементарно. Но ещё раз, это касается прямого отображения в адресное пространство памяти. Адресация портов ввода-вывода в интеловской архитектуре реализована отдельно и теоретически для 8088/8086/80286 16-ти битная. На практике из-за неполного адресного декодирования зачастую даже это невозможно, и в мостах в ISA реализуют только диапазон 0000-03FF. В принципе, любой незанятый в данном компе диапазон можно смело занимать под свои нужды, вопрос лишь в соместимости такого решения. Собственно именно с вопросов совместимости плат расширения между собой зародился стандарт Plug-N-Play, а потом и шина PCI.
In theory, theory and practice are the same. In practice, they're not.
Ответить

Вернуться в «Интеграция с ПК»