Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Другие архитектуры » Использование НМД2 в ДВК |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 10 11 12 13 14 * 15 16 17 | Печать |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
AndyTh написал: 65536*512 = 32M А разве блок не 512 байт? А где будет работать сервер HX-протокола.. На борту? Там неслабые количества кода. |
andyTh |
NEW! Сообщение отправлено: 7 июля 2014 23:11
_Patron_ написал: Мда... красиво я округлил 3 порядка... 65536*512 = 32M _Patron_ написал: В общем производительности бы хватило, но этого и не нужно. Мы же с вами обсуждали, нет необходимости парсить НХ протокол там, где достаточно гонять байты. А где будет работать сервер HX-протокола.. Просто у меня стенд- почти полная ДВК. Плата вычислителя, КЦГД, клавиатура. Есть и МХ контроллер, но всё дискет не куплю. Для дальнейшей отладки надо уже работать с дисками, грузить RT11, а для этого надо вытаскивать КЦГД. А так бы я загрузчик НХ разместил у себя в памяти. Но похоже и без этого можно обойтись. Загрузчик блочного устройства есть в "биосе" 1201.03. Найти бы от него описание. Что и по каким адресам у него прописано. В смысле регистр команд, состояния и данных. MM написал: это можно сделать ещё проще, например на ту же флешку кроме файлов - образов дисков можно положить текстовый файл с конфигурацией самой платы. Можно использовать последовательный порт порт на самой плате контроллера в режиме конфигурации, можно писать константы из пультового режима самой ДВК. Вариантов куча. Или предусмотреть переключатель адресов расположения текста загрузчика и его вида ( т.к. даже минимальное ПЗУ позволяет сделать несколько вариантов ). |
Сейчас на форуме |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
AndyTh написал: Не надо ничего вытаскивать, контакт 9 разъема Х6 позволяет перенстроить адрес КЦГД на 017776560, порт наплатный 1201.03 перенастройте на 017776570, а свой эмулируемый на stm тогда будет на адресах консоли 017777560. а для этого надо вытаскивать КЦГД. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 июля 2014 10:06 Сообщение отредактировано: 8 июля 2014 10:10
AndyTh написал: Если сделать ещё один шаг и сэмулировать DMA, напрямую отдавая данные в область ОЗУ - можно без всяких переделок использовать дайте мне номер блока и заберрите данные из буфера или регистра. Остальное я сделаю.драйвер псевдо-диска HD ( по-умолчанию драйвер HD взаимодействует с псевдо-контроллером через адреса 177720 и 177722 ). А если эмулировать DMA лень - надо просто добавить в код драйвера ( после подачи в контроллер команды чтения блока ) цикл пересылки блока данных между контроллером и памятью. |
andyTh |
NEW! Сообщение отправлено: 8 июля 2014 10:43
_Patron_ написал: Я ведь изначально так и предлагал. Отображать на память блок сразу. Мне это проще, в протокол обмена по QBus не нужно вписывать счётчик слов и работу с неполными блоками. Если сделать ещё один шаг и сэмулировать DMA, напрямую отдавая данные в область ОЗУ Вопрос в другом, изначально нужно как то загрузиться с диска. Т.е. либо писать свой загрузчик, либо использовать готовый. Готовый есть только начиная с 1201.03 и только для ДВК, если не ошибаюсь. |
Сейчас на форуме |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 июля 2014 21:39 Сообщение отредактировано: 8 июля 2014 21:51
AndyTh написал: ДМА - это копирование данных изнутри контроллера в находящиеся на шине снаружи контроллера ячейки ОЗУ без участия процессора. При этом процессор блокируется, а на шине выполняется специальный цикл передачи данных изнутри контроллера в ОЗУ ( или наоборот ). Я ведь изначально так и предлагал. Отображать на память блок сразу. Здесь всё просто - загрузчик записан в нулевом блоке системного диска, а в области регистров контроллера нужно иметь небольшой код из нескольких команд, который читает 0-й блок загружаемого привода по адресу 0 и передаёт управление на адрес 0. Сам же этот начальный загрузчик надо запускать вручную из пульта по команде xxxxxx G, где хххххх - адрес кода начального загрузчика в области регистров контроллера. Вопрос в другом, изначально нужно как то загрузиться с диска. Если контроллер использует ДМА - можно сделать как в MY - иметь специальную команду "прочитать загрузчик", по которой контроллер сам помещает данные из нулевого блока диска по адресу 0. Тогда надо сначала записать в регистр данных номер загружаемого привода, потом записать в регистр команд код команды "прочитать загрузчик", а потом просто нажать "G" и управление будет передано на адрес 0, где уже находится прочитанный с привода загрузчик. |
andyTh |
NEW! Сообщение отправлено: 8 июля 2014 22:51
_Patron_ написал: А если ячейки памяти будут находиться внутри контроллера, то это уже не ДМА? ДМА это обмен данными в памяти без участия процессора. При этом блокировка процессора не обязательна. Он может работать с другими страницами или участками памяти. Ну если контроллер самой памяти это позволяет. Я предлагаю область памяти под буфер диска разместить внутри контроллера. Какая разница где будет расположена память, с которой работать драйверу. ДМА - это копирование данных изнутри контроллера в находящиеся на шине снаружи контроллера ячейки ОЗУ без участия процессора. При этом процессор блокируется, а на шине выполняется специальный цикл передачи данных изнутри контроллера в ОЗУ ( или наоборот ). Но можно остановится и на варианте не с буфером, а регистром. Т.е. программа минимум: Контроллер должен принимать следующие команды от драйвера: 1. Установить номер привода для последующей операции. 2. Установить номер блока для последующей операции. 3. Установить счётчик слов для последующей операции. 4. Выполнить операцию "ЧТЕНИЕ". 5. Выполнить операцию "ЗАПИСЬ". 6. Выполнить операцию "СООБЩИТЬ РАЗМЕР НОСИТЕЛЯ" ( в блоках ). |
Сейчас на форуме |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
AndyTh написал: Если контроллер эмулирует всю доступную процессору память - проблем нет. Но если на шине есть внешняя ( по отношению к контроллеру ) память - передавать туда данные контроллер должен по ДМА. А если ячейки памяти будут находиться внутри контроллера, то это уже не ДМА? |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 июля 2014 23:18 Сообщение отредактировано: 8 июля 2014 23:22
AndyTh написал: Просто, если контроллер работает по ДМА и блокирует процессор - уже при выполнении процессором следующей команды драйвера после активации контроллера - прочитанные данные уже находятся в ОЗУ по тому адресу, который операционка сообщила драйверу, а драйвер сообщил контроллеру. Если же контроллер только "выставляет" данные в своём буфере, но сам не переправляет их в буфер пользователя в ОЗУ по тому адресу, который операционка сообщила драйверу - копировать туда данные из буфера контроллера должен сам драйвер ( после подачи в контроллер команды чтения ). Какая разница где будет расположена память, с которой работать драйверу. В текущем варианте драйвер HD сам ничего не копирует - только сообщает в контроллер адрес буфера пользователя в ОЗУ. |
andyTh |
NEW! Сообщение отправлено: 9 июля 2014 11:08
Воооот! Достаточно драйверу разместить буфер в самом контроллере, и процессору ничего делать не нужно. Данные "волшебным" образом будут меняться сами. Это очень хорошо иллюстрируется двумя видеоконтроллерами. Это 580ВГ75 и ЕМНИП 1809ВГ6. Первая перебиралки адресов не имеет и без аппаратного ДМА контроллера не работает. Не, сделать то можно, но... Второй чип счётчик адресов имеет и прекрасно работает на системах без ДМА контроллера. Более того, видел в сети проект, где процессор и видеоконтроллер питались от одного тактового генератора, но инвертированными относительно друг друга клоками. Остальные сигналы управления тоже были подогнаны по времени. В результате проц и видеоконтроллер обращались к памяти по очереди не замечая друг друга. Но это пока на том этапе, на котором я остановился, не так важно. Мне бы "стандартную" раскладку адресов командных и управляющих регистров для начала найти. В общем буду потихоньку курить паспорт от RQDX, до просветления мож толк и выйдет. |
Сейчас на форуме |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 10 11 12 13 14 * 15 16 17 | Печать |
Полигон-2 » Другие архитектуры » Использование НМД2 в ДВК |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |