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

 
 
> Адреса 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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 27)
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
BigRed
сообщение Sep 18 2009, 02:59
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 16-12-05
Из: Екатеринбург
Пользователь №: 12 302



Скачайте и почитайте. Вроде бы все подробно описано.Прикрепленный файл  techhelp.zip ( 793.36 килобайт ) Кол-во скачиваний: 101
Go to the top of the page
 
+Quote Post
Demeny
сообщение Sep 21 2009, 09:13
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Amon Ra @ Sep 18 2009, 01:18) *
Ведь, я так понимаю, раз биос энумерейтит харды с любым сторонним контроллером, то они все все-таки по этим адресам (170....) располагают что то определенное, что биос может прочесть и понять что у компа теперь есть хард.

Никаких специальных идентификаторов, по которым BIOS может однозначно распознать legacy ISA-устройство, в пространстве регистров нет, в противном случае это было бы уже PnP-устройство. rolleyes.gif
Если смотреть конкретно IDE (ATA) интерфейс - то BIOS общается не с IDE-контроллером, а уже с самим IDE-диском, считывая из него, например, строку производителя, его геометрию и т. п. посредством чтения-записи в порты 170h-177h (1F0h-1F7h). Если диск не подключен - в регистре статуса будет "вечное BUSY" (занято), и по истечении таймаута BIOS "поймет", что устройство либо отсутсутвует, либо неисправно.
Думаю, что контроллер дисковода устроен очень похожим образом и представляет собой дешифратор нескольких адресов в пространстве IO. Реализовать его не составит большого труда. А вот реализовать имитацию настоящего дисковода будет очень непросто.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 21 2009, 09:19
Сообщение #18


Гуру
******

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



Цитата(Demeny @ Sep 21 2009, 12:13) *
Думаю, что контроллер дисковода устроен очень похожим образом и представляет собой....

Отнюдь. Достаточно навороченное устройство.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Demeny
сообщение Sep 21 2009, 09:43
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(zltigo @ Sep 21 2009, 13:19) *
Отнюдь. Достаточно навороченное устройство.

Помнится мне, старые ISA-мультикарты (в составе которых был и флоппи-контроллер) содержали всего несколько микросхем стандартной логики, обеспечивающей переключение направления шины данных и дешифрацию адресов.
Другое дело контроллер, встроенный в сам дисковод, который управляет двигателями и головкой - это действительно навороченное устройство. Но автору и не требуется его воспроизводить. Достаточно декодировать команды, поступающие от хоста, и возвращать данные, считанные из запрошенного сектора.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 21 2009, 09:52
Сообщение #20


Гуру
******

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



Цитата(Demeny @ Sep 21 2009, 12:43) *
Помнится мне, старые ISA-мультикарты (в составе которых был и флоппи-контроллер) содержали всего несколько микросхем стандартной логики...

Совершеннейшая неправда - они, как правило, содержали вполне навороченый NEC µPD765 контроллер.


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


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Начать можете с книжки Роберта Журдена
"Справочник программиста на персональном компьютере фирмы IBM"

Там конечно про 8086/286 но основы работы биоса и девайсов не сильно менялись

Например здесь: http://lib.guru.ua/TECHBOOKS/JURDAIN/jourdain.txt
Go to the top of the page
 
+Quote Post
SSerge
сообщение Sep 21 2009, 10:21
Сообщение #22


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Demeny @ Sep 21 2009, 15:43) *
Помнится мне, старые ISA-мультикарты (в составе которых был и флоппи-контроллер) содержали всего несколько микросхем стандартной логики, обеспечивающей переключение направления шины данных и дешифрацию адресов.

А ещё раньше контроллер MFM-винта состоял из примерно полусотни микросхем, плата еле помещалась в корпус. Потом весь этот контроллер переехал внутрь винчестера, оставив на плате только дешифратор адреса.
Но воспроизводить его или другое устройство большой необходимости нет. Вполне можно организовать загрузку и со своего устройства.
Так работает, например, загрузка с сетевых интерфейсов. Они имеют на борту ПЗУ, там сидит программа, реализующая ввод-вывод и прочее управление устройством.
Посмотрите в techhelp темы ROM-Scan, POST, Int13h, Int19h.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Sep 21 2009, 11:10
Сообщение #23


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(Demeny @ Sep 21 2009, 13:43) *
Помнится мне, старые ISA-мультикарты (в составе которых был и флоппи-контроллер) содержали всего несколько микросхем стандартной логики, обеспечивающей переключение направления шины данных и дешифрацию адресов.
Другое дело контроллер, встроенный в сам дисковод, который управляет двигателями и головкой - это действительно навороченное устройство. Но автору и не требуется его воспроизводить. Достаточно декодировать команды, поступающие от хоста, и возвращать данные, считанные из запрошенного сектора.

Непосредственно сам НГМД это привод вращения диска, привод позиционирования головки считывания/записи, датчик нулевой дорожки, датчик начала дорожки и усилитель считывания записи. Ну еще небольшая схемка обеспечивающая соединение четырех устройств на одной шине с контроллером.
Считываемые магнитной головкой импульсы в последовательном виде без декодирования идут в контроллер дисковвода.
Контроллер дисковвода при считываии и записи в потоке данных обнаруживает магнитную метку (заголовок сектора) содежащую пакет данных о номере дорожки, номере сектора контрольную сумму. После обнаружения необходимого пакета, записывает сектор, посылая пакет импулсов на дисковвод, или считывает сектор проверяя контрольную сумму сектора на ходу . Подробности по программированию процесса чтения записи читать

Например здесь: http://lib.guru.ua/TECHBOOKS/JURDAIN/jourdain.txt
Мне приходилось эмулировать дисковвод правда в 8'. Наилучшим решением оказалось замена дисковвода вместе с контроллером
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 21 2009, 12:07
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



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

Ну не совсем.
Существует узаконенный способ выхода за пределы 3ff. Так же как и узаконенный выход за пределы 1Мб.
Я им пользовался и всё всегда прекрассно работало.

1) Берёте стандартный адрес (например 2f8-2ff). Используете все зеркальные адреса (например 6f8-6ff/ef8-eff).
2) Чтобы вы нессылались на мою самодеятельность - так реализованы к примеру большинство крутых звуковых карт
smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 21 2009, 13:39
Сообщение #25


Гуру
******

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



Цитата(SasaVitebsk @ Sep 21 2009, 15:07) *
Существует узаконенный способ выхода ....

Я только имею IBM-овскую документацию которая раздавалась в качестве рефренсной для производителей PC. Этого мне совершенно достаточно, дабы не строить предположения.
Эти требования в основном соблюдаются и сейчас, по крайней мере с изделием, которое сделали на адресах 0x1XXX и со словами "а у нас работает" пытались раздать на объекты я сталкивался - не заработало НИГДЕ, кроме индустиальной писишки на которой народ это сваял - в ней просто мост так был запрограммирован. Для еще одной, я патч сделал, дабы эту область открыть. Потом авторы переделали.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 22 2009, 10:33
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Ну в целом я согласен с Вами. Но найдите прокол в моём подходе. Посмотрите например Creative Labs AWE32. Думаю этот производитель получал документацию от IBM.
Go to the top of the page
 
+Quote Post
Demeny
сообщение Sep 22 2009, 14:32
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(SasaVitebsk @ Sep 22 2009, 14:33) *
Ну в целом я согласен с Вами. Но найдите прокол в моём подходе. Посмотрите например Creative Labs AWE32. Думаю этот производитель получал документацию от IBM.

Прокол заключается в том, что мост PCI-ISA (а именно на таких мостах построены шины ISA в современных писюках, в частности, в индустриальных PC популярен ITE8888 ...) ни сном ни духом не ведает, какие там устройства висят на ISA и какие адреса они используют, поэтому он (мост) как-то должен принимать решение, транслировать I/O операцию на ISA шину, или же оставить её PCI-устройствам. Существует две политики транслирования - позитивное и субтрактивное декодирование адреса.
1) В случае позитивного декодирования - на ISA-шину транслируются I/O операции в строго определённых диапазонах, именуемых окнами. Эти диапазоны прописываются BIOS-ом в регистрах PCI-ISA моста.
Таким образом, чтобы запустить ISA-карту с нестандартным расположением I/O пространства на конкретном PC, требуется, чтобы BIOS Setup позволял настроить эти окна в нужном диапазоне (что позволяют далеко не все "мамки"), либо самостоятельно писать патч (драйвер) под конкретную "мамку".
2) Случай субтрактивного декодирования, на первый взгляд, решает проблему - на ISA-шину отправляются все транзакции I/O, которые не были востребованы на PCI в течение 3 тактов PCI-шины. И в большинстве случаев это действительно работает. Только вот гарантии, что это будет работать всегда нет никакой - ибо теперь уже служба PnP не знает, какие адреса можно выделять PCI-устройствам, а какие заняты ISA-девайсом. И вполне может оказаться так, что PnP выделит PCI-устройству именно тот диапазон адресов, который использует Ваша ISA-карта. При этом мост PCI-ISA, настроенный на субтрактивное декодирование, уже не будет транслировать I/O на ISA-шину в нужном диапазоне, занятом PCI-устройством, и опять же ISA-устройство не будет работать.
==============================
Вот чтобы таких казусов не происходило - договорились о "железной" границе в пространстве I/O (как наиболее дефицитном ресурсе) - до 3FF на ISA, далее всё в распоряжение PCI.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 22 2009, 15:28
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



1) Извиняюсь за то, что я невнимательно ознакомился с самой веткой. Просмотрел её бегло. Решил, что речь идёт о старых компах.
2) Не влазил в схематехнику PCI. Я думал, что существует лишь один способ обращения. А именно запрос-нет ответа-на ISA.
3) Я, в своё время знакомился со стоимостями чипов реализующих прямой доступ к PCI шине. Конечно дорого, но, по-моему это всё равно не повод разрабатывать и применять устаревшую шину. То есть мне кажется, что для новых устройств всётаки надо применять PCI шину тем или иным способом. Либо использовать один из доступных интерфейсов USB/IE1934/Ethernet.

Извиняюсь, что ввёл в заблуждение или отвлёк внимание. laughing.gif
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 - 21:06
Рейтинг@Mail.ru


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