Просмотр полной версии : Новый IDE-контроллер для Ориона
Где-то чуть больше полугода назад, во время сборки Орион-512, меня удивляло одно обстоятельство - кривой IDE-интерфейс через КР580ВВ55...
Намучавшись с ним вдоволь, решил как-то исправить эту ситуацию.
Да и Error404 меня всётаки допёк...:v2_blink:
У Ориона есть одно преимущество - порты ввода/вывода отображены на память, соответственно я решил использовать свойство процессора писать 16-ти битные регистровые пары туда.
Сообразил схемку (44287), которая позволяет это делать напрямую с винчестером.
Пример кода записи/чтения на схеме.
Немного поясню как она работает для "программеров":
Как известно процессор пишет регистровые пары в память начиная с младшего байта, поэтому, во время записи, нужно защёлкивать младший байт во временном регистре U2, а уже при записи старшего байта, содержимое регистра выдаётся на шину винта в D7-D0, а D15-D8 передаётся напрямую через шинный формирователь U4.
Во время чтения всё происходит в обратном порядке. D7-D0 читаются напрямую через U1, и в этот момент D15-D8 защёлкивются в регистре U3, а уже потом читаются из него.
В данно схеме есть одно ограничение, писать можно только 16-битные слова, а уже читать и слова и байты.
Есть мысли по доработке данного контроллера, чтобы можно было писать и байты через U1.
Извиняюсь за оффтоп, но имхо актуальнее изобрести что-то аналогичное аппаратное для быстрой поддержки SDHC-флэшек. А то подходящие НЖМД нынче и достать сложно, да и смысла нет, ибо флэшки по всем параметрам привлекательнее.
Извиняюсь за оффтоп, но имхо актуальнее изобрести что-то аналогичное аппаратное для быстрой поддержки SDHC-флэшек. А то подходящие НЖМД нынче и достать сложно, да и смысла нет, ибо флэшки по всем параметрам привлекательнее.
Для этого нужно соображать переходник SD <-> IDE.
Отправленно от моего E73 с помощью Tapatalk 4
Думаю даже через тормозной и глючный мостик будет всяко лучше чем через флешки
На SDHC-флэшки нынче HD-видео "на лету" пишут, а уж с орионовскими скоростями и подавно справится, даже с нереальным клоком 20 МГц через DMA.
Error404
28.11.2013, 00:57
Извиняюсь за оффтоп, но имхо актуальнее изобрести что-то аналогичное аппаратное для быстрой поддержки SDHC-флэшек. А то подходящие НЖМД нынче и достать сложно, да и смысла нет, ибо флэшки по всем параметрам привлекательнее.
CompactFlash же. По сути тот же IDE (ATA), и продается в любом ларьке.
SD писать на Орионе можно, но оно все равно будет не быстрее CompactFlash, даже с контроллером на микроконтроллере. А DMA на Орионе нет и вряд ли будет.
Error404
28.11.2013, 10:04
Где-то чуть больше полугода назад, во время сборки Орион-512, меня удивляло одно обстоятельство - кривой IDE-интерфейс через КР580ВВ55...
Намучавшись с ним вдоволь, решил как-то исправить эту ситуацию.
Да и Error404 меня всётаки допёк...:v2_blink:
У Ориона есть одно преимущество - порты ввода/вывода отображены на память, соответственно я решил использовать свойство процессора писать 16-ти битные регистровые пары туда.
Сообразил схемку (44287), которая позволяет это делать напрямую с винчестером.
Пример кода записи/чтения на схеме.
Немного поясню как она работает для "программеров":
Как известно процессор пишет регистровые пары в память начиная с младшего байта, поэтому, во время записи, нужно защёлкивать младший байт во временном регистре U2, а уже при записи старшего байта, содержимое регистра выдаётся на шину винта в D7-D0, а D15-D8 передаётся напрямую через шинный формирователь U4.
Во время чтения всё происходит в обратном порядке. D7-D0 читаются напрямую через U1, и в этот момент D15-D8 защёлкивются в регистре U3, а уже потом читаются из него.
В данно схеме есть одно ограничение, писать можно только 16-битные слова, а уже читать и слова и байты.
Есть мысли по доработке данного контроллера, чтобы можно было писать и байты через U1.
Пара мыслей.
Адаптер IDE по портам пересекается с сетевой картой (она съедает весь диапазон F770..F7FF), которую я хотел запустить в железе в ближайшее время (т.к. все ПО писалось в эмуляторе).
Вот тема (http://zx.pk.ru/showthread.php?t=14262), относящаяся к ней, и схема (http://zx.pk.ru/attachment.php?attachmentid=44294&d=1385617443).
Почему так много портов под сеть: под RTL8019AS надо 17 портов - 16 регистров управления и 1 регистр данных. Поскольку этим 17-м регистром я все равно залезал в следующее окно портов, то я решил забрать всё его под быструю пересылку - когда любое обращение в диапазон F780..F7FF дает обращение в порт данных RTL8019AS. Т.е. не надо писать цикл в коде Z80, а можно читать/писать 128байт одним LDIR-ом. Это очень удобно, учитывая что многие TCP пакеты имеют размер менее 128 байт. А большие пакеты можно прочитать за несколько последовательных LDIR (ну или таки циклом - никто не запрещает в-общем то).
Соответственно по IDE. Тут 2 мысли: надо или переместить адреса портов IDE в диапазон F750..F75F (как на Орионе-ПРО), или же оставить IDE в диапазоне F770..F7FF, но сделать некий сигнал селекта, который будет одну из плат переводить в 3 состояние (для RTL8019AS для этого надо просто активировать сигнал AEN, для IDE видимо придется добавить еще один буфер на вторую половинку данных). И раз уж пошла такая пьянка, то и регистр данных IDE было бы здорово читать (в идеале - и писать) во всем диапазоне F780..F7FF, чтобы чтение/запись 512-байтного сектора IDE выглядело в виде такой подпрограммы (что будет работать быстрее любого цикла, почти как DMA):
ld bc, 128
ld de, destination
ld hl, 0F780h
LDIR
ld c, 128
ld hl, 0F780h
LDIR
ld c, 128
ld hl, 0F780h
LDIR
ld c, 128
ld hl, 0F780h
LDIR
На SDHC-флэшки нынче HD-видео "на лету" пишут
угу... раз пишут, два... а потом чет не открывается ниче (не зря на нормальных камерах ставят параллельно флешки, чтоб если одна накрылась, то вторая спасает)...
Пара мыслей.
Адаптер IDE по портам пересекается с сетевой картой (она съедает весь диапазон F770..F7FF), которую я хотел запустить в железе в ближайшее время (т.к. все ПО писалось в эмуляторе).
Вот тема (http://zx.pk.ru/showthread.php?t=14262), относящаяся к ней, и схема (http://zx.pk.ru/attachment.php?attachmentid=44294&d=1385617443).
Почему так много портов под сеть: под RTL8019AS надо 17 портов - 16 регистров управления и 1 регистр данных. Поскольку этим 17-м регистром я все равно залезал в следующее окно портов, то я решил забрать всё его под быструю пересылку - когда любое обращение в диапазон F780..F7FF дает обращение в порт данных RTL8019AS. Т.е. не надо писать цикл в коде Z80, а можно читать/писать 128байт одним LDIR-ом. Это очень удобно, учитывая что многие TCP пакеты имеют размер менее 128 байт. А большие пакеты можно прочитать за несколько последовательных LDIR (ну или таки циклом - никто не запрещает в-общем то).
Соответственно по IDE. Тут 2 мысли: надо или переместить адреса портов IDE в диапазон F750..F75F (как на Орионе-ПРО), или же оставить IDE в диапазоне F770..F7FF, но сделать некий сигнал селекта, который будет одну из плат переводить в 3 состояние (для RTL8019AS для этого надо просто активировать сигнал AEN, для IDE видимо придется добавить еще один буфер на вторую половинку данных). И раз уж пошла такая пьянка, то и регистр данных IDE было бы здорово читать (в идеале - и писать) во всем диапазоне F780..F7FF, чтобы чтение/запись 512-байтного сектора IDE выглядело в виде такой подпрограммы (что будет работать быстрее любого цикла, почти как DMA):
ld bc, 128
ld de, destination
ld hl, 0F780h
LDIR
ld c, 128
ld hl, 0F780h
LDIR
ld c, 128
ld hl, 0F780h
LDIR
ld c, 128
ld hl, 0F780h
LDIR
Может тогда исхитриться и пересылать данные командами OUTIR/INIR?
У нас там есть свободные порты для этого?
Нужно 8 портов и все восьмибитные, данные слать прямым потоком туда-обратно. А старший/младший байт переключать триггером, и на всякий случай предусмотреть его сброс, при обращении к портам адреса LBA и команд/статуса. При этом в данной схеме изменится только дешифратор и добавится триггер на ТМ2...
Error404
30.11.2013, 07:35
Может тогда исхитриться и пересылать данные командами OUTIR/INIR?
У нас там есть свободные порты для этого?
Нужно 8 портов и все восьмибитные, данные слать прямым потоком туда-обратно. А старший/младший байт переключать триггером, и на всякий случай предусмотреть его сброс, при обращении к портам адреса LBA и команд/статуса. При этом в данной схеме изменится только дешифратор и добавится триггер на ТМ2...
И в плату Ориона придется вносить изменения (сейчас на внешние платы не выводятся IORQ и компания), и вариант получится только для Z80 (а в адресном пространстве можно и при помощи 8080 работать, хотя конечно циклами, а не LDIR). А вообще, я не вижу особого криминала в том, что надо 4 LDIR вместо 1. Это почти без разницы (относительно более тормозных "программных" циклов).
В-общем конечно как вариант, надо подумать. Пока скажи: "сплошные" (LDIR-ами) и чтение и запись реализуемы, или только чтение?
И в плату Ориона придется вносить изменения (сейчас на внешние платы не выводятся IORQ и компания), и вариант получится только для Z80 (а в адресном пространстве можно и при помощи 8080 работать, хотя конечно циклами, а не LDIR). А вообще, я не вижу особого криминала в том, что надо 4 LDIR вместо 1. Это почти без разницы (относительно более тормозных "программных" циклов).
В-общем конечно как вариант, надо подумать. Пока скажи: "сплошные" (LDIR-ами) и чтение и запись реализуемы, или только чтение?
Я тоже не вижу "состава преступления", просто это большое расточитество (надеюсь правильно написал :) ) памяти, хотя я и не против такого варианта...
Ладно, уговорил, сегодня засяду за схему...
Error404, а какие адреса у нас свободны для твоего варианта?
F780-F7FF - это отведём для регистра данных? А для остальных регистров какие адреса?
Error404
01.12.2013, 11:56
Error404, а какие адреса у нас свободны для твоего варианта?
F780-F7FF - это отведём для регистра данных? А для остальных регистров какие адреса?
Сможем сделать так:
все регистры контроллера посадить в диапазон F750-F75F - как на Орионе-ПРО, думаю, не надо стремиться сделать 1:1 с ОриономПРО (т.к. такая схема уже есть), наоборот если регистры совпадать не будут, то можно будет сделать автодетект схем контроллера (ПРО/128)
регистр данных IDE для пересылок по LDIR дополнительно должен выбираться и в диапазоне F780-F7FF (но этот режим должен аппаратно стробироваться неким разрешающим сигналом - каким-то битом порта конфигурации, потом решим какого порта каким битом)
Таким образом, упр. регистры сетевой платы и винта мы разнесли, а регистр данных (F780-F7FF) будем переключать по необходимости (схему сетевухи тоже чуть допилим чтобы AEN на 8019 приходил аналогично стробированный битом управления, инверсным относительно IDE)
Где-то чуть больше полугода назад, во время сборки Орион-512, меня удивляло одно обстоятельство - кривой IDE-интерфейс через КР580ВВ55...
Ты имеешь ввиду контроллер по схеме Михаловского для Орион-ПРО (а также для 128-го) ? Или что-то другое ?
Error404
20.11.2014, 00:25
Ты имеешь ввиду контроллер по схеме Михаловского для Орион-ПРО (а также для 128-го) ? Или что-то другое ?
Используется решение вот из этого проекта:
http://www.pjrc.com/tech/8051/ide/
http://www.pjrc.com/tech/8051/ide/ide-sch.gif
, но порты A и С надо поменять местами (это пришлось сделать, чтобы дефолтные ПЗУ-шные загрузчики ORDOS не слали в IDE мусор если IDE повешен на порт F500 вместо ROM-DISK)
Используется решение вот из этого проекта:
http://www.pjrc.com/tech/8051/ide/
http://www.pjrc.com/tech/8051/ide/ide-sch.gif
, но порты A и С надо поменять местами (это пришлось сделать, чтобы дефолтные ПЗУ-шные загрузчики ORDOS не слали в IDE мусор если IDE повешен на порт F500 вместо ROM-DISK)
Понял. А кто-нить собирал контроллер по схеме В.Михаловского ?
Error404
20.11.2014, 10:00
Понял. А кто-нить собирал контроллер по схеме В.Михаловского ?
А что это за схема?
И, собрать схему мало, надо понимать насколько она поддержана ПО, может из-за отсутствия ПО к каким-то из схем и интереса не будет. Для схемы на ВВ55 (основное достоинство ее - максимальная простота из-за использования уже имеющейся набортной ВВ55) мне все пришлось написать самому, не уверен что снова захочу этого. :)
---------- Post added at 10:00 ---------- Previous post was at 09:56 ----------
В принципе, добавить в существующее ПО поддержку новой схемы не сложно - были бы отлаженные исходники процедуры нижнего уровня работы с IDE по той схеме: read_sector, write_sector, io_ctl. Вот их-то сочинять и отлаживать желания мало.
А что это за схема?
И, собрать схему мало, надо понимать насколько она поддержана ПО, может из-за отсутствия ПО к каким-то из схем и интереса не будет. Для схемы на ВВ55 (основное достоинство ее - максимальная простота из-за использования уже имеющейся набортной ВВ55) мне все пришлось написать самому, не уверен что снова захочу этого. :)
---------- Post added at 10:00 ---------- Previous post was at 09:56 ----------
В принципе, добавить в существующее ПО поддержку новой схемы не сложно - были бы отлаженные исходники процедуры нижнего уровня работы с IDE по той схеме: read_sector, write_sector, io_ctl. Вот их-то сочинять и отлаживать желания мало.
Это самая первая схема (IDE+RTC), распространяемая вместе с остальной периферией (COM-порт + Муз. процессор) для Орион-ПРО, можно сказать стандартная, заказывал ее еще у В.Пушкова давно-давно. Вечером поищу данный пакет (образ дискеты) и кину сюда ссылку. К этой схеме есть тестовая программулина, позволяющая проверять отдельные узлы платы, в ридмишке к ней все написано. Возможно уже есть реальная поддержка винта (загрузка с него) в ROM-дисках (ROM1, ROM2) Орион-ПРО (у меня прошита версия 2.10), но это надо проверять ессно на железе.
АлександрПП
20.11.2014, 12:43
Образ диска, наверное, этот.
Error404
20.11.2014, 13:00
Возможно уже есть реальная поддержка винта (загрузка с него) в ROM-дисках (ROM1, ROM2) Орион-ПРО (у меня прошита версия 2.10), но это надо проверять ессно на железе.
Не, надежнее в исходнике посмотреть - есть оно или нет, раз уж есть исходники. Т.к. не грузиться оно может по тысяче причин, в т.ч. ошибок в железе, или ошибок в ПО, или если в ПО не поддержано.
Образ диска, наверное, этот.
Сейчас глянул - в моем есть сорц тестилки hdd-контроллера для режима Орион-128, в твоем только ее бинарник.
Кину ссылку - сами глянете, может чего-нить новое отыщите.
---------- Post added at 22:28 ---------- Previous post was at 22:17 ----------
Не, надежнее в исходнике посмотреть - есть оно или нет, раз уж есть исходники. Т.к. не грузиться оно может по тысяче причин, в т.ч. ошибок в железе, или ошибок в ПО, или если в ПО не поддержано.
Логично. Ссылку на софт бросил в топике "Орион-ПРО. Софтверные дела"
АлександрПП
26.01.2015, 00:01
А кто-нить собирал контроллер по схеме В.Михаловского ?
Собрал эту схему. Пришлось немного повозиться , т.к. из-за нечеткой схемы перепутал элемент D6 с D5.
Тест проходит полностью. Определяются партиции дисковода, проверяется дисковод.
При включении компьютера по светодиоду видно, что системой определяется винчестер.
Часы работают, что опять же видно только по работе теста, ну и, конечно, осциллографом.
А дальше затык. Что есть из программного для "Ориона-про", что работает с этим контроллером? Пока роюсь в том, что у меня есть, но ничего не нашел.
Попытался записать на диск образ диска games.ohi и никак не получается сделать это.
Error404
26.01.2015, 00:33
Собрал эту схему. Пришлось немного повозиться , т.к. из-за нечеткой схемы перепутал элемент D6 с D5.
Тест проходит полностью. Определяются партиции дисковода, проверяется дисковод.
При включении компьютера по светодиоду видно, что системой определяется винчестер.
Часы работают, что опять же видно только по работе теста, ну и, конечно, осциллографом.
А дальше затык. Что есть из программного для "Ориона-про", что работает с этим контроллером? Пока роюсь в том, что у меня есть, но ничего не нашел.
Попытался записать на диск образ диска games.ohi и никак не получается сделать это.
А смысл использовать games.ohi? Это образ для определенной схемы IDE - на ВВ55 (или определенной схемы SD), на схеме Орион-ПРОшной IDE оно работать не будет.
что касается hddutil, то во-первых надо использовать ключ /c=131072 (оно же русским английским языком про это пишет), а во вторых, запись на устройство 0: и партицию С: программно запрещена (чтобы люди не рушили свои системы). Можно писать на второй, третий и т.д. диски и любые партиции отличные от С. Тупенько, но лучше чем никакая защита.
АлександрПП
26.01.2015, 00:43
Спасибо. Кое-что проянилось. Но много вопросов и осталось.
Error404
26.01.2015, 14:28
Главный вопрос, было ли вообще ПО для схемы от Ориона-ПРО, кроме тестовой программы. Та тестовая программа - единственное, что мне попадалось. Есть CP/M Прошная и позиция на ДИП-тублере "загрузка с HDD". Поддержано оно или это осталось в виде задела на будущее - я не знаю. У кого-то то тут были книги от ПРО - там ничего не написано?
АлександрПП
26.01.2015, 23:14
Нашел описание ROM-BIOS V2.10. Из него ясно, что имеется поддержка жесткого диска и загрузки с него. Программно поддержаны часы и мышь.
Часы включаются в Power Commander командой "О".
Теперь осталось выяснить, как перенести ОС на жесткий диск, если нет никакого программного обеспечения.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot