Как стать автором
Обновить

Комментарии 70

Клёво! Вы - большой молодец!

ESDI контроллер с MFM HDD вроде ST-225

Не, ESDI с MFM дружить не будут.

ST-225 можно форматнуть под RLL, если мне не изменяет память

В своё время в 90х у меня было 3 разных контроллера под ST-225. И 2шт ST-225. Так вот, один контроллер, хоть и был 16ти битным на каких-то странных чипах, работал по ощущениям прям медленно. Хотя я в его собственном BIOS пытался задавать интерлив и прочие параметры. Затем у меня появился 8 битный, у которого ещё какой-то микроконтроллер стоял, вот он прям заметно быстрее работал, это было видно и по копированию и по запуску и работе разных программ, вроде PCAD. А потом появился 16 битный контроллер с чипами WDC. Т.е., от Western Digital, вот он был самым быстрым. И каждый контроллер не был совместим с другими и требовал низкоуровневое форматирование. Забавно, но WDCшный имел у меня 4 бэда в середине объёма, в то время как два других - нет.

контроллер с чипами WDC. Т.е., от Western Digital

Несмотря на схожесть названий, WDC - это Western Design Center, разработчик микросхем.

Спасибо за поправку. Не знал, всегда думал что это подразделение WD.

Хотя прошу пардона, сейчас поглубже покопался в изделиях тех лет - похоже, что большинство контроллеров было всё-таки на собственных чипах WD, имевших такой же префикс, а изделия WDC имели префикс W.

Помнится, в моём первом 486 была мегабайтная виюдха-встройка от WDC. До сего дня был уверен, что это тот самый вестерн диджитал, а оно вона чего :)

Все верно вы думали, Western Digital видяхами тоже занимались в 80-е и начале 90-х

Однако я достаточно долго взвешивал все за и против и пришёл к такому мнению: интерфейс 5 вольтовый, при этом сигналы должны продавливать относительно длинный провод.

Хм вот когдато очень давно я хотел подобное сгородить для своей DE1. И кажется смотрел уровень напряжеия на IDE вроде бы на ноге RESET(материнка на 815 чипсете под 3 пень.) и точно помню он был 3,3 Либо меня сильно глючит либо от 5 вольт потом отошли.

PS. Было бы здорово логи анализатора где нибудь выложить.

В ATA/ATAPI-6 сказано, что в режиме UDMA интерфейс понижает напряжение до 3.3в, что логично, ибо там частоты 33Мгц, 66МГц и 100МГц.

Записи выложил сюда: https://cloud.mail.ru/public/TJ6e/udZGxZzxT Учитывай тот факт, что там оказывается часть сигналов общая между гнёздами IDE1 и IDE2, поэтому видна активность жёсткого диска в параллели при неактивных сигналах выбора. Да, с IDE всё сильно печальнее, чем казалось.

Учитывай тот факт, что там оказывается часть сигналов общая между гнёздами IDE1 и IDE2, поэтому видна активность жёсткого диска в параллели при неактивных сигналах выбора

Мне всегда казалось по распиновке что это кусок ISA шины, у которой отрезали сигналы работы с памятью, и урезанным адресом.

В теории да. Но на практике, должна быть шинная развязка. Т.е., пока оно было простым IDE оно безусловно всё сидело на ISA и упиралось в её ёмкость. Но когда пришёл ATA то IDE переехал на PCI. Ты же понимаешь, что частота ISA только 8МГц (точнее, 7,6МГц) и в случае полной загрузки на 16 бит это только 14,1МБ/с, при этом все остальные должны замереть. А у ATA скорости выше, тем более у UDMA версий.

Но когда пришёл ATA то IDE переехал на PCI.

Не, никто никуда не переезжал.

Контроллер ide в режиме udma становится мастером на ISA.

Контроллер ide действительно отрезанный по шине контроллер mfm.

Не помню, какой именно, но его регистры соответствуют конкретному прототипу.

У ISA ограниченная производительность, я уже это озвучил. IDE переехал на PCI и вот там он действительно становится Bus Master'ом. Когда он был на ISA был доступен лишь Multi Word DMA.

У ISA ограниченная производительность, я уже это озвучил.

Да, но применительно к дискам - ровесникам шины ISA, 14 MB/s - огромнейшая скорость. Вспомните объём st225.

IDE переехал на PCI и вот там он действительно становится Bus Master'ом. Когда он был на ISA был доступен лишь Multi Word DMA.

Не буду спорить - давно это было, могу и путать. Но точно помню, что в isa device мог захватить шину и стать мастером. Там только память рефрешить надо было и освобождать периодически, чтобы система хоть как-то жила.

Да, но применительно к дискам - ровесникам шины ISA, 14 MB/s - огромнейшая скорость. Вспомните объём st225.

Так точно. В DOSовые времена 200КБ/с считалось вполне себе приличной скоростью. Ну а во времена W3.11 и W95 то до 10МБ/с это уже прям ракета. Тем более, что 30%-40% пользователей W95 на старте жили на doublespace'е, а там требование к скорости диска снижалось.

Не буду спорить - давно это было, могу и путать. Но точно помню, что в isa device мог захватить шину и стать мастером. Там только память рефрешить надо было и освобождать периодически, чтобы система хоть как-то жила.

Нет у ISA команды на бас мастеринг. Это шина с одним хостом. Другое дело, что нельзя было захватывать (удлинять) транзакцию дольше 15 мкс - тут да, сразу появляись пропуски DMA канала 3, который и рефрешил память. А захват/удлинение шины был через установку IORDY, когда устройство настолько медленное, что нужно прям ждать. Этот сигнал, кстати, до самого конца оставался актуальным и мой мост его учитывает, растягивая цикл каждый такт пока он активен. Устройство ISA может попросить транзакцию у DMA, но мастерами на ней являются только процессор (ну или мост до PCI) или DMA контроллер. А вот PCI как раз разрабатывали с учётом мультимастеринга. Вы можете напомнить про сигнал #MASTER, который находится в секции расширения ISA16, но даже он всего-лишь ответ на запрос к каскадному DMA, т.е. нужна помощь настоящего мастера.

И в описании сказано то, что вы и помните: нельзя захватывать дольше 15мкс ибо посыпется память. Но это не совсем из-за захвата шины а потому что вы каскадный DMA удерживаете, а значит низкий приоритет, канала 3 основного не может обслужить рефреш.

С другой стороны, после ввода SDRAM DMA больше не занимается регенерацией, поэтому компьютеры на DIMM+ уже не боятся остановки DMA #3.

Не буду спорить, Вы безусловно сейчас значительно лучше знаете как работать с isa, я уже это позабыл совсем. Но вроде

Bus Mastering: An ISA device may take control of the bus, but this must be done withcaution. There are no safety mechanisms involved, and so it is easilypossible to crash the entire system by incorrectly taking control ofthe bus. For example, most systems require bus cycles for DRAM refresh.If the ISA bus master does not relinquish control of the bus or generateits own DRAM refresh cycles every 15 microseconds, the system RAM canbecome corrupted. The ISA adapter card can generate refresh cycles withoutrelinquishing control of the bus by asserting REFRESH. MRDC can be thenmonitored to determine when the refresh cycle ends. To take control of the bus, the device first asserts its DRQ line.The DMAC sends a hold request to the cpu, and when the DMAC receivesa hold acknowledge, it asserts the appropriate DAK line correspondingto the DRQ line asserted. The device is now the bus master.AEN is asserted, so if the device wishes to access I/O devices, itmust assert MASTER16 to release AEN. Control of the bus is returned tothe system board by releasing DRQ.

https://gist.github.com/PhirePhly/2209518

Именно об этом я выше и написал и даже привёл эпюры из букваря.

Интересно, IDE расчитан на TTL, т.к. был внедрён во времена TTL. А у него лог.1 это не 5в, а 2,4в. Это же мы видим в табличке выше: вход от 2.0 до 5.5. Т.е. LVCMOS может хватить. Если взять STM32 не шибко большой и прикрутить к нему LVCMOS буфер, для усиления тока, то может и взлететь. Надо попробовать, ибо я бы всё же хотел сунуть узкие круги протокола ATA поближе к интерфейсу. Сейчас оно как-бы Arduino-like вышло, с программным ногодрыгом. А без хорошего и удобного инструмента свой ATAPI ODE не построить.

Я бы сейчас посмотрел в сторону RP2040/2350 последнее время что то они мне очень нравятся. Но по хорошему Tang4K...

У меня их есть. А ещё, совсем недавно я раскорячил GoWin GW1N-UV2 в корпусе QN48:

Получилось прогружать её контроллером через SSPI, а потом после старта использовать те же ноги для SPI уже как рабочий интерфейс корки. Подобного функционала определённо не хватает альтеркам и зайликсам. Там только либо JTAG, либо дофига ног.

Вообще Xillinx такое позволяет, по крайней мере у меня чип грузится по SPI а потом его тоже использует как интерфейс. Но я не знаю насколько это распостраненно у этих Xillinx. Тот что у меня сейчас он не для такого 676 ног.

Кстати а на говинах ядро Cortex поднимать удавалось? Я себе купил как подарок на новый год, так и лежат ждут своего часа.

У говина есть MSPI и SSPI. Это разные сущности. MSPI это мастер, он сам задает и к нему достаточно подключить память (привет EPCSxx от Altera). А SSPI уже, как несложно догадаться, слэйв, и нужно активное устройство для работы, например МК.

Мы 100% грузили Kintex7 по SSPI и кажется использовали его для дальнейшей работы. Но честно это было 9 лет тому назад я могу и ошибаться.

Вот, кстати говоря, про сигналы выбора. Не так давно делал свой IDE хост (PIO), и подключение двух приводов шиной с последующей записью в Drive Select регистр никакого эффекта не имело — всё так же отвечал всегда Master. Шлейф обычный параллельный, на уровне платы хоста никакого разделения между master/slave нету — а должно было быть? Или на эту запись в регистр должны сами приводы реагировать и помнить, кто из них сейчас активен?

Очень хочется прикрутить в плеер воспроизведение двух дисков подряд с двух плееров, чтобы можно было нонстопом крутить, но в этот момент упёрся и дальше не смог продвинуться

Два устройства на 1 шлейфе действительно могут конфликтовать, т.к. они сидят полностью параллельно и слушают каждую транзакцию. Чтобы привод начал учитывать бит M/S нужно задать ему режим джампером явно. Если же вы применили CS (Cable Select), то кабель должен быть особый, с пробитым проводом (или отсутмтвующим пином в гнезде слейва в 80 проводном кабеле), а на стороне хоста сигнал CS строго заземлённым.

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

А что за диски? Достаточно старым нужно подсказывать, что есть ведомый. Там есть либо отдельный джампер SP (Slave Present), либо есть 2 настройки джамперов: Master и Single. В режиме Single диск считает себя мастером-одиночкой на кабеле. Важно: положение джамперов фиксируется только при включении питания, ресет их не обновляет.

Дивидюшники, один TEAC, второй Liteon, оба годов 2004-2006, так что не та история.

С мычкой на сингл у меня только один привод пока что в завалах вообще есть, на нём рядом с таковой ещё и мычка на запрет выдвигания лотка по умолчанию есть, которая в mode sense до сих пор присутствует, хоть и не встречалась ни разу уже давно :-)

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

Вообще, из смутных воспоминаний, оно с сидюками как бы не всегда работало через пень-колоду. Сколько себя помню, всегда на каждом канале сидела пара мастер-винт плюс слейв-сидюк, и никогда наоборот. Делалось ли это ради производительности винтов, ибо работа с двумя винтами куда чаще работы с винтом+сидюком, или таки по описанным выше причинам — вопрос тот ещё

Да, если верить моему склерозу, некоторые CD не понимали конфигурацию CS, но к началу нулевых, таковых почти не осталось...

Но во времена 1 пентиума некоторые звуковые карты несли на себе интерфейс для подключения CD.

Или это уже слишком древние технологии? Гусь (гравис ультрасаунд) в пример.

У некоторых sb-совместимых было несколько перемычек для выбора правильного режима CD и веселье с настройкой переменных, чтобы звук завёлся и не midi-музыка играла.

Вроде были интерфесы и до ATAPI потому что я помню звуковые карты и 3мя интефесами под CD-ROM и судя по подписям все три были разные.

Сам ATAPI, кстати, похож на SCSI. Там пакет 6 слов (12 байт) и очень сильно напоминает SCSI over USB. И действительно, часть CD приводов до ATAPI были таки SCSI-8. Вероятно, часть проприетарных разьёмов именно SCSI-8.

Ну по сути там и есть SCSI over ATA и команды работает с набором команд MMC.

А вот проверить нечем, платы вроде бы есть с разъемами, а вот сами приводы такие я последний раз году в 2000м видел.

Очень древние это вот такие:

После появления стандарта ATA/ATAPI все звуковые карты стали содержать просто дополнительные IDE, как и ваш Гусь. Это обычный IDE, который висел обычно на адресах вторичного порта 0x170-0x177 (основной, напомню, 0x1F0-0x1F7). И эта звуковая карта сильно выручала в машинах с 1 IDE, либо набортным либо на мультикарте. Я как раз имел звуковую карту Crystal с IDE, на котором у меня висел CD-ROM и большой диск на 2ГБ, который мамка 486го не видела. А на основном IDE висел обычный 500МБ диск с виндой. Винда же видела оба диска без проблем, DOS видел CD на втором IDE, но не видел второй диск.

Я даже припаивал хидер для IDE LED, так что у меня на передней панели было 2 лампочки активности диска.
Я даже припаивал хидер для IDE LED, так что у меня на передней панели было 2 лампочки активности диска.

и большой диск на 2ГБ, который мамка 486го не видела. А на основном IDE висел обычный 500МБ диск с виндой. Винда же видела оба диска без проблем, DOS видел CD на втором IDE, но не видел второй диск.

Видел-видел, только надо было поставить драйвер, умеющий в LBA-трансляцию ;-)

Блин! Всего-то 30 лет прошло, а уже и не помню, что за драйвер был :-( помню только, что в CHS больше 520 (512?, 530?) мегабайт не адресовалось... потом, вроде, было что-то про 7.2 (7.3?) ГБ, потом про 1 (2?) ТБ...

Можно было и подправить биос НЯП.

Иногда - можно, но, учитывая, что BIOS зачастую просто так не обновлялся (нужен был программатор, и нередко микросхемы BIOS были "UV-eraseable"), подавляющему большинству приходилось искать рецепты приготовления имеющихся кактусов.

BIOS должен уметь просто загрузиться в лодырь. Винда же потом свои драйвера подставляет и ей пофигу на BIOS. Я помню одно время в момент ввода LBA48 было ограничение, что бут образ/раздел должен быть ниже границы LBA32 для успешной загрузки. А до этого - ниже 8ГБ, которые получались из максимума у CHS.

Был ontrack disk manager и ему подобные

Знакомый вот уже второй год делает (и уже на этапе "приехали заказанные платы") переходник IDE<-> SD для замены жёстким дискам в старом оборудовании. Работает довольно шустро, изначально планировалось в open source, говорит, больше всего мороки с DMA и обработкой всяких нестандартных ситуаций вроде "я передумал это читать"

С HDD проблем нет, в том числе и с переходниками на SD/microSD. Китайские поделки пользовал долго - работают отлично, есть даже миниRAID на 2 microSD. А вот с ODE всё печально.

Проект делается для приставок и видеорекордеров Sony, китайские переходники, увы, не подходят, многие команды ATA не поддерживают. Ну и по заверениям товарища, имеют не такую высокую скорость и глюки

Ну тут поддерживаю. Переходники IDE-SATA тоже не весь стандарт поддерживают. И жто печально.

В продаже есть переходники с IDE на CF-карточки (но нужно внимательно смотреть, чтобы не оказался "ноутбучный" IDE :-)

А зачем? На Ali есть готовые изделия

Писал выше, алишные многое не умеют и из-за этого их в старые игровые приставки вместо IDE диска не поставить

Блин, надо будет собрать эмулятор, как будет готово. Чисто ради того, чтобы вставить в свой CD-плеер и получить самую сложную вариацию на тему самого бесполезного устройства в мире :-)

ЗЫ. Как часто в той статье верно отмечали — многие игры пользовались CDA-командами, чтобы играть саундтрек через звуковую карту. Так что если замахиваетесь на поддержку в том числе ДОС-игр, придётся вставлять и ЦАП, и SPDIF логический блок в саму ПЛИСку (благо, вроде, они есть библиотечные)

Не обязательно в плиску. Контроллер так же может играть музу на встроенный ЦАП, мы не за HiFi тут гонимся. А если поставить кодек от VS, то можно использовать даже образы, где аудиотреки в МР3.

Хотел бы задать два вопроса. Первый - почему не взять привод от ноутбука, который раза в три меньше по объёму? Второй- а ваш эмулятор будет эмулировать всевозможные защиты от копирования?

Даже для привода от ноутбука там места нет. К тому же, IDEшных уже не найти и разъём у них хитрый. Почти все доступные SATA и колхозить ещё переходник такое себе. Но самое главное это, конечно, не хочется с дисками возиться. Я вот скачал 640ГБ сет дос игр и что мне теперь всех их нарезать? Не все они на CD, конечно, но много.

Что касается защит то это перспектива образов их поддерживающих. Это скорее всего может быть добавлено позже, на данном этапе хочется получить простую эмуляцию для ISO (обычный диск с данными), аудиодиск и смешанный (1 трек с данными и остальные аудио). А добавить поддержку защит можно будет после реализации базового функционала.

не понял, IDE-шных CD-приводов не найти? DVD с поддержкой CD же полно. Или это не то?

Ну в наших краях нет, последний покупал на eBay для ThinkPad ещё до ковида. Зато SATAшных на каждом углу и с любой декоративной планкой.

КЯП сложно найти живой привод с разъёмом "полотенце".

из пушки не по воробьям а по микробам :) у меня "ретро"машина в microatx и то впритык, так как есть замечательные audigy с внешними блоками и вообще много всего в 5.25. стоит и пылиться

Ну мне там аудига не нужна. Видео я поставил жирафа 4мх400, он и в VESA умеет и под виндами норм. Правда, для этого пришлось изготовить угловой AGP райзер. А вот на звук места нет, но у меня утёнок на Crystal CS4237B и его аппаратный MPU401 (они оба на картинке в моём посте выше, но у меня есть MPU401 в виде отдельного модуля). Он и SB совместим и WSS там есть. Но платку придётся сделать кастомную. Посмотрим.

Интересный проект. И ЛУТ порадовал. Ждем следующей части, ведь узкое место это быстро отвечать на команды чтения блоков. А USB для этой задачи не самый лучший транспорт.

У ATA/ATAPI каждая команда атомарная, там не требуется малого пинга. Он нужен лишь для поднятия общей скорости интерфейса через IOPSы. Но назначение этого устройства не вычитка данных, хотя оно позволяет это, а для по сути ручного управления устройством. Скорее всего, я поддамся на уговоры в комментах выше, мост будет наделён некоторыми мозгами и будет сам обрабатывать накладные расходы узкого круга, оставляя пользователю лишь логический верхний уровень, как то: послать команду ATA или ATAPI и получить ответ в любом виде, который команда должна вернуть. Вероятно, что это будет уже CLI устройство и особой программы уже требовать не будет, любой терминал подойдёт. Но это тоже будет полная разработка устройства с нуля, чтобы любой желающий мог не только повторить но и погрузиться в механику этой шины вообще.

Кстати, в принципе существуют доступные 5В 32-бит контроллеры. От Atmel, разработаны давно, ещё до её поглощения Микрочипом. AT32UC3Cxxx(AT32UC3C0512C к примеру). Они конечно уже не самые новые, только 80 МГц, но ИМХО тут они вполне справились бы с с задачей.

Вы про SAM? Или я что-то путаю. Тут ещё вот какая штука: мир поменялся и ассортимент доступной элементной базы сильно изменился. Я бы хотел использовать то, что доступно многим. Это касается самого ODE, конечно. Но если и мост кому-то нужен, то надо и его тогда собирать из доступного.

Я про AT32UC3C. Ядро AVR32. Но насчёт доступного всем соглашусь, хотя конкретно эту серию Microchip как минимум продаёт, во всяком случае купить её можно. Она выстрелила.

ATAPI - ATA Packet Interface - появилась у ATA - AT Attachment - только в четвёртой номерной версии 1996 года, до этого оптические приводы не подключались к IDE, но сами приводы существовали и подключались в свои проприетарные разъёмы своих контроллеров, которые обычно были совмещены со звуковыми платами.

Сперва подумал, что у меня прям проблемы-проблемы с памятью - я на 100% уверен, что бета-версии "Чикаго" (Windows 95) мы с приятелем ставили с CD-привода явно не через звуковуху подключенного (первый CD-привод действительно имел интерфейс Mitsubishi), а через мультяху, и это явно был не 96-й год... ринулся гуглить, а там... вакуум. Но упёртых это не остановит! Нагуглил статью, согласно которой ATAPI появился не позднее 1994-го года. Ну, и да, беря в расчёт передовые взгляды и малоограниченные на тот момент финансовые возможности старшего брата приятеля (который, собственно, и апгрейдил доступный нам комп чуть не ежемесячно), иметь новейшее железо было вполне логичным.

Ну на самом деле документ не самой ранней ревизии. А в этом стоит такой год. Скорее всего, доступность IDE ATAPI было немного ранее выхода официальной документации. Ну и в противовес вашей истории скажу, что у нас даже в 2000м в ходу были как IDE устройства, так и SCSI. Причём низкоскоростные, из ранних версий.

SCSI в середине 90-х были не редкостью, но для дома были всё-таки дороговатым решением. Да, у отца на работе был сканнер с интерфейсом SCSI-II, но он стоил... дома, даже в 98-м году, я довольствовался ручным Mustek с проприетарным интерфейсом (похожим по разъёму на PS/2, и отдельным ISA-контроллером)... ещё не могу не вспомнить внешние CD(R/W) с интерфейсом LPT, правда, грузиться с них, вроде, было невозможно.

Вижу значек Embarcadero - ставлю плюс. Дельфя?

Угу, так исторически так сложилось. Быстро только на паскале, ещё быстрее - на барсике. Но С++ от них тоже установлен и используется.

Дельфи настолько же прекрасна, насколько и недооценена. Но мы в своей фирме все прикладное низкоуровневое пишем на ней.

Да, было время, когда аббревиатура IDE воспринималась как интерфейс, а не как среда разработки...

Но не многие знали (и, вероятно, знают), что она означает. Integrated Drive Electronics - Электроника, встроенная в накопитель. Под этим понималось, что накопитель не ведомое устройство, как это было с накопителями гибких дисков и первых жёстких дисков (которые - суть дисковод с несменными дисками большого объема), а интеллектуальное устройство, понимающее определённый набор команд, т.е. имеющее некий контроллер на борту.

Нибл! Как это здорово и олдово! (в самом хорошем и однозначном смысле).
(а то мне тут про байт писали... в ответ на "октет" - что, мол, не всё так однозначно)

Октет это байт в десятичном виде. Обычно в сетях и применяется...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации