User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 714

Тема: Контроллер псевдодиска на SD-карте для ДВК/ УКНЦ / PDP-11 original + Ethernet

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    При реализации прерываний и DMA - можно легко сделать разновидность контроллера HD. В таком случае подходит имя устройства HD.
    Я бы тоже хотел воспользоваться HD - давно утверждены состав и назначение битов регистров, есть готовый драйвер... Но HD работает мгновенно - ему дали команду, и на следующий такт виртуального процессора данные появились в памяти. В реале такое не выйдет. Если добавить в HD возможность ожидания - пусть в эмуляторе она и не будет использоваться, поскольку данные появились мгновенно, но, если они не появились... Впрочем, скорее всего, не выйдет. HD ведь не предусматривает отключения всех регистров на время ожидания? И прерываний у него нет.

    Цитата Сообщение от Patron Посмотреть сообщение
    Когда процессор контроллера занят - не надо отдавать в МПИ никаких битов. Достаточно, чтобы перед уходом в офлайн процессор контроллера активировал аппаратную "заглушку"
    То есть, вариант (2). Именно так я и представляю себе конструкцию на ЛА19, нескольких инверторах, мощной 8-ножке и, может быть, паре-тройке простых ЛЭ - детально я ее не продумывал. Причем отдать один бит в МПИ почти ничего не стоит - та самая 8-ножка содержит два ЛЭ, один отдаст СИП, второй свободен, цена вопроса - лишняя пара проводков на макетке или дорожек на боевой плате. Ладно, буду думать...

    Цитата Сообщение от MM Посмотреть сообщение
    Посмотрите повнимательней 055 ПЗУ - там вроде как есть загрузка с лентопротяга пользователя (Адр)L
    Все хуже. Попробовал в эмуляторе 134-ю, она вообще на букву L не реагирует, так, что перфоленточный загрузчик отменяется.

    Цитата Сообщение от MM Посмотреть сообщение
    при установке какого-то бита появляется текст ПЗУ ма МПИ - например, на 173000 ( или др. адресе ), и пользователь может его запустить на исполнение.
    173000/165000 отпадают однозначно - кроме ДВК есть еще и Э-60 (М6, М8), а кое у кого и 11/83-84, конфликтовать с их ПЗУ загрузчиков не хочется. К тому же в МПСиС был опубликован замечательный прием, позволяющий разместить ПЗУ загрузчика на одном адресе. Адрес внутри ПЗУ перебирается отдельным аппаратным счетчиком, после каждого считывания к нему прибавляется единица, адресация внутри пословная. Первой командой в ПЗУ располагают команду MOV -(R7),R0, затем адрес загрузки, затем MOV -(R7),(R0)+, затем первую команду загружаемой программы, затем снова MOV -(R7),(R0)+, следующую команду программы и т.д. В конце ставят каким-то образом переход на загрузчик, например MOV -(R7),R0, <адрес перехода>, JMP @R0. Команда MOV -(R7),<регистр или косвенно-регистровый адрес>, первым делом скорректирует адрес следующей команды, схемы ЦП прибавят к немк двойку, а автодекремент ее отнимет, в результате адрес останется тем же. А адресный счетчик ПЗУ подставит на этот адрес следующее слово данных (нечетное обращение, считая с нуля) или следующую команду (четное обращение). Цена вопроса - дополнительный аппаратный счетчик и двойной расход объема ПЗУ. В нашем же случае - несколько лишних строк кода, а ПЗУ у нас большое. Хотя бесплатные кейловские 32К я занял уже на 45%. Впрочем, "таблетки от жадности" никто не отменял...

    Цитата Сообщение от MM Посмотреть сообщение
    DMA - значит - заведомый гемор, или под многозадачник.
    Да не то, чтобы так. В моем варианте реализации DMA - это лишние 6 шинных драйверов для A16-21, второй комплект шинных драйверов для управляющих сигналов (СИА, СИП, ВВОД, ВЫВОД и т.д.). Если делать без ДМА, то на прием с МПИ хватит 1/6-й простого 1533ЛН1, на передачу - половины 155ЛА18 или похожей мощной восьминожки с другой логической функцией. А для ДМА их придется ставить двусторонними, или ставить второй комплект с обратной функцией. Да, увеличивается количество рассыпухи, причем заметно.

    Цитата Сообщение от MM Посмотреть сообщение
    См. DW: , но с резиновым объемом.
    Для точной эмуляции, боюсь, опять понадобится много рассыпухи. А неточная смысла не имеет. Впрочем, погляжу.

    Цитата Сообщение от MM Посмотреть сообщение
    Я бы посоветовал взять за основу готовый КМД ДВК, и просто сменить адрес ВП1-095/096
    Зачем? Я планирую, по-простому, эмулировать несколько абонентов МПИ на ножках GPIO контроллера. Обычной синхронной зацикленной программой. Ожидаю пассивного СИА. Жду фронт СИА: снял себе в переменную состояние ДА15-00, проверил СИА. Неактивен? Назад, на метку "Жду фронт СИА". Иначе по МПИ только что передан адрес. Сравниваю его со своими. Не мой? назад на ожидание пассивного СИА. Иначе разбираюсь, что мне там предлагают сделать... 72-МГц процессор сделает все это не напрягаясь, ЦП и не заподозрит, что там не аппаратные регистры, а программная эмуляция. Таким образом, без ДМА, всего оборудования будет: БИС микроконтроллера, 4 шинных драйвера для К ДА00-15 Н, пара 1533ЛН1 для приема управляюших сигналов МПИ и одна-две мощных восьминожки для передачи К СИП Н, К ТПР Н, может еще что понадобится... Ну, и заглушка "Думаю, прошу не мешать", которую мы обсуждаем с Патроном. И никаких ВП1-ххх, ВМ1 и прочих.

    - - - Добавлено - - -

    Цитата Сообщение от Hunta Посмотреть сообщение
    А если что то типа STM32F407VET6?
    Можно и такое, есть у меня такая платка. Единственный недостаток, если дело дойдет до мелкой серии, на Али они вдвое дороже. 103VET6 попадаются по $23 за десяток, а 407VET6 не менее $43 за тот же десяток. Впрочем, эта разница, думаю, потеряется на фоне цены платы - все-таки, "половинка" ДВК/Э-60 - более 3 кв. дм!

    А так - замечательный МК. На борту и SDIO, и USB OTG, и 100-Мбит Ethernet, и еще много чего, включая 168 МГц и 192К оперативки.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    713
    Поблагодарили
    595 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AFZ, просто именно такой вариант мне уже почти дошёл (оно и отладочный модуль уже пришли в Ёбург, значит к концу недели будут у меня)

  4. #3

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    Но HD работает мгновенно - ему дали команду, и на следующий такт виртуального процессора данные появились в памяти.
    Ну, вот прямо сейчас я уже сделал 3-ю версию контроллера HD, где в CSR добавлен бит разрешения прерываний 0100, при установке которого контроллер начинает выполнять команды чтения и записи с задержкой 100 мкс, во время которой бит READY сброшен и после которой происходит прерывание по вектору 0164.

    Сейчас напишу для этого контроллера драйвер, проверяющий бит READY в CSR перед каждым обращением к любому регистру - и всего делов. Главная особенность использования прерываний контроллером HD - они возникают только в двух случаях: 1) после начала выполнения команды чтения; 2) после начала выполнения команды записи. Все остальные команды выполняются "мгновенно", т.е. пока драйвер идёт ждать появления бита READY в CSR - контроллер уже готов сообщить в регистре данных размер подключенного образа или принять в регистре данных значения номера устройства, номера блока, адреса буфера или счётчика слов.

  5. #4

    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,072
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    81
    Поблагодарили
    65 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Ну, вот прямо сейчас я уже сделал 3-ю версию контроллера HD
    А как будет реагировать контроллер если "карту SD"* вытащить и вставить другую?

    *В эмуляторе это будет образ HD.

  6. #5

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MiX Посмотреть сообщение
    А как будет реагировать контроллер если "карту SD"* вытащить и вставить другую?
    *В эмуляторе это будет образ HD.
    Образ HD - это файл на карте SD, смонтированный в виртуальный привод. Вытащить карту SD при работающем контроллере, это как вытащить флешку из гнезда USB, с которой в эмуляторе смонтирован образ - тогда до размонтирования образа - все обращения чтения и записи будут давать аппаратную ошибку, которую эмулятор контроллера HD возвращает драйверу в старшем бите CSR.

    - - - Добавлено - - -

    Цитата Сообщение от AFZ Посмотреть сообщение
    Причем отдать один бит в МПИ почти ничего не стоит - та самая 8-ножка содержит два ЛЭ, один отдаст СИП, второй свободен, цена вопроса - лишняя пара проводков на макетке или дорожек на боевой плате.
    Нет смысла отдавать биты в "режиме заглушки", потому что при работе контроллера с регистрами - в CSR всегда есть какой-то установленный бит и только при "режиме заглушки" все биты сброшены - это позволяет детектировать режим заглушки одной командой TST (R1). Когда надо проверять какой-то бит - команда становится длиннее на одно слово ( маску этого бита ). Зачем такие усложнения платы и кода, когда без них гораздо лучше.

  7. #6

    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,072
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    81
    Поблагодарили
    65 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Образ HD - это файл на карте SD
    Во как!
    Значит контроллер должен поддерживать файловую систему (FAT16/32) и распаковывать образ DSK.

    Цитата Сообщение от Patron Посмотреть сообщение
    Вытащить карту SD при работающем контроллере, это как вытащить флешку из гнезда USB,
    Вот по этому и был задан вопрос. Значит карту нельзя вынимать на протяжении всего сеанса, вплоть до выключения компьютера.

  8. #7

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    713
    Поблагодарили
    595 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MiX Посмотреть сообщение
    Значит контроллер должен поддерживать файловую систему (FAT16/32)
    Насколько я успел посмотреть, уже есть готовые библиотеки.
    Цитата Сообщение от MiX Посмотреть сообщение
    распаковывать образ DSK
    ? Считаем смещение в файле образа (если хитрые, типа .dw .rd .dx .dy - просто немного хитрее смещение считается) и дальше читаем или пишем затребованное количество байт (при записи добивая нулями до следующей кратной 512 байтам границе). Никакой распаковки упаковки - файловую систему поддерживает система на ДВК

  9. #8

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    В моем варианте реализации DMA - это лишние 6 шинных драйверов для A16-21, второй комплект шинных драйверов для управляющих сигналов (СИА, СИП, ВВОД, ВЫВОД и т.д.). Если делать без ДМА, то на прием с МПИ хватит 1/6-й простого 1533ЛН1, на передачу - половины 155ЛА18 или похожей мощной восьминожки с другой логической функцией. А для ДМА их придется ставить двусторонними, или ставить второй комплект с обратной функцией. Да, увеличивается количество рассыпухи, причем заметно.
    Без ДМА придётся делать пакетную эмуляцию ДМА ( когда передача "блока ДМА" начинается с появления бита 040000 в CSR и заканчивается появлением бита READY в CSR, а в промежутке - сначала в регистре данных выдаётся счётчик передаваемых слов, а потом все слова пакета со скоростью шины, т.е. без проверки готовности для каждого отдельного слова ).

    Но при такой реализации "псевдо ДМА" - минимальный загрузчик, отправляющий команду "передать блок 0 устройства 0" и считывающий из регистра данных пакет "псевдо ДМА" - будет выглядеть так:

    Код:
    Error:				; При ошибке - повторить чтение.
    	Mov	#177720, R1	; HD CSR -> R1
    	Mov	#10,    (R1)	; 010 == Read Boot
    	Tst	(R1)		; Блок "псевдо ДМА" готов?
    	BEq	.-4.		; Нет..
    	Tst	(R1)+		; Была ошибка чтения?
    	BMi	Error		; Да..
    	Mov	(R1), R0	; Word Count -> R0 
    	Clr	R2		; Buff Addr  -> R2
    	Mov	(R1), (R2)+	; Читаем слова блока
    	SOB	R0, .-4.	; Все слова переданы?
    	Clr	PC		; Переходим на адрес 000000

    Если часть предварительных операций выполнить вручную - минимальный код загрузчика в ОЗУ ДВК будет таким:

    Код:
    	Mov	(R1), R0	; Word Count -> R0 
    	Mov	(R1), (R2)+	; Читаем слова блока
    	SOB	R0, .-4.	; Все слова переданы?
    	Clr	PC		; Переходим на адрес 000000

    При работе с пульта ДВК это будет выглядеть так:

    Код:
    *****  ДОСТУПНОЕ  ОЗУ  - 256 K *
    @ 001000
    @R1/001122 177722
    R2/000000
    @R7/001000 10000
    @0010000/000000 11100
    00010002/000000 11122
    00010004/000000 77002
    00010006/000000 5007
    @17777720/040200 10
    @17777720/000000 /040000
    @P
    HD Boot-I-Cold boot..
     
    HD (177720) disk driver  v4.0  2017
    SL V08.00 [SW] Сторожевых С.В. 1988
    KZ V01.00 (C) ВЦ МИЭТ,  НОЯБРЬ 1987
     
    RT-11SB (Y) V05.07

    Если такая процедура загрузки устраивает - можно сделать разновидность контроллера HD с пакетной эмуляцией DMA. В режиме записи - передавать счётчик слов в пакете не надо, потому что контроллер использует счётчик слов, переданный командой "задать счётчик слов". Важная особенность, которую надо учитывать, заключается в том, что контроллер может отдать в пакете меньше слов, чем было указано в счётчике слов чтения, поэтому в качестве счётчика слов при приёме пакета "псевдо ДМА" - обязательно должно использоваться первое слово пакета. При записи контроллер может записать не все переданные ему слова, но перед этим принимает пакет целиком - в соответствии со значением текущего счётчика слов.

    Текущие значения номера привода, номера блока и счётчика слов сохраняются между операциями и обнуляются по сигналу шины INIT ( команда CPU = RESET ).

    - - - Добавлено - - -

    Сигнал INIT и любая запись в CSR на этапе чтения/записи пакета "псевдо ДМА" - принудительно завершают выполнение текущей команды и переводят контроллер в режим приёма команды. При этом, в случае записи в CSR - выполнение текущей команды завершается с установкой бита ошибки в CSR и кода ошибки IE_ABT = 0375 в регистре данных.

    - - - Добавлено - - -

    Чтобы операционка могла сбросить операцию на "этапе заглушки" - можно добавить в заглушку возможность приёма сигналов DOUT и INIT с установкой флагов для контроллера. Тогда, при выходе из "режима заглушки" контроллер при наличии флага INIT или флага записи в CSR - отменяет посылку прерывания, отключает прерывания, а всё остальное делает так же, как в случае приёма INIT или записи в CSR на этапе обмена пакетами.
    Последний раз редактировалось Patron; 26.09.2017 в 01:14.

  10. #9

    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Когда надо проверять какой-то бит - команда становится длиннее на одно слово ( маску этого бита ).
    Если этот бит - не Д15.

    Цитата Сообщение от MiX Посмотреть сообщение
    Значит контроллер должен поддерживать файловую систему (FAT16/32) и распаковывать образ DSK.
    Именно. Я давно продвигаю основной тезис этого дела: псевдодиск PDP-11 на современном носителе должен быть файлом для писюка. Вне зависимости от типа носителя, будь то простая USB-флешка, SD-карточка, винчестер, да вообще, хоть SSD-шник. Чтобы сняв этот носитель и подключив его к писюку можно было нормальными писюшными средствами свободно манипулировать файл-образами. Архивировать, выкладывать в Нет, заливать на носитель свежеукачанные из Нета файл-образы и пользовать их на ДВК. А что делать, допустим, с УКНЦ-шным WD? Правильно, без специальной программы (которой нет), ничего. Разве что посекторную копию сделаешь...

    А распаковки файл-образы .dsk не требуют, этим будет заниматься ОС, работающая на ДВК, точно так же, как это делается на эмуляторе.

    Цитата Сообщение от Patron Посмотреть сообщение
    Чтобы операционка могла сбросить операцию на "этапе заглушки" - можно добавить в заглушку возможность приёма сигналов DOUT и INIT с установкой флагов для контроллера. Тогда, при выходе из "режима заглушки" контроллер при наличии флага INIT или флага записи в CSR - отменяет посылку прерывания, отключает прерывания
    А вот об этом я забыл... Спасибо.

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

    В частности, если адресную часть цикла МПИ обрабатывать аппаратно, можно попробовать обрабатывать запросы МПИ в режиме прерываний. Программная реализация этого дела предусматривают строго синхронную "прополку" (Polling), поскольку нельзя пропустить фронт СИА, да и не сдюжит 72-МГц процессор прерываний с частотой 1 МГц - это же, максимум, 72 команды от одного прерывания до другого - ведь нужно и сохраниться, и в конце восстановиться, и проверить, к нам обращаются, или нет, и это по каждому обращению к МПИ, включая память. Так и на основную программу времени не останется. А вот если адрес зафиксируется аппаратно, причем "наш" адрес, на чужие не реагировать, то вполне можно и СИП притормозить, если что... Если это сойдется, то, может быть и отключать регистры не понадобится. Но, опять же, это большое количество рассыпухи, что очень не хочется. В общем, буду прикидывать схемы и думать...

    - - - Добавлено - - -

    Цитата Сообщение от MM Посмотреть сообщение
    Т.е. все эти шевеления с ФАТ - программно в драйвере.
    Нет никаких там ФАТов. По-простому, сектор 0-0-1 - блок 0, 0-0-2 - блок 1 и т.д. А сделать FAT в драйвере PDP-11... Известное творение г-на Чана - FatFS, при всех его оптимизациях и отсечениях всего, сколь-нибудь избыточного, занимает на любой платформе не менее 10=12К, отдать столько на драйвер - так ведь для работы места не останется...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  11. #10

    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,072
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    81
    Поблагодарили
    65 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AFZ Посмотреть сообщение
    А распаковки файл-образы .dsk не требуют, этим будет заниматься ОС, работающая на ДВК, точно так же, как это делается на эмуляторе.
    Распаковкой DSK занимается ОС работающая на ДВК только одного образа с одного диска. Если на SD карте несколько образов, то контроллер должен распределить на каком диске какой образ. Для этого делаются маркеры в имени файла.
    Например: HD000.DSK, HD001.DSK, HD001.DSK... итд.

    Более того, какой размер должен быть у образа? 32Мб?
    Тогда нужна утилита для форматирования из под ОС на ДВК.
    И не забудьте про блокиратор записи на SD карте.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 116
    Последнее: 20.01.2024, 17:40
  2. Ответов: 327
    Последнее: 03.12.2019, 22:49
  3. Контроллер IDE PATA для QBUS (Э-60, ДВК)
    от Жека:) в разделе Новодел
    Ответов: 4
    Последнее: 04.05.2012, 14:40

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •