Все прекрасно "впихивается", встала как родная :)
S_V_B, опишите свой опыт пользования устройством, как независимое от производ. лицо,
какие и как разделы там размечаете и какие подводные камни ожидают счастливых владельцев,
картинки\фотки приветствуются )
Спасибо.
:redface:
- - - Добавлено - - -
AFZ, если есть образ с AZ-драйвером - желательно иметь драйвер обоих "полов" под соотв. мониторы или один "универсальный" , пожалуйста скиньте мне для заливки в УК-НЦ раздел хламника. По поводу приобретения буду писать отдельно и наверное через борохолку?
Всё уже есть:
Ссылки:
Основная страничка поддержки проекта [инструкции, техническое описание, обновления фирмвари]
Контроллер псевдодиска на MicroSD
Контроллер псевдодиска на MicroSD на шину МПИ: особенности версии для УКНЦ
Контроллер псевдодиска на MicroSD для УКНЦ: сборка и наладка конструктора контроллера
Продажа
Версия контроллера для УКНЦ
Версия контроллера для ДВК
Добавлю, что для УКНЦ не подходят драйвера с поддержкой ДП, которого у нее нет - т.е. AZX.SYS и AZ.TSX, к ней подходят только AZ.SYS. И, учитывая, что многозадачность для УКНЦ не особо актуальна, достаточно драйвера с ожиданием "прополкой" (Polling), драйвер с ожиданием в прерываниях работать будет, но разумной пользы с него не ожидается...
Наконец-то собрал переходник "40-60 пин" и попробовал запустить AZ-контроллер. Пока - все Ок. На выходных буду пробовать дальше...
В общем-то это не так просто, но понять можно. Вот, выполняется программа пользователя, естественно, в режиме "задача". Вот ей понадобилось прочитать что-то с диска. Для этого она исполняет макрокоманду .READ, .READW или .READC. То есть, формирует из аргументов макрокоманды таблицу в памяти, заносит в R0 адрес этой таблицы и исполняет машинную команду EMT с соответствующим кодом. Эта команда вызывает прервыание с вектором 030, включается состояние "система", соответствующие компоненты резидентного монитора выполнят кучку действий, в конце которых поместят этот запрос в очередь к соответствующему драйверу.
Когда подойдет очередь этого запроса (или сразу, если очередь была пуста) запускается драйвер. Он подготавливает операцию. Для дисков, допустим, надо переместить головки, дождаться нужного сектора и т.д. Все это требует времени, но устройство способно сделать это самостоятельно. Поэтому драйвер выдает устройству команду на эти действия и вынужден ждать. Классический вариант - сообщить устройству, что по выполнении этих действий надо будет сделать прерывание, после чего выйти назад в систему. Система продолжит исполнение текущей задачи (если макрокоманда была .READ или .READC) или запустит другую задачу, если была макрокоманда .READW.
Когда механика отработает, аппаратура контроллера пошлет сигнал прерывания, исполняемая задача будет приостановлена, включится состояние "система" и начнется передача данных. Когда все данные будут переданы, драйвер вернет управление системе специальным образом, сигналя "операция завершена". По этому сигналу будет взобновлено исполнение ожидающей задачи. Это, конечно, сильно упрощено, но где-то так. Примерно таким образом работает, допустим, драйвер DW. Есть и другие варианты, но это для другой аппаратуры, об этом я умолчу.
Так вот, все это имеет смысл (1) для относительно медленных устройств и (2) для реальной многозадачной работы. Тот же винчестер - у него перемещение головок занимает не один десяток мс, прямой смысл отдать это время исполнению других задач. SD-карточка - устройство быстрое, время от выдачи команды чтения до готовности передавать данные имеет порядок 200 мкс, за это время выполнится, дай бог, сотни полторы команд, то есть не факт, что система успеет хотя бы переключить задачи (там довольно много действий). При записи оно чуть хуже, но тоже, максимум, 1-2 мс. Поэтому я первый вариант драйвера сделал по-простому: выдал команду "читать сектор" и в цикле жду, когда появится бит "сделано", не возвращая управление системе. Вот это самое ожидание путём многократного опроса бита готовности (пока он не появится) и называют "Polling", а на жаргоне - "прополка".
Я сделал драйвера с "прополкой", в основном, потому, что у меня еще не был готов тот кусок фирмвари, который обслуживает прерывания со стороны STM32. Как только я его сочинил, так сразу сделал и вариант драйверов с ожиданием посредством прерываний, но, в общем-то, особой разницы не обнаружилось, не считая того, что драйвера с прерываниями по размеру больше - естественно, для обработки прерываний нужен и дополнительный код, и дополнительные поля...
А на УКНЦ, к тому-же, практически, не имеет смысла пускать многозадачную ОС - нормальным многозадачкам нужен диспетчер памяти и не менее 248К этой памяти. Те меньшие цифры, которые называют для "больших" ОС - это только чтобы эта ОСь кое-как запустилась, для нормальной работы минимум - 248К. Единственная многозадачка, которая более-менее нормально работает на УКНЦ - это RT11FB, но что под ней гонять на УКНЦ - непонятно. На ДВК оперативным заданием изредка гоняли спулер - вывалил большой листинг в файл, пустил QUEUE.REL, она печатает этот листинг на принтер, а ты в фоне делаешь что-то другое. Сейчас ни на УКНЦ, ни на ДВК никто этого делать не будет, а, значит, и RT11FB загружать бесполезно...
Закинул драйвер AZ в образ диска на контроллере Ярика - AZ устройства видны без проблем. Причем, можно перезагрузиться с AZ и тогда будут видны и AZ, и "MZ" диски.
Словил забавный глюк - если перезагрузить УКНЦ ресетом, то может появиться надпись * Загрузка из сети *.
ЗЫ: Все ломаю голову - как сделать аккуратный перевертыш для кабеля. Очень не хочется в корпус запихивать перекрутку из "макарон" :-(
То есть, в памяти ПП остался эмулятор MZ, который туда загружает контроллер Ярика, да? Или он "железно" эмулирует MZ ?
Может таки перевернуть контроллер? Бог с ним, карточку можно и на перевернутом сменить. Мы тогда прикидывали, между стойками с резьбой и платой надо проложить дистанционные втулочки (толстые шайбы) чтобы разъемы оказались на той же высоте, тогда лента от ЦП идет почти прямо.
Естественно. В общем-то, RT11FB - изделие весьма специфическое. Возможно, его планировали для АСУТП ? Типа, оперативные задачи рулят оборудованием, а фоновая общается с оператором и с "верхним этажом" АСУ?..
С другой стороны, мне для всех тогдашних задач хватало RT11SJ. Собственно, и RT-11 мне была нужна только для обмена с дисками - все управляющие действия, включая мультипрограммизмы, я делал своими средствами. А вот загрузить задачу, сохранить в файле собранные данные и т.п. - это я с удовольствием перепоручал RT-11. Я, правда, занимался не АСУТП, а автоматизацией эксперимента, но это близко.
А сидеть и программировать под RT11FB имело смысл в единственном случае - когда у вас машинка без ДП, а второй (оперативной) задачей запущен спулер, который печатает что-то большое и не требует внимания - других оперативных задач под FB просто нет. Ну, не считать же за нужную задачу регистрацию ошибок? Ладно, на "большой" машинке, вроде СМ-1420, иногда еще имело какой-то смысл регистрировать ошибки - встречались организации, не имеющие у себя инженерной службы и пользующиеся для этих дел услугами сторонних организаций, типа СоюзЭВМкомплекс - вот, если что-то барахлит, предъявить им этот лог ошибок - самое то. Но и тогда, если там и была RT-11, то XM, а не FB. И ни на каких машинках без ДП никто и никогда этого не делал. Если кто из любопытства и генерил систему с регистрацией, то, попробовав пару раз, ее просто забывали.
Так вот, сижу я, правлю исходники на фоне печатающего спулера. Выправил, пускаю компиляцию, и начинаю громко употреблять ненормативную лексику: вместо привычных пары минут оно трещит дисками минут 10-15, из-за того, что мало памяти (MACRO-11), или вообще валится (Си)... Под XM оно без вопросов - и редакторы, и компиляторы, и большинство остальных программ, прекрасно работают в Virtual Mode, то есть XM предоставляет любой из них хоть 56К, хоть вообще 60К или даже полные 64К, как настроишь, а вот под FB...