реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Адреса ISA шины, Помогите разобраться с диапазонами адресов
Amon Ra
сообщение Sep 17 2009, 13:36
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 26-04-08
Пользователь №: 37 110



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

Возьмем для определенности 8битную ее версию и компьютер под управлением 80368. На плату внешнего устройства заведены 20 линий адреса + сигналы типа Мем_рид и ИО_рид. Как я понимаю, на все слоты (предположим, на материнке их 5) выведены одни и те же линии шины, то есть мы получаем как бы 2^20 = 1 мегабайт пространства, выделенного на все иса-устройства.
Подскажите, во-первых - этот мег памяти - где он на карте памяти? Ну то есть, мы же можем туда завести А0-А19 от процессора, а можем, допустим, А12-А31 - то есть в первом случае это будет первый мегабайт всех адресов памяти компа, во втором - последний.
Второй вопрос - какие есть ограничения на декод адреса, кроме как "чтоб не конфликтовали".
Я почему-то много где видел.. что-то вроде "декодируйте А0-А9", то есть 10 бит. Я так понимаю, это сказано в отношении пространства ИО, все таки, но не понятно почему такое ограничение, и что делать с остальными линиями.

Может, я какой то очень важный момент проглядел, но вроде бы пространство ИО в 386м уже 16-битное, то есть я могу сделать
mov ax, FFFF
in ax, dx
Пусть из него какая то часть занята устройствами на мат. плате типа сис таймера - но FFFF-3FF это ж целых 64512 портов ИО, где они?

И последний пока вопрос - больше практический - ИСА же никак не сообщает об устройствах системе, как же биос узнает какие установлены флопики и харды, чтобы загрузиться с них?

Заранее благодарен, надеюсь поможете пролить свет на архитектуру.
Вообще, задумал небольшой проект с целью самообразования и заодно в рамках курса в универе - собрать ИСА контроллер для флешки (SD-карточки).
Предполагаю сделать его эмулятором флопика или харда, чтобы старенький комп просто решил что в него воткнули новый хард и спокойно с него загрузился.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 16:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Amon Ra @ Sep 17 2009, 15:36) *
Подскажите, во-первых - этот мег памяти - где он на карте памяти?

Младший, естесвенно smile.gif
Цитата
Я почему-то много где видел.. что-то вроде "декодируйте А0-А9", то есть 10 бит. Я так понимаю, это сказано в отношении пространства ИО, все таки, но не понятно почему такое ограничение, и что делать с остальными линиями.

Ничего, поскольку в классическом исполнении за пределами 10 бит просто не будет других сигналов на ISA. Но встречались и кривые PCI-ISA мосты, которые пропускают на ISA побольше - ну и фиг с ними.
Цитата
целых 64512 портов ИО, где они?

На PCI, вестимо....
Цитата
И последний пока вопрос - больше практический - ИСА же никак не сообщает об устройствах системе, как же биос узнает какие установлены флопики и харды, чтобы загрузиться с них?

Вы ему сами говорите, или тыкается портам где может стоять железо. Ну и вообще-то PnP на ISA тоже поддерживается - гуглите внимательнее.
P.S.
Тему перенес к начинающим.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
vvs157
сообщение Sep 17 2009, 16:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Пространство ввода-вывода с архитектуре x86 всегда было 16-ти битное. Пространство памяти, доступное из длинного ISA слота - 20 бит (под 8086/8088 проц), вметсте с добавочным коротким слотом - 24 бит (сделано под 286 проц). Причем в свое время из-за экономии на дешифраторе адреса при обращении к устройствам ввода-вывода многие производители ограничивались 10-ю битами. В принципе вы можете декодировать полный 16-ти битный I/O адрес, но если он у вас >1024, то никто не гарантирует конфликта с какой-нибудь ISA карточкой.
Обычный ISA BIOS про ISA устройства знать ничего не должен, конфигурация ресурсов исключительно "руками". В последсвии была создана спецификация PNP под ISA, когда BIOS раздавал ресурсы автоматически. Однако в силу кривизны далеко не всегда раздача ресурсов была без конфликтов.
Флопы, харды и пр. вы в БИОСе прописываете сами. Что прописали, тот и опознается в системе.
Флоп-эмулятор на флешке достаточно нетривиален, так как привод флопика мозгов не имеет никаких, там только жесткая логика образца 80-х. Обработка идет флоп-контроллером на материнке, то есть ваш эмуль должен изображать специфический последовательный поток с флопа и отрабатывать команды "шаг вперед" и "шаг назад"
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 17:05
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(vvs157 @ Sep 17 2009, 18:54) *
но если он у вас >1024, то никто не гарантирует конфликта с какой-нибудь ISA карточкой.

Если он больше 1024, то для начала приличная гарантия, что до такой карточки вообще не достучитесь, ибо эти порты НЕ ДОЛЖНЫ ВООБЩЕ отображаться на ISA


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Amon Ra
сообщение Sep 17 2009, 17:19
Сообщение #5





Группа: Участник
Сообщений: 12
Регистрация: 26-04-08
Пользователь №: 37 110



>На PCI, вестимо....
> Ну и вообще-то PnP на ISA тоже поддерживается - гуглите внимательнее.


Мы о слегка разных системах говорим - нв 386 PCI нет в помине, а PnP реализовали тоже слегка попозже.

>Если он больше 1024, то для начала приличная гарантия, что до такой карточки вообще не достучитесь, ибо эти порты НЕ ДОЛЖНЫ ВООБЩЕ отображаться на ISA

Объясните мне механизм этого "НЕ ДОЛЖНЫ" - я просто не совсем понимаю - если на плату заведены 20 линий адреса, и я вызываю чтение из порта 65535 - на шине адреса выставляется 0000 FFFF, проц дергает MEM/IO пин, показывая что идет обращение к порту - и что дальше? Адрес на шине стоит, пин доступа к порту "горит" - каким образом на ISA не пустят данные?


>В принципе вы можете декодировать полный 16-ти битный I/O адрес, но если он у вас >1024, то никто не гарантирует конфликта с какой-нибудь ISA карточкой.

Так вот и вопрос в том - откуда конфликт если все ИСА вроде как почему то до 3FF - или вы имеете в виду с таким же нестандартным железом конфликт?

>Флопы, харды и пр. вы в БИОСе прописываете сами. Что прописали, тот и опознается в системе.
Флоп-эмулятор на флешке достаточно нетривиален, так как привод флопика мозгов не имеет никаких, там только жесткая логика образца 80-х. Обработка идет флоп-контроллером на материнке, то есть ваш эмуль должен изображать специфический последовательный поток с флопа и отрабатывать команды "шаг вперед" и "шаг назад"


Сейчас поясню ситуацию. На плате не установлено ни одного контроллера хардов или флопика, контроллер флоп+иде был отдельной, как раз таки, ИСА платой.
Отсюда все вопросы и пошли. Поэтому мне придется реализовывать контроллер. Может, я ошибаюсь, но я так понимаю, что КОНТРОЛЛЕРУ флопа на вход таки идут данные от системы типа "прочитать по адресу", а он уже формирует команды железу на уровне "шаг вперед" - и т.к. я буду реализовывать контроллер, то мне надо будет сэмулировать его управляющие регистры, принимать инфу уровня "прочитать адрес" и интерпретировать ее в команды чтения СДшки, не забывая выдавать системе флопоподобные статусы, чтобы драйверы стандартные не безумствовали и считали что это флоп.

Посему - вопрос остается - прописать флопы - да, можно. А я говорю о контроллерах.
Ну то есть - есть у нас голая плата. Включаем. Биос говорит - не могу загрузиться, неоткуда.
Вставляем в ИСА контроллер ИДЕ или флопика - биос его таки подхватывает, хотя и ПнП не реализован. Вот как это организовано?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 17:23
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Amon Ra @ Sep 17 2009, 19:19) *
Мы о слегка разных системах говорим - нв 386 PCI нет в помине, а PnP реализовали тоже слегка попозже.

Мы говорим о том, чем говорим, например о индустриальных одночиповых 386 выпускаемых и поныне.
Цитата
каким образом на ISA не пустят данные?

Шинный формирователь просто не откроется и все smile.gif
Цитата
Вот как это организовано?

Уже ответил. Перечитайте


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Amon Ra
сообщение Sep 17 2009, 17:31
Сообщение #7





Группа: Участник
Сообщений: 12
Регистрация: 26-04-08
Пользователь №: 37 110



Цитата(zltigo @ Sep 17 2009, 21:23) *
Мы говорим о том, чем говорим, например о индустриальных одночиповых 386 выпускаемых и поныне.

Шинный формирователь просто не откроется и все smile.gif

Уже ответил. Перечитайте



Ну хорошо, значит я просто не уточнил - я имел в виду именно старые материнские платы, от старых компьютеров 90х годов.

То есть, получается, грубо говоря, что от шины адреса/данных идет отвод в ИСА через некоторый буфер, с Z-состоянием, и, допустим, при наличии PCI, те же линии идут в PCI но через другой буфер. И логика чипсета однозначно определяет - если лезем в пространство ио по адресам выше 3FF, то отключаем буфер к ISA и включаем к PCI, так?

И с памятью тогда тоже так, размеры пространства под ИСА, PCI и прочее жестко заданы на уровне логики управления шиной?

P.S. И небольшое дополнение к вопросу тогда - все же, на старом 386 где кроме ISA нет ничего - там тоже жестко обрубают обращение ко всем портам ИО старше 3FF? Ведь их больше тогда нигде не заюзаешь, там только ISA есть - а пропадает около 60К портов. Конечно, тогда может столько и не нужно было, но все же...

Сообщение отредактировал Amon Ra - Sep 17 2009, 17:35
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 18:52
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Amon Ra @ Sep 17 2009, 19:31) *
Ну хорошо, значит я просто не уточнил - я имел в виду именно старые материнские платы, от старых компьютеров 90х годов.

Вот в начале 90x этот стандарт уже и появился smile.gif а уж к году к 98 ISA вообще уже на дектопах была списана в утиль и PnP уже никого не волновал. Стаааарые говорите smile.gif
Цитата
Z-состоянием,

Да
Цитата
И с памятью...

Разумется
Цитата
Конечно, тогда может столько и не нужно было, но все же...

Хорошо теперь рассуждать а раньше все делалось на рассыпухе в DIP корпусах и стоило заметных денюжек. Банальная экономия на железе тех-же дешифраторов располагаемых на субплатах была заметна.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Amon Ra
сообщение Sep 17 2009, 20:11
Сообщение #9





Группа: Участник
Сообщений: 12
Регистрация: 26-04-08
Пользователь №: 37 110



Ну спасибо, с этим более-менее разобрался.
Тогда один вопрос еще, возвращаясь к флоппи.
Наткнулся я на мемори-мэп в книжке, где(говорим про пространство ИО):
00-FF - под встроенную периферию, типа контроллера клавы, цсмос-памяти и т.п.
170-177 - "накопитель на жестком диске #1"
1F0-1F7 - "накопитель на жестком диске #2"
...
дальше джойстик, лпт, флопик, и так до 3FF.

Так вот вопрос - это стандарт? То есть если я, допустим, производитель железа, и решаю сделать свой джойстик-иса - я обязан пихнуть его ИО в диапазон адресов 200-207?
А если мне мало там места? =)
Или если я хочу два джойстика в систему?

Потом: по адресам 170-177 "накопитель на жд" - что там ожидается? Регистры контроллера? Регистры в каком нибудь стандартном формате, аль как?

И последнее) А если я хочу сделать ISA-звуковуху? не увидел в списке под нее адреса - как быть?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 20:28
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Amon Ra @ Sep 17 2009, 22:11) *
Так вот вопрос - это стандарт?

Для того оборудования которое обслуживается Main BIOS безусловный стандарт.
Цитата
А если мне мало там места? =)

Тогда это не джойстик и делаете, что хотите
Цитата
И последнее) А если я хочу сделать ISA-звуковуху? не увидел в списке под нее адреса - как быть?

Делайте, как хотите, ибо софт для нее писать будете сами.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 17 2009, 20:45
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Amon Ra @ Sep 18 2009, 02:11) *
Потом: по адресам 170-177 "накопитель на жд" - что там ожидается? Регистры контроллера? Регистры в каком нибудь стандартном формате, аль как?
Да, регистры контроллера НЖМГ. Что значит "в стандартном формате" я не понял.
Цитата(Amon Ra @ Sep 18 2009, 02:11) *
И последнее) А если я хочу сделать ISA-звуковуху? не увидел в списке под нее адреса - как быть?
Адрес SoundBlaster от Creative Labs, который de facto был стандартным звуковым устройством в то время, был 220. Как сейчас помню строку установки переменной окружения в autoexec.bat
SET BLASTER= A220 I5 D1 T4
biggrin.gif
Другие версии SoundBlaster (Pro) и прочие звуковухи имели аппаратный (с помощью перемычек) или программный конфигуратор адреса, номера прерывания и канала DMA. Поэтому вы для своей звуковухи можете использовать любой диапазон "незанятых" адресов. Потому, что поддерживать программно будете тоже вы сами.
Go to the top of the page
 
+Quote Post
vvs157
сообщение Sep 17 2009, 21:00
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(zltigo @ Sep 17 2009, 21:05) *
Если он больше 1024, то для начала приличная гарантия, что до такой карточки вообще не достучитесь, ибо эти порты НЕ ДОЛЖНЫ ВООБЩЕ отображаться на ISA
Да нет, отображаются. У меня была ISA карточка LabMaster от Scientific Solutions (1986 года выпуска, когда еще не было моды на экономию микросхем PAL в дешифраторе адреса) у которой все адреса были >700H и все работало, правда не со всеми доп. карточками

Цитата(Amon Ra @ Sep 17 2009, 21:19) *
Объясните мне механизм этого "НЕ ДОЛЖНЫ" - я просто не совсем понимаю - если на плату заведены 20 линий адреса, и я вызываю чтение из порта 65535 - на шине адреса выставляется 0000 FFFF, проц дергает MEM/IO пин, показывая что идет обращение к порту - и что дальше? Адрес на шине стоит, пин доступа к порту "горит" - каким образом на ISA не пустят данные?
На вашей ISA плате обязательно должен быть адресный дешифратор, который выдает сигнал разрешения обращения к вашей плате, кога на шине выставлен адрес из ее диапазона. Если на этот дешифратор по-простому не завести старшие 6 бит шины I/O, то такая плата будет откликаться на чужие адреса провоцируя конфликт на шине.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 17 2009, 21:01
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(vvs157 @ Sep 17 2009, 22:52) *
Да нет, отображаются....

Повидал железа не мало. Адреса больше, чем 0x3FF только на современных индустриалках с кривыми дешевыми, практически noname мостами типа 8888 и иже с ним. Посему не верю совсем. Дело даже не в вере а в том, что даже есть кривая мать и Ваша карточка, то любая нормальная ISA карточка дешифрирущая 10bit засадит Вашу гипотетическую 0x7xx карточку напрочь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
vvs157
сообщение Sep 17 2009, 21:08
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(Amon Ra @ Sep 18 2009, 00:11) *
Потом: по адресам 170-177 "накопитель на жд" - что там ожидается? Регистры контроллера? Регистры в каком нибудь стандартном формате, аль как?
Регистры стандартного для этой архитектуры контроллера НЖМД. Для "Писюков" они жестко дожны быть по этим адрсам, чтобы с ними мог работать БИОС на материнке.

Цитата(zltigo @ Sep 18 2009, 01:01) *
Повидал железа не мало. Адреса больше, чем 0x3FF только на современных индустриалках с кривыми дешевыми, практически noname мостами типа 8888 и иже с ним. Посему не верю совсем. Дело даже не в вере а в том, что даже есть кривая мать и Ваша карточка, то любая нормальная ISA карточка дешифрирущая 10bit засадит Вашу гипотетическую 0x7xx карточку напрочь.
А у нее адреса с отрезанными битами не попадают на стандартные адреса. Звуковух она не переносит. Однако специально проверял, на усеченные адреса она не отклткается. Если хотите, могу скан из мануала прислать. Я в свое время с этой карточкой "пуд соли" съел

Цитата(Amon Ra @ Sep 17 2009, 21:19) *
Поэтому мне придется реализовывать контроллер. Может, я ошибаюсь, но я так понимаю, что КОНТРОЛЛЕРУ флопа на вход таки идут данные от системы типа "прочитать по адресу", а он уже формирует команды железу на уровне "шаг вперед" - и т.к. я буду реализовывать контроллер, то мне надо будет сэмулировать его управляющие регистры, принимать инфу уровня "прочитать адрес" и интерпретировать ее в команды чтения СДшки, не забывая выдавать системе флопоподобные статусы, чтобы драйверы стандартные не безумствовали и считали что это флоп.
Но тогда не забывайте, что флоп-контроллер использует DMA для передачи данных в память. Сделать можно, но не тривиально.
Go to the top of the page
 
+Quote Post
Amon Ra
сообщение Sep 17 2009, 21:18
Сообщение #15





Группа: Участник
Сообщений: 12
Регистрация: 26-04-08
Пользователь №: 37 110



Под "в стандартном формате" я имел в виду следующее - что хотя бы часть из регистров должна иметь определенную стандартом функцию - грубо говоря - есть ли стандарт, что если я делаю контроллер харда, то он не только должен на адресе 170 иметь какие то регистры, но регистры еще и должны быть именно такие и именно в том порядке, какой описан в стандарте(читай - регистровый интерфейс у всех контроллеров хардов должен быть одинаков)?

Ну я как бы задачку поставил примерно так - собрать устройство на ISA-карточке, которое биос компа (старого, обычного 368) воспримет как контроллер дисковода с собственно дисководом.
Либо - наверное все же лучше - как контроллер ИДЕ-харда с подвешенным на него хардом.

Не подскажете направление поисков? Стандарт какой нибудь?
Ведь, я так понимаю, раз биос энумерейтит харды с любым сторонним контроллером, то они все все-таки по этим адресам (170....) располагают что то определенное, что биос может прочесть и понять что у компа теперь есть хард.

Проблема в том что это все старое, сейчас контроллеры хардов встроенные, а если внешние то PCI....

>Но тогда не забывайте, что флоп-контроллер использует DMA для передачи данных в память. Сделать можно, но не тривиально

О да, я как раз предположил что будет DMA... Ну это все таки следующая ступень - функциональность - пока подзадача - просто сказать компьютеру что у него новый контроллер с новым хардом. Чисто статусными байтами обменяться.

Сообщение отредактировал Amon Ra - Sep 17 2009, 21:21
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01525 секунд с 7
ELECTRONIX ©2004-2016